【发布时间】:2011-11-25 07:47:25
【问题描述】:
由于某种原因,我所有的引号都被转义并显示为 \"。以前还可以。然后我查看了 phpinfo(),发现我的 magic_quotes_gpc 已打开。但是,我找不到目录 /usr /local/lib/ php.ini 文件所在的位置,我无法编辑 .htaccess 文件(出现 500 内部服务器错误)。
我尝试将它放在我的脚本文件(包含在所有页面中)的顶部:
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
但是,我页面上的 " 和 ' 仍然有反斜杠。
我做错了什么?
【问题讨论】:
-
联系或更换您的虚拟主机。
-
您使用变量引用/别名的方式实际上并没有按照您的想法进行。我建议基于
$GLOBALS数组构建一些东西(根本不需要引用)。但实际上根本原因是您配置错误的虚拟主机。启用 GPC 的魔术引号表明您的虚拟主机没有安全感。 -
你在 .htaccess 文件中放了什么?另外,你试过
ini_set('magic_quotes_runtime', 0); -
从php.net/manual/en/security.magicquotes.disabling.php#91653 中选择一个其他示例,并确保它确实是您的 php 脚本中调用的第一件事。
-
您已经创建了对数组的引用,但是您的循环没有使用它们生成的键的引用,因此您正在转义数据的副本而不是原始数据。
标签: php escaping magic-quotes-gpc