-1

我已经通过搜索栏搜索了 Stack Overflow,只有 4 个帖子指出这些是不好的事情。

为什么没有完整的理由?

所以我发布这个问题是为了找出以下内容:

  1. 为什么要做这些坏事?他们也打开你的服务器有什么风险?

  2. 如果 PHP 中的超全局变量如此落后,为什么它们仍然存在?

  3. 它们可以用来做什么?

4

2 回答 2

3

Superglobals 不错,而且它们总是处于开启状态。没有它们,您将无法访问诸如$_GETor之类的东西$_POST

我怀疑您在谈论Register Globals,它在 PHP 5.3 中已被弃用并在 PHP 5.4 中被删除。他们无疑是坏的。它们允许任何人在您的代码中实例化任意全局变量。有很多关于它们为什么不好的信息,直到文档中包含它们自己的页面。

于 2013-02-24T15:34:42.750 回答
1

register_globals自己都不是问题。

它的组合:

  • 在全局范围内执行所有代码

  • 从不初始化变量

  • 然后从外部输入(register_globals)出现随机变量。

可悲的是,这是常见的情况以及它们在 PHP3/PHP4 时代的使用方式。这就是为什么过度概括的模因“register_globals are bad”实际上是正确的。

您可以在启用它们的情况下编写完全理智的代码,但这是一个不必要的陷阱。

于 2013-02-24T15:49:37.377 回答