如何在运行时禁用PHP魔术引号?

Ada*_*ron 9 php runtime magic-quotes

我正在编写一组PHP脚本,这些脚本将在一些不同的设置中运行,其中一些与魔术引号共享托管(恐怖).如果没有控制PHP或Apache配置的能力,我可以在脚本中做任何事情来在运行时禁用PHP引号吗?

如果代码没有假设魔术引号打开会更好,这样我就可以在不同的主机上使用相同的脚本,这些主机可能有也可能没有魔术引号.

Gum*_*mbo 15

只有magic_quoted_runtime可以在运行时被禁用.但是不能在运行时禁用magic_quotes_gpc(PHP_INI_ALL可以改变,直到PHP 4.2.3,从那时起PHP_INI_PERDIR); 你只能删除它们:

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);
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅禁用魔术引号.

  • 我真的认为这个代码也应该是`ini_set('magic_quotes_gpc',false);`以防止另一个也关注条带输入值的库再次删除它们. (2认同)

Mac*_*ony 5

在运行时无法禁用魔术引号,但您可以使用目录中的.htaccess文件来禁用它.

php_flag magic_quotes_gpc off
Run Code Online (Sandbox Code Playgroud)

它唯一真正的优点是你可以把它放在一个目录中,它适用于整个目录和子目录.真的很好,如果你需要这个你没有写的应用程序,并需要让它工作没有魔术报价.