PHP 中的超级全局变量(Superglobals)是 PHP 4.1.0 引入的一个特性,它们在脚本的全部作用域中都是可用的。这意味着一旦一个脚本被载入,这些变量就可以在脚本的任何地方被访问,无论是在函数内部还是外部。PHP 提供了几个预定义的超级全局变量,用于收集来自不同来源的信息,如用户输入、服务器信息、会话信息等。
常见的 PHP 超级全局变量
-
$GLOBALS
$GLOBALS
是一个包含了全部变量的全局组合数组。变量的名字就是数组的键(key)。- 示例:
$GLOBALS['variableName']
访问全局变量variableName
。
-
$_SERVER
$_SERVER
是一个包含了诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。这个数组由 web 服务器创建。- 示例:
$_SERVER['SERVER_NAME']
获取当前运行脚本所在服务器的主机名。
-
$_GET
$_GET
通过 URL 参数传递给当前脚本的变量的数组。- 示例:如果 URL 是
http://example.com/test.php?name=John&age=30
,则$_GET['name']
会是John
,$_GET['age']
会是30
。
-
$_POST
$_POST
通过 HTTP POST 方法传递给当前脚本的变量的数组。- 常用于表单数据的提交。
- 示例:如果表单包含
name
和age
字段,则$_POST['name']
和$_POST['age']
将分别包含这些字段的值。
-
$_REQUEST
$_REQUEST
包含了$_GET
、$_POST
和$_COOKIE
的内容。它可以用来收集通过 GET 和 POST 方法发送的数据以及通过 COOKIE 发送的数据。- 注意:出于安全考虑,不建议在生产环境中使用
$_REQUEST
,因为它可能会暴露不应该通过 GET 发送的敏感信息。
-
$_SESSION
$_SESSION
变量用于存储关于用户会话(session)的信息。- 会话变量存储在服务器上,通过 PHP 的 session 管理来跟踪用户的会话。
- 示例:
$_SESSION['username'] = 'JohnDoe';
存储用户名到会话中。
-
$_FILES
$_FILES
是一个包含了通过 HTTP POST 方法上传的文件的数组。- 数组的每个元素都是一个关联数组,包含了文件的名称、类型、大小、临时文件名以及是否上传成功等信息。
- 示例:
$_FILES['file']['name']
获取上传文件的原始名称。
-
$_COOKIE
$_COOKIE
是一个包含了通过 HTTP Cookies 发送到脚本的变量的数组。- 示例:如果有一个名为
user
的 cookie,则$_COOKIE['user']
会包含该 cookie 的值。
-
$_ENV
$_ENV
是一个包含了服务器端环境变量的数组。这些变量是环境配置的一部分。- 注意:不是所有的服务器都会设置这些变量,或者服务器管理员可能会阻止访问某些环境变量。
-
$_HTTP_RAW_POST_DATA
$_HTTP_RAW_POST_DATA
包含了原始的 POST 数据。默认情况下,此特性在 PHP 5.6.0 中已废弃,并在 PHP 7.0.0 中移除。- 如果需要处理原始 POST 数据,应考虑使用
php://input
流或其他方法。
使用超级全局变量的注意事项
- 安全性 :特别是处理
$_GET
、$_POST
和$_COOKIE
时,要注意验证和清理输入数据,以防止跨站脚本(XSS)攻击和其他安全漏洞。 - 性能:虽然超级全局变量很方便,但过度使用或不当使用可能会对性能产生负面影响。
- 作用域:超级全局变量在脚本的任何地方都是可用的,但应注意不要在不适当的地方(如全局命名空间中)修改它们,以避免意外的副作用。
原文链接: PHP超级全局变量
红客社区:客户端下载 - 红客网络编程与渗透技术