evel Problem aus einer Flatfile
Bernd
- php
Hallo,
ich habe ein Problem womit ich nicht weiterkomme...?
Ich habe in einer Flatfile PHP Code stehen wenn ich denn nun anzeigen will das heißt ich lese die Flatfile aus und führe es mit evel aus kommt eine Fehlermeldung mit der ich nichts anfangen kann.
Das ist mein PHP Code:
---- schnipp ----
$name = $_SESSION['username'];
$pfad = "../../../document/";
$datei = $name."_content_neu.csv";
$ort = $pfad.$datei;
$flatfile=file($ort);
foreach ($flatfile as $zeile)
{
list ($id,$titel,$beschreibung,$content)=explode(":::",$zeile);
//print "$id <br>";
}
eval ('?>'.$content); // Dies ist Zeile 61
----- schnapp ----
Fehler:
*******
Warning: Unexpected character in input: '' (ASCII=92) state=1 in /var/www/wgs/editor/admin/vorschau/vorschau_fm.php(61) : eval()'d code on line 3
Parse error: parse error in /var/www/wgs/editor/admin/vorschau/vorschau_fm.php(61) : eval()'d code on line 17
Irgendwas ist an evel Falsch das sehe ich aber nur wenn ich genau das selbe mache und den Code aus der Datenbank lese wird mir auch was angezeigt.
Wenn ich nun echo $content; ausführe wird mir auch der Content gezeigt!
Warum es nicht geht verstehe ich nicht da der Datenbank Inhalt gleich mit dem Flatfile Inhalt ist.
Hat jemand eine Idee?
Gruß Bernd
hi,
Ich habe in einer Flatfile PHP Code stehen wenn ich denn nun anzeigen will das heißt ich lese die Flatfile aus und führe es mit evel aus kommt eine Fehlermeldung mit der ich nichts anfangen kann.
was denn jetzt, php-cdoe _anzeigen_ oder mit eval() "ausführen" ...?
Warning: Unexpected character in input: '' (ASCII=92) state=1 in /var/www/wgs/editor/admin/vorschau/vorschau_fm.php(61) : eval()'d code on line 3
Parse error: parse error in /var/www/wgs/editor/admin/vorschau/vorschau_fm.php(61) : eval()'d code on line 17
Warum es nicht geht verstehe ich nicht da der Datenbank Inhalt gleich mit dem Flatfile Inhalt ist.
ich vermute mal, dass du ein problem mit magic_quotes hast - dabei werden einige sonderzeichen wie ", ' oder \ automatisch durch einen weiteren backslash escaped.
wenn es nur bei der textdatei passiert, dann ist zu vermuten, dass bei dir die konfigurationsoption magic_quotes_runtime aktiviert ist, http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime. überprüfe das mal.
gruss,
wahsaga
Hello,
ich vermute mal, dass du ein problem mit magic_quotes hast - dabei werden einige sonderzeichen wie ", ' oder \ automatisch durch einen weiteren backslash escaped.
wenn es nur bei der textdatei passiert, dann ist zu vermuten, dass bei dir die konfigurationsoption magic_quotes_runtime aktiviert ist, http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime. überprüfe das mal.
Na, oder dass der Backslash schon drinsteht in der Textdatei. Da hilft eigentlich nur ein Editor, der Hex und Ascii parallel anzeigt.
Grüße
Tom
hi,
Na, oder dass der Backslash schon drinsteht in der Textdatei.
davon, dass er das bereits ausgeschlossen hat, war ich eigentlich ausgegangen :-)
(aber es wäre natürlich auch gut möglich, wenn er seine textdatei mit werten aus einem formular erstellt, dann wäre magic_quotes_gpc wohl schuld.)
gruss,
wahsaga
Ok danke erstmal ich bin da selber überfragt...
Aber das war schon mal ein guter Hinweis!
Das heisst an der Server Einstellung sollte man besser nichts ändern da evtl nachher was anderes nicht mehr läuft?
Macht es Sinn die selben Daten anstatt in einer CSV Datei in ein XML Dokument zu schreiben? Oder ist das alles quwatsch?
hi,
Ok danke erstmal ich bin da selber überfragt...
Aber das war schon mal ein guter Hinweis!
dann mache eine php-seite, die als einzigen befehl phpinfo() enthält, und rufe diese auf.
in der ausgabe suchst du dann nach magic_quotes_gpc und magic_quotes-runtime, und schaust dir an, was da steht.
Das heisst an der Server Einstellung sollte man besser nichts ändern da evtl nachher was anderes nicht mehr läuft?
vor allem ist es nicht unbedingt _notwendig_, etwas zu ändern.
wenn diese magic_quotes-dinger aktiviert sind, werden wie gesagt einige sonderzeichen durch einen vorgestellten backslash escaped.
das kannst du aber wieder rückgängig machen, in dem du auf den textstring stripslashes() anwendest (_bevor_ du eval darauf anwendest).
gruss,
wahsaga
Hallo,
Nur so zwei spontane Ideen:
$flatfile=file($ort);
foreach ($flatfile as $zeile)
{
list ($id,$titel,$beschreibung,$content)=explode(":::",$zeile);
}
eval ('?>'.$content); // Dies ist Zeile 61
Du liest ja den Inhalt des Flat-Files Zeile fuer Zeile ein.
Innerhalb der foreach-Schleife steht in Content dann offenbar
immer das, was in der betreffenden Zeile hinter dem dritten
Doppelpunkt steht.
Mir ist noch nicht klar, was im Moment des Auswertens mit eval()
denn eigentlich in der Variable $content steht.
Vielleicht liegt Dein Problem ja daran, dass Du auch dort
nur einzelne Zeilen aufs mal auswerten laesst, und dass
diese fuer sich allein keinen "Sinn" ergeben?
Ansonsten: Guck Dir die Textdatei mal mit einem Hex-Editor an.
Besonders die Zeilen, wo PHP reklamiert.
Vielleicht hat es irgendwelche Sonderzeichen drin.
Und zaehle die Doppelpunkte!
Gruesse,
Thomas