Heim  >  Artikel  >  Backend-Entwicklung  >  Warum werden POST-Daten in PHP automatisch maskiert, auch wenn Magic Quotes deaktiviert sind?

Warum werden POST-Daten in PHP automatisch maskiert, auch wenn Magic Quotes deaktiviert sind?

DDD
DDDOriginal
2024-10-28 07:59:02846Durchsuche

Why is POST Data Auto-Escaping in PHP Even When Magic Quotes are Disabled?

Enthüllung der mysteriösen Auto-Escaping-Post-Daten in PHP mit deaktivierten Magic Quotes

Bei der Arbeit mit POST-Daten in PHP, insbesondere innerhalb In einer WordPress-Umgebung kann es trotz der Deaktivierung von magischen Anführungszeichen zu unerwarteten automatischen Escape-Verhalten kommen. Dieses verwirrende Problem entsteht, wenn POST-Daten automatisch maskiert werden, obwohl magische Anführungszeichen Berichten zufolge deaktiviert sind (get_magic_quotes_gpc() gibt 0 zurück).

Einfluss von WordPress

Bei der Suche Bei näherer Betrachtung des Problems wird deutlich, dass WordPress eine entscheidende Rolle bei der Auslösung dieses automatischen Escape-Mechanismus spielt. Wenn WordPress im Rahmen des Initialisierungsprozesses Ihrer Anwendung gebootet wird, beeinträchtigt sein Code das natürliche Verhalten der magischen Anführungszeichen von PHP.

WordPress enthält Funktionen, die Anforderungsdaten, einschließlich POST-Daten, abfangen und bestimmte Vorgänge ausführen, darunter eine entkommt einfache Anführungszeichen ('). Dieses Verhalten gilt auch dann, wenn magische Anführungszeichen in php.ini deaktiviert sind.

Die Quelle des Fehlers

Eine genauere Untersuchung der WordPress-Codebasis zeigt einen gemeldeten Fehler unter dem WordPress Core Trac-System (Ticket 18322). Dieses Problem hängt mit der falschen Verarbeitung von Anforderungsdaten zusammen, die unerwünschtes Escapen auslöst.

Die Lösung

Glücklicherweise gibt es eine Lösung, um dieses automatische Escapen zu beheben Dilemma. Der WordPress-Codex empfiehlt die Verwendung der Funktion „stripslashes_deep()“, um das Escapezeichen für POST-Daten aufzuheben, bevor irgendwelche Vorgänge daran ausgeführt werden. Durch den Einsatz dieser Funktion können Sie die automatische Escape-Funktion von WordPress effektiv außer Kraft setzen und die Daten im Originalformat abrufen.

Um diese Lösung zu implementieren, fügen Sie den folgenden Code zu Ihrem PHP-Skript hinzu:

<code class="php">$_GET       = array_map('stripslashes_deep', $_GET);
$_POST      = array_map('stripslashes_deep', $_POST);
$_COOKIE    = array_map('stripslashes_deep', $_COOKIE);
$_SERVER    = array_map('stripslashes_deep', $_SERVER);
$_REQUEST   = array_map('stripslashes_deep', $_REQUEST);</code>

Dieser Code entfernt Schrägstriche aus allen Superglobalen und stellt so sicher, dass POST-Daten beim Zugriff in PHP nicht automatisch maskiert werden.

Das obige ist der detaillierte Inhalt vonWarum werden POST-Daten in PHP automatisch maskiert, auch wenn Magic Quotes deaktiviert sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn