2012-09-04 101 views
1

这是关于PHP全局变量的。这是否意味着全局变量是通过HTTP请求简单分配的值(即:预先存在但没有值的Varaibles),或者变量是“实例化”的和分配的值(即:脚本中不存在的变量) ? 我还没有看到任何解释的文字。“注册”变量意味着什么

+0

你的意思是'register_globals'? –

+0

@arxanas是的,register_globals。 –

回答

0

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

+0

谢谢,我的问题也适用于超全球。那么除了超级全球变得更安全之外,这两个变量类型的变量是否相同(创建和赋值)呢? –

+0

只有少数超级全球性,并且只要PHP运行就都存在。您无法创建自己的超全球资源AFAIK,它们每次都由PHP为您预先创建。 –

+0

是的,我的意思是“由系统创建和分配”,而不是由我自己。 –

1

register ing globals仅仅意味着将各种请求变量注册为全局可用的过程。然而,在这种情况下,“注册”在本质上与“分配”或“设置”不同,因为全局变量固有地链接到它们的超全局键对应物(或“注册”为别名),可能通过以下代码片段进行最佳总结:

// 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,那么你做错了什么。