为了账号安全,请及时绑定邮箱和手机立即绑定

如何在共享主机上关闭魔术引号?

如何在共享主机上关闭魔术引号?

PHP
慕尼黑8549860 2019-07-26 17:25:18
如何在共享主机上关闭魔术引号?我想关掉PHP的魔术引号。我无法访问php.ini。当我尝试添加php_flag magic_quotes_gpc off到我的.htaccess文件时,我收到500内部服务器错误。这是我的.htaccess文件的样子:AddType x-mapp-php5 .php php_flag magic_quotes_gpc off然后我尝试使用ini_set('magic_quotes_gpc', 'O'),但这没有效果。如何关闭魔术报价?
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

虽然我不能说为什么php_flag会给你500 Internal Server Error,但我会指出PHP手册有一个例子,用于检测魔术引号是否打开并在运行时从超级全局中删除它。与其他发布的不同,这个是递归的,将正确地从数组中删除引号:

更新:我今天注意到PHP手册中有以下代码的新版本,它使用了对超全局变量的引用。

旧版:

<?phpif (get_magic_quotes_gpc()) {
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);

        return $value;
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST = array_map('stripslashes_deep', $_REQUEST);}?>

新版本:

<?phpif (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);}?>


查看完整回答
反对 回复 2019-07-26
  • 3 回答
  • 0 关注
  • 407 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信