magic_quotes_gpc = 1会影响哪些超全球?

时间:2010-01-07 22:27:14

标签: php magic-quotes-gpc

通过查看此指令的名称,我们可能会认为magic_quotes仅适用于$_GET$_POST$_COOKIE超全局,但有one perturbing comment on the PHP Manual

  

请注意,那时候   magic_quotes_gpc不仅设置了$_POST   $_GET$_REQUEST$_COOKIE$GLOBALS   数组值被削减。其实   $GLOBALS['_SERVER']['PATH_INFO']数组中的每个字符串值   被削减,即。   $_SERVER['PATH_INFO'](或   $GLOBALS)。

有人能证实这是真的吗?超级全球$_SERVER$_FILES$_SESSION$_ENVstripslashes()是否也会受到影响?

还有一个问题,如果我在$_GET$_POST$_COOKIE数组上重复$_REQUEST,我还需要遍历{{1}}数组吗?或者是否会自动反映更改?

2 个答案:

答案 0 :(得分:2)

我已经LightTPD 1.4.20PHP 5.3.0magic_quotes_gpc = On进行了一些测试,$_SERVER没有改变(至少[SERVER_NAME] => local'host没有改变)。 $_SESSION也不受magic_quotes的影响。

$_GET$_POST$_COOKIE$_REQUEST受到影响(以及他们的$GLOBALS对应方)。

此外,GPC超全球的更改不会自动反映在$_REQUEST 中。

对于$_FILES$_ENV超全球,我无法测试它们。


我终于运行了这个测试,令我惊讶的是,$_FILESphp://input 都受到影响。

答案 1 :(得分:2)

无论哪种方式,我都建议你不要依赖GPC,因为它已经在新的PHP版本上被弃用了......

它可能与您的问题不太相关,但在SQL安全备选方案的问题上,我通常使用预备语句+ mysql_real_escape_string for MySQL。

为了使其接近完美,它涉及一些函数,因为它还应该支持整数,布尔值和空值,但是您可以查看NaturePhp上的Database和Database_mysql类的源代码。 / p>