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脚本中提供了丰富的功能,用于访问和操作各种数据和环境信息。在使用这些变量时,需要注意安全性和数据验证,以确保应用程序的安全性和可靠性。

相关推荐
草莓熊Lotso13 小时前
Qt 进阶核心:UI 开发 + 项目解析 + 内存管理实战(从 Hello World 到对象树)
运维·开发语言·c++·人工智能·qt·ui·智能手机
2501_9418656313 小时前
从事件驱动到异步架构的互联网工程语法构建与多语言实践分享
java·开发语言·jvm
前端 贾公子16 小时前
v-if 与 v-for 的优先级对比
开发语言·前端·javascript
嗯嗯=17 小时前
python学习篇
开发语言·python·学习
不会c嘎嘎19 小时前
QT中的常用控件 (二)
开发语言·qt
是一个Bug20 小时前
50道核心JVM面试题
java·开发语言·面试
她和夏天一样热20 小时前
【观后感】Java线程池实现原理及其在美团业务中的实践
java·开发语言·jvm
lkbhua莱克瓦2420 小时前
进阶-索引3-性能分析
开发语言·数据库·笔记·mysql·索引·性能分析
郑州光合科技余经理20 小时前
技术架构:上门服务APP海外版源码部署
java·大数据·开发语言·前端·架构·uni-app·php
篱笆院的狗21 小时前
Java 中的 DelayQueue 和 ScheduledThreadPool 有什么区别?
java·开发语言