Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 哪些超球会受到magic_quotes_gpc=1的影响?_Php_Magic Quotes Gpc - Fatal编程技术网

Php 哪些超球会受到magic_quotes_gpc=1的影响?

Php 哪些超球会受到magic_quotes_gpc=1的影响?,php,magic-quotes-gpc,Php,Magic Quotes Gpc,通过查看该指令的名称,人们可能会认为magic\u quotes仅适用于$\u GET、$\u POST和$\u COOKIE超全局,但有: 请注意,当 magic\u quotes\u gpc不仅设置了 $\u POST,$\u GET,$\u REQUEST,$\u COOKIE 数组值被斜杠。事实上 $GLOBALS数组中的每个字符串值 被割伤了。 $GLOBALS[''u SERVER']['PATH\u INFO'](或 $\u服务器['PATH\u INFO']) 有人能证实这是真的

通过查看该指令的名称,人们可能会认为
magic\u quotes
仅适用于
$\u GET
$\u POST
$\u COOKIE
超全局,但有:

请注意,当
magic\u quotes\u gpc
不仅设置了
$\u POST
$\u GET
$\u REQUEST
$\u COOKIE
数组值被斜杠。事实上
$GLOBALS
数组中的每个字符串值 被割伤了。
$GLOBALS[''u SERVER']['PATH\u INFO']
(或
$\u服务器['PATH\u INFO']

有人能证实这是真的吗?超级全局
$GLOBALS
$\u服务器
$\u文件
$\u会话
$\u环境
是否也受到影响


还有一个问题,如果我在
$\u GET
$\u POST
$\u COOKIE
数组上迭代
stripslashes()
,我是否也需要迭代
$\u请求
数组?或者这些变化是自动反映出来的?

我已经在
LightTPD 1.4.20
PHP5.3.0
上运行了一些测试,使用
magic\u quotes\u gpc=on
$\u服务器
没有改变(至少
[SERVER\u NAME]=>本地主机
没有改变)<代码>$\u会话也不受魔法引号的影响

$\u GET
$\u POST
$\u COOKIE
$\u请求
受到影响(以及它们的
$GLOBALS
对应方)

此外,
GPC
超全局变量中的更改不会自动反映在
$\u请求中

至于
$\u文件
$\u ENV
超全局文件,我无法对它们进行测试



我终于运行了这个测试,出乎意料的是,
$\u文件和
php://input
受到影响。

无论如何,我建议您不要依赖GPC,因为它在较新的PHP版本中已被弃用

这可能与您的问题不太相关,但在提出的SQL安全替代方案问题上,我通常使用prepared statements+mysql\u real\u escape\u string for mysql


为了使其接近完美,它需要几个函数,因为它还应该支持整型、布尔型和空值,但您可以查看数据库上的源代码和数据库上的mysql类。

为什么投反对票?这是一个完全合理的问题…我建议你自己测试一下。应该很容易。此外,请尝试查看是否可以在php设置或.htaccess文件中禁用magic_引号。更容易。依赖于magic_引号、addslashes和stripslashes是一个严重的安全缺陷。我总是引用魔法语录。如果我不能,例如,我无法控制安装,我的脚本会检测到它并终止。对作业使用正确的函数,从所有用户可访问的输入中筛选所有输入,例如,对传递给mysql的变量使用mysql\u real\u escape\u字符串,或者使用准备好的语句或更好的存储过程。我不依赖magic\u引号,我只是在magic\u引号存在且启用时处理它们。您在NaturePHP上搞错了(您假设传递的每个变量都来自GPCR),但这是一个很好的项目,祝贺您。=)Thanx,我将检查它并在下一个版本中更正它:)