Maison  >  Article  >  développement back-end  >  Pourquoi magic_quotes_gpc fermé dynamiquement n'est-il pas valide ?

Pourquoi magic_quotes_gpc fermé dynamiquement n'est-il pas valide ?

小云云
小云云original
2018-02-24 14:41:191365parcourir

Cet article partage principalement avec vous le problème de fermeture dynamique invalide de magic_quotes_gpc en PHP. J'espère qu'il pourra vous aider à résoudre ce genre de problème.

En parcourant des projets en ligne hier, j'ai trouvé un problème : il y a une barre oblique inverse supplémentaire avant les guillemets dans certaines sorties de texte, par exemple :

Il y a trop de "barre oblique inverse" dans les guillemets

À en juger par les résultats affichés sur la page, on devine que la configuration magic_quotes_gpc en PHP est activée. Ensuite, j'ai vérifié le programme et j'ai constaté que dans le fichier d'entrée, cette configuration a été fermée dynamiquement :

ini_set('magic_quotes_gpc', 'Off');

Pourquoi cela n'a-t-il pas pris effet ?

Après quelques recherches, mes collègues m'ont aidé à trouver la raison. Il s'est avéré que la requête avait été analysée avant que je modifie dynamiquement la configuration, la modification n'a donc pas pris effet pour la requête actuelle.

Voir la page Web suivante pour plus de détails. Un collègue a également rencontré le même problème :

https://bugs.php.net/bug.php?id=32867

magic_quotes_gpc est appliqué lors de l'analyse de la requête avant que votre script PHP ne prenne le contrôle. Ainsi, même si vous pouvez modifier ce paramètre dans votre script, cela n'aura aucun effet.

Étant donné qu'il existe plusieurs projets sur le serveur, dans l'ordre pour ne pas affecter les autres projets, nous ne pouvons pas modifier directement la configuration de php.ini, nous avons donc utilisé le code écrit par Molu vs Zhuihui pour traiter récursivement le contenu gpc :

if (ini_get('magic_quotes_gpc')) {
function stripslashesRecursive(array $array)
{
foreach ($array as $k => $v) {
if (is_string($v)) {
$array[$k] = stripslashes($v);
} else if (is_array($v)) {
$array[$k] = stripslashesRecursive($v);
}
}
return $array;
}
$_GET = stripslashesRecursive($_GET);
$_POST = stripslashesRecursive($_POST);
}

Recommandations associées :

php Instructions d'utilisation de la fonction get_magic_quotes_gpc()

Concernant les problèmes d'échappement automatique PHP, les problèmes historiques de magic_quotes_gpc dans la configuration,

Introduction à l'utilisation de la fonction php get_magic_quotes_gpc

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn