Hallo,
also in der php.ini gibt es die Funktion magic_quotes_gpc, diese maskiert automatisch GET/POST/Cookie Daten.
Jetzt haben ich einen recht aufwendigen Script den jeder frei benutzen darf, allerdings werden da bei $_POST etc. der Text nicht per addslashes Maskiert.
Danach soll der Text in eine MySQL Tabelle gespeichert werden.
Sofern jetzt magic_quotes_gpc auf Off steht, und der User ein Anführungszeichen senden, wird es nicht gespeichert.
Mit magic_quotes_gpc = On
$aendern = "UPDATE tabelle Set spalte = 'Hallo 'Welt'' WHERE id = '1'";
$update = mysql_query($aendern);
Ohne magic_quotes_gpc
$aendern = "UPDATE tabelle Set spalte = 'Hallo 'Welt'' WHERE id = '1'";
$update = mysql_query($aendern);
Das ist klar das man so einen MySQL Fehler erhählt, er verändert den Wert dann nicht.
Gut dachte ich mir, jetzt packst du vor jeder Abfrage einmal addslashes() allerdings macht da der Script zicken, wenn magic_quest_gpc = On ist, denn dann wird der Text doppelt maskiert:
Mit magic_quotes_gpc = On und addslashes
$aendern = "UPDATE tabelle Set spalte = 'Hallo \'Welt\'' WHERE id = '1'";
$update = mysql_query($aendern);
Das führt dann zu einer sehr Unschönen Ausgabe nachher, nämlich: Hallo 'Welt'
obwohl der user nur Hallo 'Welt' geschrieben hat.
Also geht das ohne weiteres auch nicht.
Naja wie gesagt es ist ein recht komplexer Script mit recht vielen Abfragen, dieser basierd auf Grund von Wissenheit darauf, das magic_quotes_gpc = On ist, was bei den meisten der Fall ist.
Allerdings möchte ich das möglichst kompatibel halten und suche eine Lösung womit ich das Problem recht schnell beheben kann.
Mit:
get_magic_quotes_gpc()
kann man überprüfen ob der Wert On oder Off ist, leider fehlt die passende Funktion:
set_magic_quotes_gpc()
Hat jemand evt. ne andere Idee wie ich in dem Fall das es auf Off steht "umschalten" kann.
Wenn es auf Off steht müsste vor jeder $_POST Abfrage einfach addslashes() stehen, bzw. müsste die Funktion für die dauer des Scriptsablaufes auf On stehen.
Gibts da irgendwie ne Möglichkeit sie innerhalb des Scriptes auf On zu stellen, obwohl in der php.ini sie auf Off gesetzt wurde?
MFG
Andavos