PHP 超全局变量详解

PHP 超全局变量详解

PHP 超全局变量在所有作用域都能用,写接口和表单开发天天用到。

1. 什么是超全局变量

超全局变量是 PHP 预定义的数组变量,不需要 global 声明,在函数、类、文件里都能直接访问。

2. 常用超全局变量

1)$_GET
获取 URL 查询参数。

// 访问 index.php?id=1&name=张三
$id = $_GET['id'];       // 1
$name = $_GET['name'];   // 张三

2)$_POST
获取表单 POST 提交的数据。

// 表单 method="post"
$username = $_POST['username'];
$password = $_POST['password'];

3)$_REQUEST
同时获取 GET、POST、COOKIE 数据。

$id = $_REQUEST['id'];
// 不推荐,安全隐患大

4)$_SESSION
会话数据,跨页面共享。

session_start();
$_SESSION['user_id'] = 1;
$_SESSION['username'] = '张三';

5)$_COOKIE
获取客户端 Cookie。

$token = $_COOKIE['token'];

6)$_SERVER
服务器和执行环境信息。

// 获取请求方法
$method = $_SERVER['REQUEST_METHOD'];

// 获取当前URL
$uri = $_SERVER['REQUEST_URI'];

// 获取客户端IP
$ip = $_SERVER['REMOTE_ADDR'];

// 获取HTTP头
$host = $_SERVER['HTTP_HOST'];

3. 文件上传变量

$_FILES
处理文件上传。

// 表单 enctype="multipart/form-data"
$file = $_FILES['upload'];
$name = $file['name'];        // 文件名
$tmp = $file['tmp_name'];     // 临时路径
$size = $file['size'];        // 文件大小
$error = $file['error'];      // 错误码

4. 注意事项

  • 安全问题: 所有超全局变量都不可信,必须做过滤和验证
  • isset 判断: 取值前用 isset 判断是否存在,避免报错
  • 类型转换: 数字参数记得转 int
  • 不要用 $_REQUEST: 安全隐患大,明确用 GET 还是 POST

5. 安全取值示例

// 安全获取GET参数
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;

// 安全获取POST参数
$username = isset($_POST['username']) ? trim($_POST['username']) : '';

// 判断请求方法
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // 处理POST请求
}

总结

PHP 超全局变量要点:

  • $_GET:获取 URL 参数
  • $_POST:获取表单数据
  • $_SESSION:会话数据
  • $_COOKIE:客户端 Cookie
  • $_SERVER:服务器信息
  • $_FILES:文件上传
  • 所有外部输入都要过滤验证,不能直接用
  • 取值前先 isset 判断

做 PHP 开发,超全局变量是基础中的基础。


emer 发布于  2026-10-9 07:09