首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是PHP中的register_globals?

什么是PHP中的register_globals?
EN

Stack Overflow用户
提问于 2010-08-29 09:41:28
回答 2查看 68.8K关注 0票数 64

谁能给出一些register_globals是什么的例子?

global $user_id;被认为是全局寄存器吗?

EN

回答 2

Stack Overflow用户

发布于 2010-08-29 09:49:41

使用register_globals=on时,通过GET、POST或COOKIE传递的任何内容在代码中都会自动显示为全局变量,这可能会产生安全后果。

也就是说,你点击url,你会看到$access_level = 100的test.php?access_level=100。

当你做全局$somevar时,你正在创建你自己的全局变量,这通常不是一个大问题。

票数 17
EN

Stack Overflow用户

发布于 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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3593210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档