16.13. Wieso wird aus " plötzlich \" und wie geht das wieder weg?Antwort von Johannes FrömterDas sind Escapes, die vor bestimmten Sonderzeichen stehen, um diese zu "entschärfen". Verantwortlich für dieses Verhalten ist die Funktion magic_quotes von PHP, die üblicherweise in der php.ini eingestellt wird. Dabei gilt magic_quotes_gpc für Daten, die per GET, POST oder COOKIE übergeben werden und magic_quotes_runtime für Daten, die aus Datenbanken, Dateien oder anderen externen Quellen kommen. Escaped werden ' (single quote), " (double quote), \ (backslash) und NUL (das Null-Byte). Um die Escape-Zeichen wieder zu entfernen, benutzt man stripslashes() ; manuell hinzufügen kann man sie mittels addslashes() . Die Konfiguration von magic_quotes kann man an verschiedenen Stellen beeinflussen:
php.ini:
magic_quotes_runtime = on|off
magic_quotes_gpc = on|off
.htaccess, httpd.conf:
php_flag magic_quotes_runtime on|off
php_flag magic_quotes_gpc on|off
.php
ini_set("magic_quotes_runtime", 0|1);
// magic_quotes_gpc geht hier nicht
In Verbindung mit Sybase-Datenbanken (d.h. bei zusätzlich gesetzter Option magic_quotes_sybase ) gibt es eine Besonderheit: Hier werden single quotes nicht mit einem Backslash, sondern mit einem weiteren single quote escaped. |
||
| 16.13. Wieso wird aus " plötzlich \" und wie geht das wieder weg? http://www.php-faq.de/q/q-magic-quotes.html |
||
| Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team | ||