PHP预定义变量详解:$_SERVER与$HTTP_SERVER_VARS
需积分: 3 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请求和用户进行有效通信,实现各种功能。
2021-09-26 上传
2021-11-22 上传
2021-09-26 上传
2022-07-13 上传
2022-07-13 上传
2022-07-13 上传
2024-06-03 上传
2024-07-18 上传
2021-12-24 上传
ounghuy
- 粉丝: 0
- 资源: 3
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新