4

通过查看该指令的名称,您可能会认为它magic_quotes仅适用于$_GET,$_POST$_COOKIE超全局变量,但PHP 手册中有一条令人不安的评论

请注意,当 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数组吗?还是自动反映更改?

4

2 回答 2

2

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

它可能与您的问题不太相关,但在提出的 SQL 安全替代方案问题上,我通常使用准备好的语句 + MySQL 的 mysql_real_escape_string。

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

于 2010-01-08T16:50:30.807 回答
2

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

$_GET, $_POST,$_COOKIE$_REQUEST受到影响(和他们的$GLOBALS同行)。

此外,超全局变量中的更改GPC不会自动反映在$_REQUEST.

至于$_FILES$_ENVsuperglobals 我无法在 ATM 上测试它们。


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

于 2010-01-07T23:15:35.697 回答