我已经通过搜索栏搜索了 Stack Overflow,只有 4 个帖子指出这些是不好的事情。
为什么没有完整的理由?
所以我发布这个问题是为了找出以下内容:
为什么要做这些坏事?他们也打开你的服务器有什么风险?
如果 PHP 中的超全局变量如此落后,为什么它们仍然存在?
它们可以用来做什么?
我已经通过搜索栏搜索了 Stack Overflow,只有 4 个帖子指出这些是不好的事情。
为什么没有完整的理由?
所以我发布这个问题是为了找出以下内容:
为什么要做这些坏事?他们也打开你的服务器有什么风险?
如果 PHP 中的超全局变量如此落后,为什么它们仍然存在?
它们可以用来做什么?
Superglobals 还不错,而且它们总是处于开启状态。没有它们,您将无法访问诸如$_GET
or之类的东西$_POST
。
我怀疑您在谈论Register Globals,它在 PHP 5.3 中已被弃用并在 PHP 5.4 中被删除。他们无疑是坏的。它们允许任何人在您的代码中实例化任意全局变量。有很多关于它们为什么不好的信息,直到文档中包含它们自己的页面。
register_globals
自己都不是问题。
它的组合:
在全局范围内执行所有代码
从不初始化变量
然后从外部输入(register_globals)出现随机变量。
可悲的是,这是常见的情况以及它们在 PHP3/PHP4 时代的使用方式。这就是为什么过度概括的模因“register_globals are bad”实际上是正确的。
您可以在启用它们的情况下编写完全理智的代码,但这是一个不必要的陷阱。