PHP常用的超全局变量(8个)

在PHP中,超全局变量是一种特殊的变量类型,它们在全部作用域中始终可用,无需使用global关键字来访问。这些变量提供了在PHP脚本中访问和操作各种数据和环境信息的便捷方式。以下是PHP中常用的8个超全局变量的详细介绍:

1. $GLOBALS

  • 描述:GLOBALS是一个包含了全局作用域中可用的全部变量的全局组合数组。在函数或方法中,可以通过GLOBALS数组来访问全局作用域中的变量。

  • 用法 :GLOBALS数组的键是变量名,值是对应变量的值。例如,在全局作用域中定义了一个变量'foo,那么在函数内部可以通过$GLOBALS['foo']`来访问它。

  • 示例

    php 复制代码
    $foo = "Example content";  
    function test() {  
        echo '$foo in global scope: ' . $GLOBALS['foo'] . '<br />';  
        $GLOBALS['foo'] = '1111';  
        echo '$foo in global scope after modification: ' . $GLOBALS['foo'] . '<br />';  
    }  
    test();  
    echo $foo; // 输出:1111

2. $_SERVER

  • 描述:$_SERVER是一个包含了服务器和执行环境信息的数组。它提供了诸如头信息、路径、脚本位置以及请求方法等信息。

  • 用法 :SERVER数组的键是服务器提供的变量名,值是相应的信息。例如,'_SERVER['PHP_SELF']表示当前执行脚本的文件名,$_SERVER['SERVER_NAME']`表示当前运行脚本所在服务器的主机名。

  • 示例

    php 复制代码
    echo '当前执行脚本的文件名: ' . $_SERVER['PHP_SELF'] . '<br>';  
    echo '当前运行脚本所在服务器的主机名: ' . $_SERVER['SERVER_NAME'] . '<br>';  
    echo '当前请求的 Host 头部内容: ' . $_SERVER['HTTP_HOST'] . '<br>';  
    echo '当前用户代理(浏览器)的字符串: ' . $_SERVER['HTTP_USER_AGENT'] . '<br>';  
    echo '客户端的 IP 地址: ' . $_SERVER['REMOTE_ADDR'] . '<br>';

3. $_GET

  • 描述:GET是一个关联数组,用于收集通过URL参数传递的数据。当使用GET方法发送HTTP请求时,参数会附加在URL的末尾,并通过_GET数组来访问。

  • 用法 :GET数组的键是URL参数的名称,值是参数的值。例如,'_GET['id']将返回URL中名为id`的参数的值。

  • 示例

    php 复制代码
    // 假定 URL 为 example.com/index.php?name=Alice  
    if (isset($_GET['name'])) {  
        $name = $_GET['name'];  
        echo "Hello, $name!";  
    } else {  
        echo "Name parameter is not set";  
    }

4. $_POST

  • 描述:POST也是一个关联数组,用于收集通过POST方法提交的表单数据。与_GET不同,$_POST方法将用户输入的数据发送到服务器,但不会在URL中显示这些数据。

  • 用法:POST数组的键是表单元素的名称,值是用户输入的数据。例如,'_POST['name']`将返回提交的名称值。

  • 示例

    php 复制代码
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">  
        Name: <input type="text" name="name"><br>  
        <input type="submit">  
    </form>  
      
    <?php  
    if ($_SERVER["REQUEST_METHOD"] == "POST") {  
        $name = $_POST['name'];  
        if (empty($name)) {  
            echo "Name is empty";  
        } else {  
            echo "Hello, $name!";  
        }  
    }  
    ?>

5. $_FILES

  • 描述:$_FILES是一个关联数组,用于访问通过HTTP POST方法上传的文件。它包含了上传文件的属性,如文件名、文件类型、文件大小等。

  • 用法:FILES数组的键是表单中'<inputtype="file">'元素的名称,值是一个包含了文件信息的数组。例如,'_FILES['file']['name']`将返回上传文件的名称。

  • 示例

    php 复制代码
    <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>">  
        Select file to upload:  
        <input type="file" name="file"><br>  
        <input type="submit" value="Upload File">  
    </form>  
      
    <?php  
    if ($_SERVER["REQUEST_METHOD"] == "POST") {  
        $target_dir = "uploads/";  
        $target_file = $target_dir . basename($_FILES["file"]["name"]);  
        if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {  
            echo "The file ". htmlspecialchars( basename( $_FILES["file"]["name"])). " has been uploaded.";  
        } else {  
            echo "Sorry, there was an error uploading your file.";  
        }  
    }  
    ?>
  • 描述:$_COOKIE是一个关联数组,包含了客户端发送的HTTP Cookie的值。Cookie是一种在客户端浏览器中存储数据的机制,用于跟踪用户状态和存储用户偏好设置。
  • 用法 :COOKIE数组的键是Cookie的名称,值是Cookie的值。例如,'_COOKIE['username']将返回存储在名为username`的Cookie中的值。
  • 设置Cookie :在PHP中,可以使用setcookie()函数来设置Cookie。

7. $_SESSION

  • 描述:$_SESSION是一个关联数组,用于在不同页面之间存储和访问会话数据。它可以用来跟踪用户会话状态,存储用户信息,以及实现用户登录和注销等功能。

  • 用法 :在PHP脚本中,首先需要调用session_start()函数来启动会话,然后才能使用SESSION数组来存储和访问会话数据。例如,'_SESSION['username']`可以存储当前登录用户的用户名。

  • 示例

    php 复制代码
    session_start();  
    $_SESSION['username'] = 'JohnDoe';  
    // 在另一个页面中访问会话数据  
    session_start();  
    echo 'Hello, ' . $_SESSION['username'];

8. $_REQUEST

  • 描述:$_REQUEST是一个关联数组,包含了通过GET、POST和COOKIE方式提交的参数的值。它可以同时获取GET和POST的参数值,但不建议在生产环境中使用,因为它可能会引入安全风险。
  • 用法 :REQUEST数组的键是参数的名称,值是参数的值。例如,'_REQUEST['name']将返回通过GET或POST方式提交的名为name`的参数的值。
  • 注意事项:由于REQUEST可以获取多种来源的参数,因此在使用之前需要注意安全性和数据一致性。在生产环境中,建议明确使用_GET、POST或_COOKIE来访问特定的参数。

总结

以上介绍了PHP中常用的8个超全局变量,包括GLOBALS、_SERVER、G​ET、_POST、F​ILES、_COOKIE、S​ESSION和_REQUEST。这些变量在PHP脚本中提供了丰富的功能,用于访问和操作各种数据和环境信息。在使用这些变量时,需要注意安全性和数据验证,以确保应用程序的安全性和可靠性。

相关推荐
BingoGo13 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack13 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1234 天前
matlab画图工具
开发语言·matlab
dustcell.4 天前
haproxy七层代理
java·开发语言·前端