1

为了抵消魔术引号,我在每一页的顶部都设置了这个功能。但是,当我在表单中有一个数组时,它似乎会产生影响<input type="checkbox" name="check[]" />

if ( in_array( strtolower( ini_get( 'magic_quotes_gpc' ) ), array( '1', 'on' ) ) ) {
    $_POST = array_map( 'stripslashes', $_POST );
    $_GET = array_map( 'stripslashes', $_GET );
    $_COOKIE = array_map( 'stripslashes', $_COOKIE );
}

我删除了该函数,它在打印数组时返回了完整的数组。但是我也需要魔术引号。

有了这个功能,我就Array回来了。

如何更改上述功能或克服此问题?

谢谢

4

2 回答 2

0

php 网站上有一个很棒的页面,介绍了如何.ini文件和运行时禁用魔术引号。我强烈建议使用他们的代码而不是自制的东西。

于 2011-02-16T20:11:31.480 回答
0

您可以使用array_walk_recursive

function gpc_stripslashes(&$value, $key) {
    $value = stripslashes($value);
}
array_walk_recursive($_GET, 'gpc_stripslashes');

或者 PHP 5.3 方式(虽然 magic_quotes_gpc 在 5.3 中默认是关闭的):

array_walk_recursive($_GET, function (&$value, $key) {
    $value = addslashes($value);
});
于 2011-02-16T20:25:34.647 回答