PHP 超级全局变量(Superglobals)
                           
天天向上
发布: 2025-03-19 21:38:41

原创
620 人浏览过

在 PHP 中,超级全局变量(Superglobals) 是一组特殊的全局数组变量,它们可以在任何作用域中直接访问,而无需使用 global 关键字或 $_GLOBALS 数组。这些变量用于处理用户输入、会话管理、服务器信息等。


PHP 超级全局变量列表

PHP 提供了以下几个常见的超级全局变量:

变量名说明
$_GET用于收集 URL 参数(通过 GET 方式传递的数据)
$_POST用于收集表单数据(通过 POST 方式提交的数据)
$_REQUEST包含 $_GET$_POST$_COOKIE 的综合数据
$_SERVER包含服务器和执行环境的信息
$_FILES用于处理文件上传
$_ENV包含服务器的环境变量
$_COOKIE包含客户端的 Cookie 数据
$_SESSION用于存储会话变量
$_GLOBALS用于访问所有全局作用域变量

1️⃣ $_GET:获取 URL 参数

$_GET 用于获取通过 URL 传递的参数。例如:

示例:URL 传参

<!-- 访问: http://example.com/test.php?name=John&age=30 -->
<?php
echo "姓名:" . $_GET["name"] . "<br>";
echo "年龄:" . $_GET["age"];
?>

📌 特点:

  • 通过 URL 传递参数,适用于 搜索、筛选等数据传输
  • 数据会显示在 URL 上,不适合 敏感信息
  • URL 最大长度受浏览器限制

2️⃣ $_POST:获取表单数据

$_POST 用于获取 通过 HTTP POST 方法提交的表单数据

示例:表单提交

<!-- form.html -->
<form method="post" action="process.php">
  姓名: <input type="text" name="name">
  <input type="submit" value="提交">
</form>
// process.php
<?php
echo "提交的姓名是:" . $_POST["name"];
?>

📌 特点:

  • 适用于 提交表单数据
  • 数据不会显示在 URL 上,更适合 处理敏感信息
  • 无 URL 长度限制

3️⃣ $_REQUEST:获取 $_GET$_POST$_COOKIE 数据

$_REQUEST 结合了 $_GET$_POST$_COOKIE 的数据。

示例:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_REQUEST["name"];
    echo "您的姓名是:" . $name;
}
?>

📌 注意:

  • 由于 $_REQUEST 会合并 $_GET$_POST$_COOKIE,在某些情况下可能会带来 安全风险,不建议默认使用。

4️⃣ $_SERVER:获取服务器信息

$_SERVER 包含关于服务器和请求环境的信息。

常用 $_SERVER 变量:

变量名说明
$_SERVER["PHP_SELF"]当前执行的脚本文件路径
$_SERVER["SERVER_NAME"]服务器的主机名
$_SERVER["REQUEST_METHOD"]请求的方法(GETPOST
$_SERVER["REMOTE_ADDR"]用户 IP 地址
$_SERVER["HTTP_USER_AGENT"]用户浏览器信息
$_SERVER["REQUEST_URI"]请求的 URI

示例:

<?php
echo "当前脚本:" . $_SERVER["PHP_SELF"] . "<br>";
echo "服务器名称:" . $_SERVER["SERVER_NAME"] . "<br>";
echo "客户端 IP:" . $_SERVER["REMOTE_ADDR"] . "<br>";
echo "请求方法:" . $_SERVER["REQUEST_METHOD"] . "<br>";
?>

📌 应用场景:

  • 获取访问信息(用户 IP、浏览器类型等)
  • 处理不同的请求类型
  • 记录日志

5️⃣ $_FILES:处理文件上传

$_FILES 用于上传文件。

示例:

<!-- upload.html -->
<form action="upload.php" method="post" enctype="multipart/form-data">
  选择文件: <input type="file" name="file">
  <input type="submit" value="上传">
</form>
// upload.php
<?php
if ($_FILES["file"]["error"] == 0) {
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]);
    echo "文件上传成功!";
} else {
    echo "文件上传失败!";
}
?>

📌 关键参数:

  • $_FILES["file"]["name"]:上传文件的原始名称
  • $_FILES["file"]["tmp_name"]:临时存储路径
  • $_FILES["file"]["size"]:文件大小
  • $_FILES["file"]["error"]:错误代码

6️⃣ $_ENV:获取环境变量

$_ENV 存储服务器环境变量。

示例:

<?php
echo "服务器操作系统:" . $_ENV["OS"];
?>

📌 通常用于:

  • 获取系统变量
  • 读取环境配置

7️⃣ $_COOKIE:存储用户数据

$_COOKIE 用于存储用户的 持久数据

设置 Cookie

<?php
setcookie("user", "John", time() + 3600); // 1 小时
?>

读取 Cookie

<?php
echo "欢迎回来:" . $_COOKIE["user"];
?>

📌 适用场景:

  • 记住用户状态
  • 适用于简单的持久化存储

8️⃣ $_SESSION:会话管理

$_SESSION 用于存储 服务器端的会话数据

启用会话

<?php
session_start();
$_SESSION["user"] = "John";
?>

读取会话

<?php
session_start();
echo "当前用户:" . $_SESSION["user"];
?>

📌 适用场景:

  • 适用于 登录管理
  • 数据存储在 服务器端
  • 比 Cookie 更安全

9️⃣ $_GLOBALS:访问全局变量

$_GLOBALS 用于访问 全局作用域的变量

示例

<?php
$x = 10;
$y = 20;

function sum() {
    global $x, $y;
    echo "全局变量之和:" . ($x + $y);
}

sum();
?>

📌 通常用于:

  • 访问 全局变量
  • 避免 global 关键字

🔗 相关参考链接:


这就是 PHP 超级全局变量 的全面介绍,你可以结合自己的项目进行实践!🚀 有问题欢迎继续探讨!

更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *