• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

magic quotes, escapen und co.

sin777

Neues Mitglied
Hallo, ich lese mich gerade in das Thema magic quotes und co. ein und mir ist der Sinn hinter diesem ganzen Thema leider noch nicht so ganz klar.
Wenn ich in meinem HTML-Dokument ein Anführungszeichen darstellen will, dann schreibe ich statt " ein \" damit der php-interpreter weiß was los ist.
Ich habe also das " escaped. So weit so gut erstmal zum wort escapen.
Dann das Wort "magic quotes". Erstmal: Wann wird/wurde magic quotes automatisch angewendet? Magic quotes bedeutet
doch, dass auf den String die Methode addslashes() angewendet wird. Ist das dasselbe wie escape() in Javascript? Ich dachte
aber da wäre escapen einfach, dass auf den ganzen Sonderzeichen % + eine Zahl gemacht wird. Was ist denn jetzt hier der
Unterschied bzw. wieso redet man hier plötzlich nur noch bon backslashes?
Wo muss ich auf das escapen achten und wie genau unterscheiden sich folgende Methoden:
mysqli_real_escape_string(), addbackslashes(), magic_quotes_gpc()

Sorry für diese Fragen aber ich bin irgendwie total verwirrt, was das Thema escapen angeht
 
Moin,
Also erst mal die Unterschiede der genannten Methoden:

addslashes (addbackslashes gibt es meines Erachtens nicht):
Schreibt vor folgenden Zeichen ein \ : ' " \
Das hat den Grund, dass diese Zeichen eine MysqlQuery kaputt machen können. Dies wird von manchen Leuten sogar extra probiert. Eine sogenannte SQL Injection

Magic Quotes:
Soweit ich weiss, macht es das gleiche wie addslashes, mit dem Unterschied, dass es beim versenden der Formular-Daten automatisch geschieht. Deine Formular-Daten, die dann per POST oder GET ankommen wurden schon escaped. Das passiert alles automatisch, ohne einen Funktionsaufruf. Das Ganze ist nämlich eine Einstellung in der PHP Konfiguration.
Es wird jedoch von der Funktion abgeraten. (Standardmäßig sollte sie auch ausgeschaltet sein)


mysql_real_escape_string:
Ist wie die oben genannten Funktionen, escaped jedoch noch ein paar mehr Character:
\x00, \n, \r, \, ', " and \x1a

Hoffe ich konnte dir damit helfen :)
 
Vielen Dank, das hat mir sehr geholfen :)

Noch eine andere Frage, zu einem anderen Thema. Warum verwende ich, wenn ich eine Session komplett löschen will session_destroy(); und warum unset($_SESSION["key"]); für einzelne werte. Warum nicht gleich unset für beides?
 
Zurück
Oben