Maison >développement back-end >tutoriel php >Pourquoi mes variables AJAX POST sont-elles échappées sur le serveur de production mais pas sur le serveur local ?
Problème :
En PHP, les variables $_POST reçues de Les requêtes AJAX POST sont échappées sur un serveur de production alors qu'elles restent intactes sur un serveur local. Le serveur local exécute PHP 5.3.1 sous Windows, tandis que le serveur de production exécute PHP 5.2.12 sous Linux.
Raison :
L'écart entre les deux serveurs est probablement en raison de l'utilisation de guillemets magiques sur le serveur de production.
Citations magiques :
Les guillemets magiques sont une fonctionnalité obsolète de PHP qui échappe automatiquement certains caractères dans $_GET , $_POST et $_COOKIE pour vous protéger contre l'injection SQL et d'autres attaques. Les caractères d'échappement incluent :
Solution :
Pour résoudre le problème et garantir un comportement cohérent sur les deux serveurs, vous pouvez désactiver les guillemets magiques sur le serveur de production. Cela peut être fait soit. globalement dans php.ini ou par script en utilisant set_magic_quotes_runtime().
Si la désactivation des guillemets magiques n'est pas possible, vous pouvez supprimer manuellement les barres obliques à l'aide de la fonction stripslashes() sur toutes les données POST que vous récupérez :
<code class="php">if (get_magic_quotes_gpc()) { $my_post_var = stripslashes($_POST["my_post_var"]); }</code>
En désactivant ou en gérant les guillemets magiques de manière appropriée, vous pouvez vous assurer que les variables $_POST ne sont pas échappées sur le serveur de production, permettant ainsi aux requêtes AJAX POST de fonctionner correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!