2026-10-21 04:14:01
PHP 魔术变量是语言内置的预定义变量,用于提供当前执行环境的信息。以下是主要魔术变量的分类及说明:
一、超全局变量(Superglobals)这些变量在所有作用域中自动可用,无需使用 global 关键字。
$GLOBALS
包含所有全局变量的数组,变量名作为键名。
示例:$GLOBALS['var'] 访问全局变量 $var。
$_SERVER
提供服务器和执行环境信息,如请求头、路径、客户端 IP 等。
常用键:
'REMOTE_ADDR':客户端 IP 地址。
'REQUEST_METHOD':HTTP 方法(GET/POST)。
'PHP_SELF':当前脚本路径。
$_GET
存储通过 URL 查询字符串(?key=value)传递的参数。
示例:$_GET['id'] 获取 example.com?id=123 中的 id。
$_POST
存储通过 HTTP POST 方法提交的表单数据。
示例:$_POST['username'] 获取表单提交的用户名。
$_FILES
包含文件上传信息(如临时路径、大小、错误码)。
示例:$_FILES['avatar']['size'] 获取上传文件的大小。
$_COOKIE
存储客户端发送的 HTTP Cookie。
示例:$_COOKIE['auth_token'] 读取名为 auth_token 的 Cookie。
$_SESSION
存储当前用户会话数据(需先调用 session_start())。
示例:$_SESSION['user_id'] = 10; 设置会话变量。
$_REQUEST
合并 $_GET、$_POST 和 $_COOKIE 的数据(不推荐优先使用,可能存在安全性问题)。
$_ENV
包含服务器环境变量(如系统路径、用户配置)。
$this
在类方法中指向当前对象实例,用于访问非静态属性和方法。
示例:$this->property。
$php_errormsg
存储最近一次错误消息(需 track_errors 配置启用,PHP 7.2+ 已废弃)。
$http_response_header
包含 HTTP 请求的响应头(如使用 file_get_contents() 发起请求时自动填充)。
获取客户端信息
$ip = $_SERVER['REMOTE_ADDR']; // 客户端 IP$user_agent = $_SERVER['HTTP_USER_AGENT']; // 浏览器信息处理表单数据
$username = $_POST['username'] ?? ''; // 安全获取 POST 参数会话管理
session_start();$_SESSION['logged_in'] = true; // 设置会话文件上传
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { move_uploaded_file($_FILES['file']['tmp_name'], '/path/to/save');}通过合理利用魔术变量,开发者可以高效处理请求、会话和环境数据,但需注意安全性和兼容性。