"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi les données POST s'échappent-elles automatiquement en PHP même lorsque les guillemets magiques sont désactivés ?

Pourquoi les données POST s'échappent-elles automatiquement en PHP même lorsque les guillemets magiques sont désactivés ?

Publié le 2024-11-20
Parcourir:947

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

Dévoilement des mystérieuses données de publication à échappement automatique en PHP avec des citations magiques désactivées

Lorsque vous travaillez avec des données POST en PHP, en particulier dans un Dans l'environnement WordPress, il est possible de rencontrer des comportements d'échappement automatique inattendus malgré la désactivation des guillemets magiques. Ce problème déroutant survient lorsque les données POST subissent un échappement automatique, même si les citations magiques seraient désactivées (get_magic_quotes_gpc() renvoie 0).

Influence de WordPress

En approfondissant Dans le problème, il devient évident que WordPress joue un rôle crucial dans le déclenchement de ce mécanisme d'échappement automatique. Lorsque WordPress est démarré dans le cadre du processus d'initialisation de votre application, son code interfère avec le comportement naturel des guillemets magiques de PHP.

WordPress inclut une fonctionnalité qui intercepte les données de requête, y compris les données POST, et effectue certaines opérations, dont l'une échappe aux guillemets simples ('). Ce comportement s'étend même lorsque les guillemets magiques sont désactivés dans php.ini.

La source du bug

Un examen plus approfondi de la base de code WordPress révèle un bug signalé sous le système WordPress Core Trac (ticket 18322). Ce problème est lié à une gestion incorrecte des données de requête, qui déclenche un échappement indésirable.

La solution

Heureusement, une solution est disponible pour résoudre ce dilemme d'échappement automatique. . Le Codex WordPress recommande d'utiliser la fonction stripslashes_deep() pour « annuler l'échappement » des données POST avant d'effectuer des opérations dessus. En utilisant cette fonction, vous pouvez efficacement remplacer l'échappement automatique de WordPress et récupérer les données dans leur format d'origine.

Pour implémenter cette solution, ajoutez le code suivant à votre script 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);

Ce code supprime les barres obliques de toutes les superglobales, garantissant que les données POST ne sont pas automatiquement échappées lors d'un accès en PHP.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3