Maison > développement back-end > tutoriel php > PHP中magic_quotes_gpc动态关闭无效的问题

PHP中magic_quotes_gpc动态关闭无效的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2016-06-23 14:37:43
original
953 Les gens l'ont consulté

昨天浏览线上项目,发现了一个问题:部分文本输出中的引号前多了一道反斜杠,比如:

引号内容多了\"反斜杠\"
Copier après la connexion

单从页面展现的结果来看,猜测应该是PHP中的magic_quotes_gpc配置被开启了的原因。然后检查了下程序,发现在入口文件中,已经动态关闭了这个配置:

ini_set('magic_quotes_gpc', 'Off');
Copier après la connexion

为什么没有生效呢?

经过一番查找,同事帮忙找到了原因,原来是因为在我动态修改这个配置之前,请求已经被解析了,因此该修改并未针对当次请求生效。

详见如下网页,有一位同行也遇到了相同的问题:

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

magic_quotes_gpc is applied while parsing the request before your PHP script gets control so while you can change this setting in your script, it won't have any effect.
Copier après la connexion

鉴于服务器上存在多个项目,为了不影响其他项目,我们也不能直接修改php.ini的配置,因此采用了陌路vs追忆编写的代码,递归处理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);}
Copier après la connexion

 

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal