\' und \' entfernen

Hi,
habe mir ein kleines CMS eingerichtet.
aber wenn ich dann die geöffnete Datei wieder speichere, setzt php vor alle Anführungszeichen einen Backslash. Weiß jemand wie ich die wieder wegkriege? Oder gibt es dafür eine eigene Funktion (so was im gegenteil von trim() )?
Ich hoffe jemand weiß da bescheid,
Johann-Friedrich Salzmann

Der Quellcode:

 CMS
 Herzlich Willkommen im CMS

 Hier können sie Dateien öffnen, bearbeiten und erstellen. 
<?php # keine Datei geöffnet:
if(!isset($\_POST["todo"])) { echo " Datei öffnen: "; echo " Neue Datei erstellen: "; } ################################################################################# # Datei geöffnet: else if($\_POST["todo"] == "open") { $file = $\_POST["fopen"]; if(file\_exists($file)) { $dz = fopen($file, "r"); $fopen = fread($dz, filesize($file)); $open = TRUE; echo " Datei ".$file." bearbeiten: ".$fopen." ";} else { echo " Die Datei existiert nicht! "; echo " Datei öffnen: "; echo " Neue Datei erstellen: "; } } ################################################################################# #Neue Datei erstellen: else if($\_POST["todo"] == "new") { $file = $\_POST["fnew"]; $dz = fopen($file, "w"); fwrite($dz, ""); $size = filesize($file); $dz = fopen($file, "r"); $fopen = fread($dz, 1); $new = TRUE; echo " Datei ".$file." bearbeiten: ".$fopen." "; } if($\_POST["todo"] == "change") { $fsave = $\_POST["fsave"]; // Backslashe entfernen: $file = $\_POST["file"]; $dz = fopen($file, "w"); fwrite($dz, $fsave); $save = TRUE; echo " Die Datei wurde erfolgreich gespeichert. Datei öffnen: "; echo " Neue Datei erstellen: ";} ?\>

aus dem bauch heraus würde ich sagen dein magic quotes runtime ist aktiv.

setze am anfang vom speichern script mal ein

set_magic_quotes_runtime(0);

dann müssten die \ eigentlich verschwinden.

Gruß
Phillip

Hi,

setze am anfang vom speichern script mal ein
set_magic_quotes_runtime(0);

das hab ich gemacht. Aber jetzt speichert der das gar nicht mehr. Woran kann das liegen? Muss ich, wenn magic quotes aus ist, irgendetwas anders machen?

jag die eingaben vor dem speichern durch ein

http://de.php.net/manual/de/function.htmlentities.php
und ein
http://de3.php.net/manual/de/function.mysql-real-esc…

bei der ausgabe musst du den string dann mit
http://de.php.net/manual/de/function.html-entity-dec…
wieder in html code umwandeln…

Gruß
Phillip

jag die eingaben vor dem speichern durch ein

http://de.php.net/manual/de/function.htmlentities.php
und ein
http://de3.php.net/manual/de/function.mysql-real-esc…

bei der ausgabe musst du den string dann mit
http://de.php.net/manual/de/function.html-entity-dec…
wieder in html code umwandeln…

Bei HTML klappt das…
Aber z.B. bei einer PHP-Datei alle " in " umgewandelt.
Und dann ist doch die Datei nicht mehr ausführbar.

vergiss was ich da geschrieben hab das war aufn sql bassierendes cms gemünzt…

sollte mir angewöhnen auch den quelltext zu lesen :wink:

sry

was kommt für eine meldung?
bei mir geht das öffnen und speichern mit deinem quellcode ohne probleme…

Gruß
Phillip

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo

Bei HTML klappt das…
Aber z.B. bei einer PHP-Datei alle " in " umgewandelt.
Und dann ist doch die Datei nicht mehr ausführbar.

lass die HTML-Befehle weg und nimm nur

http://de3.php.net/manual/de/function.mysql-real-esc…

Gruß Johannes

Bei mir kommt gar keine Meldung…
Er speichert das einfach nicht.
Ohne den magic quotes befehl ging das, wenn auch mit .

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,
bei diesem befehl macht er doch aber gerade die …
sorry, aber langsam blicke ich nicht mehr durch, was das bewirkt…:frowning:

also…

bevor er die datei speichert, sollen die \ eingefügt werden.
aber was soll das bewirken? zile ist ja das genaue gegenteil…

kannst du mir das vielleicht noch einmal genauer erklären?
bin nich gerade der php-profi…
gruß
johann-friedrich

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,
bei diesem befehl macht er doch aber gerade die …
sorry, aber langsam blicke ich nicht mehr durch, was das
bewirkt…:frowning:

Tschuldigung
Ich habe wie mein Vorredner an SQL gedacht. Für Textdateien ergibt das irgendwie keinen Grund das nicht zu speichern.

Johannes

So

das hab ich gemacht. Aber jetzt speichert der das gar nicht
mehr. Woran kann das liegen? Muss ich, wenn magic quotes aus
ist, irgendetwas anders machen?

Beim Speichern in Dateien braucht man eigentlich keine , es sollte so gehen. Was es bei mir auch tut.

Zur Fehlersuche:
Steht beim Bearbeiten und anschließenden Speichern ‚erfolgreich gespeichert‘ da, aber der Dateiinhalt ist der alte?

Was passiert, wenn du neue Dateien anlegen willst? Wird die Datei angelegt, ist sie dann leer oder wird da korrekt gespeichert?

Was siehst du, wenn du nach

$file = $\_POST["file"];
$dz = fopen($file, "w");
fwrite($dz, $fsave);

ein echo $fsave; eingibst?

Welches Betriebssystem / welche PHP-Version nutzt du?
Hast du auch sämtliche Fehlermeldungen angschaltet?

Besteht das Problem auch bei Texten, die sowieso keine \ hervorrufen?

Johannes

So

das hab ich gemacht. Aber jetzt speichert der das gar nicht
mehr. Woran kann das liegen? Muss ich, wenn magic quotes aus
ist, irgendetwas anders machen?

Beim Speichern in Dateien braucht man eigentlich keine , es
sollte so gehen. Was es bei mir auch tut.

Zur Fehlersuche:
Steht beim Bearbeiten und anschließenden Speichern
‚erfolgreich gespeichert‘ da, aber der Dateiinhalt ist der
alte?

Was passiert, wenn du neue Dateien anlegen willst? Wird die
Datei angelegt, ist sie dann leer oder wird da korrekt
gespeichert?

Was siehst du, wenn du nach

$file = $_POST[„file“];
$dz = fopen($file, „w“);
fwrite($dz, $fsave);

ein echo $fsave; eingibst?

Welches Betriebssystem / welche PHP-Version nutzt du?
Hast du auch sämtliche Fehlermeldungen angschaltet?

Besteht das Problem auch bei Texten, die sowieso keine \
hervorrufen?

Johannes

also,
wenn ich $fsave ausgeben lasse, ist das der geänderte text.
aber komischerweise macht er jetzt schon wieder die magic quotes :frowning:.
muss man da noch etwas ausschalten, damit die \ wegbleiben?
jedenfalls gibt es anscheinend ein problem mit dem speichern, denn wenn man einen text ohne " verändert, übergibt er den text $fsave korrekt und speichert ihn aber nicht.

die php-version: PHP Version 4.4.1-0.dotdeb.2
hab ich ach gerad erst gesehen, dass das version 4 ist :-[
muss man da andere befehle verwenden?
das problem ist nur, dass ich nicht in die konfiguration komme, da das im internet bei unserem provider auf dem server liegt…
habt ihr noch eine idee? ich bin langsam ratlos.
gruß
johann-friedrich

sehe grad noch, dass magic_quotes_gpc auf on gesetzt ist. hat das was z sagen?

sehe grad noch, dass magic_quotes_gpc auf on gesetzt ist. hat
das was z sagen?

Wenn ich das PHP-Handbuch richtig verstehe, dann ist magiv_quotes_gpc für Daten, die der Browser sendet und magic_quotes_runtime für Daten, die aus Dateien ausgelesen werden oder aus Datenbanken stammen. Du solltest also beides ausschalten.

ini_set(‚magic_quotes_gpc‘,0);
ini_set(‚magic_quotes_runtime‘,0); oder set_magic_quotes_runtime(0);

Aus dem PHP-Handbuch:
fwrite() gibt bei Erfolg die Anzahl der geschriebenen Bytes zurück, andernfalls FALSE.

Kannst ja mal den Rückgabewert prüfen.

Hallo,
tschuldigung das ich euch so lange damit gestört habe.
ich weiss jetzt mittlerweile woran es liegt: er darf nur die dateien bearbeiten, die er auch selbst verfasst hat. also im grunde ein problem mit dateibesitzern. doch trotzdemvielen dank fuer eure hilfe!
viele gruesse
johann-friedrich salzmann