【问题标题】:Disabling magic quotes [duplicate]禁用魔术引号[重复]
【发布时间】:2012-10-16 02:26:50
【问题描述】:

可能重复:
How to turn off magic quotes on shared hosting?

我整天都在胡思乱想,试图在我的 WordPress 主题中禁用魔术引号......

我已经尝试了 .htaccess 和 php.ini(以及 php5.ini)文件方法,但 .htaccess 给了我 500 内部服务器错误(我的主机是 GoDaddy),而 php.ini 方法没有工作。我还用我在网上找到的几十个不同的代码尝试了 php 方法,这就是其中之一:

if (get_magic_quotes_gpc()) 
{
function remove_slash(&$value)
{
$value = stripslashes($value);
}
array_walk_recursive($_GET, "remove_slash");
array_walk_recursive($_POST, "remove_slash");
array_walk_recursive($_COOKIE, "remove_slash");
array_walk_recursive($_REQUEST, "remove_slash");
}

但是,没有一个人摆脱了那些烦人的反斜杠!如果这里有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

  • remove_slash 函数在她的示例中定义
  • 在以后的 PHP 版本中,设置可能会进入 .user.ini 文件。在 FCGI 设置中,甚至可能有本地 php.inis。
  • 您不能禁用它们,因为 WordPress 首先启用了它们。无论您的托管设置如何,WordPress 愚蠢的安全性 会削减一切认为可以确保安全的东西。可爱!

标签: php wordpress


【解决方案1】:

在我的项目中我使用这个:

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);
}

我把它放在运行时,它就可以工作了。

我也知道如何通过 .htaccess 禁用它。

php_flag magic_quotes_gpc off

我相信这两个都有效。

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 2021-07-24
    • 2013-12-08
    • 2011-09-15
    • 1970-01-01
    • 2010-09-18
    • 2012-05-20
    • 2011-05-17
    • 2010-12-21
    相关资源
    最近更新 更多