Moin!
Allerdings gibts dazu überhaupt keine Beschreibung, weil der Autor sagt es gibt vielleicht später noch ein extra Thema dazu. Gibts aber nicht.
Jetzt suche ich entweder ein ähnlich gutes Beispiel mit guten Erklärungen, oder jemanden, der mir dieses Beispiel gut erklären könnte.
Ich kann dir allgemein zu Magic-Quotes was sagen.
In PHP kann man einstellen, ob die Daten, die man aus GET-Parametern, POST-Formularen oder Cookies erhält, automatisch ("magisch") escaped werden sollen, oder nicht.
Der Hintergrund ist, dass viele DAUs sonst Skripte programmieren würden, mit denen sie dicke Hintertüren zum DB-Verschrotten oder sonstigen Krams hinkriegen würden. Deshalb wurde diese Option wohl mal eingeführt und standardmäßig eingeschaltet.
magic-quotes führt für alle übergebenen Daten die Funktion addslashes() aus, noch bevor das Skript überhaupt startet. Deshalb kann man diese Option auch nachträglich im Skript nicht mehr wirkungsvoll abschalten. Der "Schaden" bzw. die Veränderung der Daten ist bereits geschehen.
Warum sollte man magic-quotes nicht mögen? Weil man vielleicht gar nicht in Datenbanken schreiben will, sondern in Textdateien. Und da stören diese automatischen Quotes erheblich. Außerdem gibts zum escapen von Strings für den Datenbankgebrauch eigene Escape-Funktionen, die direkt aus der API der Datenbank kommen und wesentlich sicherer Zeichen escapen können. Kann ja sein, dass sich der benutzbare Zeichenvorrat der DB mal verändert. Diese Änderungen werden dann auch in der API vorgenommen und kommen so automatisch auch im Skript zu Wirkung. MySQL beispielsweise bietet (auch in PHP) die Funktion mysql_escape_string() an, die sowas macht.
Mit anderen Worten: Warum nun im Artikel ausgerechnet magic_quotes_gpc eingeschaltet sein soll und ansonsten künstlich erzeugt wird, mag ich nicht nachvollziehen. Ich habe es lieber so, dass magic_quotes_gpc ausgeschaltet sind, und übernehme eventuell notwendiges escapen manuell.
- 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>)