谁能给出一些register_globals
是什么的例子?
global $user_id;
被认为是全局寄存器吗?
发布于 2010-08-29 09:49:41
使用register_globals=on时,通过GET、POST或COOKIE传递的任何内容在代码中都会自动显示为全局变量,这可能会产生安全后果。
也就是说,你点击url,你会看到$access_level = 100的test.php?access_level=100。
当你做全局$somevar时,你正在创建你自己的全局变量,这通常不是一个大问题。
发布于 2010-08-29 10:01:37
据我所知,如果您打开了注册全局变量,那么在GET或POST中传递的任何内容都会自动转换为PHP中的变量。
例如:
http://www.domain.com/vars.php?myvar=123
无需任何进一步编码,这将自动转换为可供其余php代码使用的变量
$myvar //with a value of 123
在关闭注册全局变量的情况下,通过GET或POST传递的数据不会自动转换为变量,而是需要使用Superglobals $_GET、$_POST和$_REQUEST等来请求它。
http://php.net/manual/en/security.globals.php提供了一些关于这种情况的安全影响的进一步信息。
如果我错了,其他人可以随时纠正我。
编辑:
关于你的问题re global $user_id;
,这不会创建一个“全局”在“寄存器_全局”的意义上。它只是在PHP代码中改变变量的作用域。
有关范围的信息,请参阅:http://php.net/manual/en/language.variables.scope.php
https://stackoverflow.com/questions/3593210
复制相似问题