PHP 9大超全局数组详解与最佳实践

苏见山
苏见山
发布时间:2026-10-13 | 6人浏览过
原创

PHP提供了一系列超全局数组来访问服务器、请求和会话信息。了解这些变量的工作原理对于处理用户输入、管理状态及调试程序至关重要。本文将逐一解析其用途及正确使用方法。

环境与服务器配置:$_SERVER 与 $GLOBALS

1、$_SERVER

该数组包含了由Web服务器创建的信息,提供了当前请求环境的详细配置。虽然不同服务器的变量略有差异,但通常包含CGI 1.1规范定义的项:

  • $_SERVER['HTTP_REFERER']:引导用户到达当前位置的页面URL。
  • $_SERVER['REMOTE_ADDR']:访问用户的IP地址。
  • $_SERVER['REQUEST_URI']:URL的路径部分(不含域名)。例如在http://www.example.com/path/page.php中,值为/path/page.php。
  • $_SERVER['HTTP_USER_AGENT']:客户端浏览器操作系统的相关信息。

9、$GLOBALS

这是一个引用全局变量本身的数组。任何在全局作用域内的变量都是此数组的元素。若需查看所有全局变量,可使用以下代码:

print '
';
print_r ($GLOBALS);
print '
';

处理请求数据:$_GET、$_POST 与 $_REQUEST

2、$_GET

用于收集通过URL参数传递的数据(即GET方法)。如果访问的URL为?cat=apache&id=157,可通过 $_GET['cat'] 和 $_GET['id'] 分别获取“apache”和“157”。默认情况下,它是访问GET参数的唯一途径。

3、$_POST

用于收集通过HTTP POST方法发送的数据,常用于HTML表单提交。以下是一个使用POST提交登录信息的示例:

<form action="subscribe.php" method="post">
  <p> Email address : <br>
    <input type="text" name="email" size="20" maxlength="50" value="">
  </p>
  <p> Password : <br>
    <input type="password" name="pswd" size="20" maxlength="15" value="">
  </p>
  <p>
    <input type="submit" name="subscribe" value="subscribe!">
  </p>
</form>

在处理脚本subscribe.php中,可以读取:$_POST['email']、$_POST['pswd'] 等变量。

7、$_REQUEST

该变量汇集了$_GET、$_POST 和 $_COOKIE 的内容。数据的覆盖顺序取决于php.ini中的variables_order指令。建议尽量不使用此变量,因为它模糊了数据来源,存在潜在的安全隐患。

会话管理与 Cookies:$_SESSION 与 $_COOKIE

8、$_SESSION

用于存储特定于某个用户会话的全局变量。一旦注册了会话信息,便可以在网站的不同页面之间方便地引用这些数据,而无需每次通过URL或表单显式传递。

4、$_COOKIE

存储通过HTTP Cookie传递到脚本的信息。Cookie通常由之前的脚本通过setcookie()函数设置。例如,若之前设置了名为user_pref的Cookie,后续脚本可直接通过$_COOKIE['user_pref']读取其值。

文件上传与环境信息:$_FILES 与 $_ENV

5、$_FILES

这是一个二维数组,用于处理通过POST方式上传的文件。假设表单中上传控件的name属性为myfile,则相关属性如下:

  • $_FILES['myfile']['name']:客户端原文件名。
  • $_FILES['myfile']['type']:文件的MIME类型(如image/jpeg)。
  • $_FILES['myfile']['size']:文件大小(字节)。
  • $_FILES['myfile']['tmp_name']:存储在服务器上的临时文件名。
  • $_FILES['myfile']['error']:上传错误码。成功上传时为UPLOAD_ERR_OK (0)。其他常见错误包括:
    - UPLOAD_ERR_INI_SIZE:超出upload_max_filesize限制。
    - UPLOAD_ERR_PARTIAL:文件仅部分上传。
    - UPLOAD_ERR_NO_FILE:未选择文件。

6、$_ENV

包含服务器环境变量。根据系统配置不同可能有所不同,典型字段包括:$_ENV['HOSTNAME'](主机名)和$_ENV['SHELL'](系统Shell路径)。

总结

合理使用超全局数组是PHP开发的基础。在处理用户输入时,优先区分$_GET和$_POST以增强安全性;涉及敏感状态时使用$_SESSION;操作文件时务必检查$_FILES的error属性。以上就是PHP超全局变量的详细内容,更多关于PHP开发基础与安全的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表