它究竟意味着什么;寄存器”;变量


What exactly does it mean to "register" a variable

这是关于PHP全局变量的。这是否意味着全局变量只是通过HTTP请求分配值(即:预先存在但没有值的Varaibles),或者变量是"实例化"并分配值的(即:脚本中没有预先存在的变量)?我还没有看到任何解释的文本。

register ing globals只是指将各种请求变量注册为全局可用的过程。然而,在这种情况下,"register"与"assign"或"set"有着根本的不同,因为全局变量与它们的超全局密钥对应项(或"registered"作为别名)有着内在的联系,也许最好用以下代码片段来概括:

// register_globals is on
$_POST["username"] === $username; // true
$username = "foo";
$_POST["username"] === $username; // *still* true
$_POST["username"] = "bar";
$_POST["username"] === $username; // *still* true

也就是说,更改一个将更改相应的超全局键。当然,这种行为不应该被依赖——如果你一开始就使用register_globals,那么你就做错了。

PHP的register_globals将创建适当的全局变量并为其赋值。请注意,使用register_globals可能是一个非常糟糕的主意,因为它会带来安全风险。最好使用超全局数组$_POST$_GET$_COOKIE