Inte djupare än dina filer döljer sig på hårddisken.
MEN det finns en funktion som tolkar en sträng som PHP-kod. Kommer dock inte på namnet.
17 svar · 392 visningar · startad av Gislaved.net
Jag håller på att bygga om min sida med hjälp av PHP och MySQL, och jag lagrar info om varje sida i en databas. Men på vissa sidor vill jag kunna köra PHP-kod som jag har skrivit in i databasen. Ska jag skapa separata filer med PHP-kommandon i, eller finns det något sätt att köra PHP som ligger i databasen?
En annan fråga... hur "djupt" kan man använda include?
Inte djupare än dina filer döljer sig på hårddisken.
MEN det finns en funktion som tolkar en sträng som PHP-kod. Kommer dock inte på namnet.
När jag försöker spara PHP-koden till en vanlig fil så får jag hela tiden "Parse error" när jag försöker läsa den, trots att jag använder mig av enkla funktioner som echo och include.
Hur är det med minnet, Swey? Ska jag leta mer i manualen?
Hmm... felet verkar uppstå när jag skriver till filen. Av någon anledning försöker Servern först tolka min kod och sedan skriva i resultatet i filen. Jag vill bara att det ska skrivas i som ren text utan att först köras.
Hur kommer man runt det?
Med denna funktion behöver du inte slöa ned hårddisken.
Anledningen att den säger "Parse error" är troligen att du har glömt <? eller ?> på något ställe.
Felet kan inte bero på att jag har glömt något i själva filen, den fungerar ju om jag skriver exakt samma sak och laddar upp den på ett annat ställe.
Jag antar att PHP läser av vad jag har skrivit in och försöker köra det först, resultatet skrivs in i filen. PHP-kommandona + texten sparas i en variabel först.
... tills jag kommer på vad felet är så kör jag med ett Perl-script istället. Men det verkar ju jobbigt att inte kunna skapa en ny PHP-fil med hjälp av PHP...
Kan du visa din kod?
Visst... först har jag ett vanligt formulär som postar informationen till samma script.
Så här ser koden ut som skriver in själva PHP-koden.
---
$target = "/home/g/gislaved/www/php/$id.php";
$fp = fopen("$target", "w");
fwrite($fp, $text);
fclose( $fp );
---
$text har jag fått från en TEXTAREA.
Nä, det var inte särskilt smidigt... radbrytningarna gick åt skogen...
Jag kör med include i alla fall.
från en databas? låter fruktansvärt krångligt...
Nix, när jag använder PHP-kod så skapar programmet en särskild fil som inkluderas.
Fast nu kom jag på hur jag ska göra...
Jag avslutar helt enkelt PHP-koden med ?> När jag ska ha vanlig text, och startar med <? när jag vill ha kod igen. Kruxet är att man inte ska ha någon starttagg i början och ingen sluttagg i slutet...
Men nu verkar inte följande kod fungera:
$text = eval( $text );
$text = ereg_replace("\n","<br>",$text);
print("$text");
Texten skrivs ut, men utan radbrytningar... lite jobbigt.
Skulle det inte gå med:
$text = ereg_replace("\n","<br>\n",$text);
Stevenet: nix, det fungerar inte.
Jag skulle behöva en funktion som lade till <BR>-taggar efter varje radbrytning, utom mellan <? och ?>
och inte heller innan den första ?> och efter den sista <?
Krångligt? Kanske...
I och för sig så får jag resultatet utskrivet på flera rader i HTML-koden så både mitt och stevenets exempel borde fungera... men det gör de inte.
Lägger servern till någon annan radbrytning än \n ?