通过查看此指令的名称,我们可能会认为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
,$_ENV
和stripslashes()
是否也会受到影响?
还有一个问题,如果我在$_GET
,$_POST
和$_COOKIE
数组上重复$_REQUEST
,我还需要遍历{{1}}数组吗?或者是否会自动反映更改?
答案 0 :(得分:2)
我已经LightTPD 1.4.20
和PHP 5.3.0
对magic_quotes_gpc = On
进行了一些测试,$_SERVER
没有改变(至少[SERVER_NAME] => local'host
没有改变)。 $_SESSION
也不受magic_quotes的影响。
$_GET
,$_POST
,$_COOKIE
和$_REQUEST
受到影响(以及他们的$GLOBALS
对应方)。
此外,GPC
超全球的更改不会自动反映在$_REQUEST
中。
对于$_FILES
和$_ENV
超全球,我无法测试它们。
我终于运行了这个测试,令我惊讶的是,$_FILES
和php://input
都受到影响。
答案 1 :(得分:2)
无论哪种方式,我都建议你不要依赖GPC,因为它已经在新的PHP版本上被弃用了......
它可能与您的问题不太相关,但在SQL安全备选方案的问题上,我通常使用预备语句+ mysql_real_escape_string for MySQL。
为了使其接近完美,它涉及一些函数,因为它还应该支持整数,布尔值和空值,但是您可以查看NaturePhp上的Database和Database_mysql类的源代码。 / p>