PHP预定义变量详解:$_SERVER与$HTTP_SERVER_VARS

需积分: 3 2 下载量 59 浏览量 更新于2024-11-23 收藏 16KB DOCX 举报
"PHP预定义变量包括一系列全局变量,如$_SERVER、$_GET、$_POST等,它们在PHP脚本的任何地方都可直接访问,无需使用`global`关键字。这些变量由服务器自动创建,用于存储HTTP请求的各种信息,如表单数据、服务器环境变量等。在PHP4.1.0之后,推荐使用超全局变量,而不再依赖`register_globals`选项。" PHP预定义变量是PHP编程中的核心概念,它们提供了与服务器环境、HTTP请求以及用户输入交互的桥梁。下面将详细介绍几个重要的预定义变量: 1. **$_SERVER**: 这个超全局变量包含了关于服务器和请求的信息,比如HTTP头、脚本路径和位置。例如,`$_SERVER['PHP_SELF']`表示当前执行的脚本文件名,相对文档根目录。`$_SERVER['argv']`则存储了通过命令行传递给脚本的参数。 2. **$_GET**: 当通过URL参数传递数据时,这些数据会被存储在`$_GET`数组中。例如,URL `http://example.com/?name=John&age=30`,`$_GET['name']`将返回"John",`$_GET['age']`返回"30"。 3. **$_POST**: 如果通过POST方法提交表单,表单数据会存储在`$_POST`数组中。与`$_GET`类似,但POST数据不会显示在URL中,适合传输敏感信息。 4. **$_FILES**: 当处理文件上传时,`$_FILES`数组包含了关于上传文件的信息,如文件名、大小、类型、临时文件路径以及错误信息。 5. **$_REQUEST**: 这个超全局变量包含了`$_GET`、`$_POST`和`$_COOKIE`的所有数据。在处理表单数据时,若不确定数据来源,使用`$_REQUEST`可以获取到所有类型的数据。 6. **$_SESSION**: 用于在用户会话之间存储数据,启动会话后,可以通过`$_SESSION`数组存储和读取数据。例如,`$_SESSION['username'] = 'John';`可以在用户登录时保存用户名。 7. **$_COOKIE**: 用于存储客户端的cookie数据。当服务器发送一个cookie给浏览器,浏览器会在后续请求中将该cookie值放入`$_COOKIE`数组。 8. **$_ENV**: 包含环境变量,这些变量通常由操作系统提供,而不是HTTP请求。 9. **$_GLOBALS**: 包含所有全局变量,无论它们在哪个作用域内定义,都可以通过`$_GLOBALS`访问。 请注意,虽然预定义变量提供了方便,但也存在安全风险,比如`$_GET`和`$_POST`中的数据未经验证和过滤就直接使用,可能导致SQL注入或跨站脚本攻击。因此,始终应当对用户输入进行严格的检查和清理。 在PHP5.0.0之后,`register_long_arrays`选项被引入,允许禁用长格式的预定义变量,如$HTTP_SERVER_VARS,以提高代码的可读性和安全性。另外,`register_globals`选项在PHP7中已被废弃,因为它会增加代码的复杂性,并可能引发安全问题。 理解和熟练使用PHP预定义变量对于编写高效、安全的PHP应用程序至关重要。通过这些变量,开发者可以与Web服务器、HTTP请求和用户进行有效通信,实现各种功能。