Moin!
Also sollte ich einfach überprüfen ob magic quotes aktiviert sind, falls ja diese deaktivieren und dann das escapen selbst vornehmen?
Im Prinzip: Ja.
Das Problem ist: Die Einstellung muß entweder in der zentralen php.ini-Datei vorgenommen werden, oder in einer lokalen .htaccess-Datei (das wiederum muß aber erlaubt sein, dass man es machen darf).
Mit anderen Worten: Die Kurzfassung für deine Skripte dürfte lauten
if (magic_quotes_gpc())
{
die ("Bitte magic_quotes_gpc abschalten");
}
Dann rennt dein Skript zumindest nicht blind in sein Verderben. :)
Die Alternative dazu ist eben, alle GET, POST und COOKIE-Angaben mit stripslashes() zu bearbeiten - und das rekursiv, weil ja auch Arrays in den Arrays stehen können.
Ich meine, bei php.net steht bei der Funktion stripslashes() oder addslashes() in den Benutzerkommentaren sowas schon vorgefertigt drin. Ansonsten hast du ja aber auch die angegebene Funktion in SelfAktuell, die im Prinzip nichts anderes macht.
Diese Lösung wäre auch mir selbst am liebsten, da ich dann weiß was passiert und nicht durcheinander komme. Das bereitet mir nämlich noch die größten Schwierigkeiten, dass die magic quotes auf manchen Systemen aktiviert und auf manchen deaktiviert sind. Würde ich das Skript nur für meinen eigenen Server schreiben wäre das kein so großes Problem.
Bei PHP gibt es zwei große Probleme: magic_quotes_gpc ist eines davon, das andere heißt register_globals.
magic_quotes_gpc erfordert entweder einen definierten Wert (sinnvollerweise off), oder Extracode zum Rückgängigmachen.
register_globals ist noch eine Stufe schrecklicher: Damit werden dir mit Pech fremde Variablen ins Skript generiert (wenn es eingeschaltet ist). Wenn du deine Variablen also nicht alle initialisierst, hast du ein Problem.
Deshalb: Zur Entwicklungszeit immer auch die Notices anzeigen lassen: error_reporting(E_ALL) am Skriptanfang, oder bei deiner lokalen php.ini setzen.
Diese Einstellung kannst du dann beim auszuliefernden Skript zurückdrehen (wenn dich die Notices stören), oder eben das Auftreten von Notices programmtechnisch verhindern (keine schlechte Idee).
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)