PHP 9大超全局数组详解与最佳实践
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开发基础与安全的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









