当前位置: 首页 > article >正文

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

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

1. $GLOBALS

  • 描述:GLOBALS是一个包含了全局作用域中可用的全部变量的全局组合数组。在函数或方法中,可以通过GLOBALS数组来访问全局作用域中的变量。
  • 用法:GLOBALS数组的键是变量名,值是对应变量的值。例如,在全局作用域中定义了一个变量‘foo,那么在函数内部可以通过$GLOBALS['foo']`来访问它。
  • 示例
    $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是一个包含了服务器和执行环境信息的数组。它提供了诸如头信息、路径、脚本位置以及请求方法等信息。
  • 用法:S​ERVER数组的键是服务器提供的变量名,值是相应的信息。例如,‘_SERVER['PHP_SELF']表示当前执行脚本的文件名,$_SERVER['SERVER_NAME']`表示当前运行脚本所在服务器的主机名。
  • 示例
    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

  • 描述:G​ET是一个关联数组,用于收集通过URL参数传递的数据。当使用GET方法发送HTTP请求时,参数会附加在URL的末尾,并通过_GET数组来访问。
  • 用法:G​ET数组的键是URL参数的名称,值是参数的值。例如,‘_GET['id']将返回URL中名为id`的参数的值。
  • 示例
    // 假定 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

  • 描述:P​OST也是一个关联数组,用于收集通过POST方法提交的表单数据。与_GET不同,$_POST方法将用户输入的数据发送到服务器,但不会在URL中显示这些数据。
  • 用法:P​OST数组的键是表单元素的名称,值是用户输入的数据。例如,‘_POST['name']`将返回提交的名称值。
  • 示例
    <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方法上传的文件。它包含了上传文件的属性,如文件名、文件类型、文件大小等。
  • 用法:F​ILES数组的键是表单中‘<inputtype="file">‘元素的名称,值是一个包含了文件信息的数组。例如,‘_FILES['file']['name']`将返回上传文件的名称。
  • 示例
    <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.";  
        }  
    }  
    ?>

6. $_COOKIE

  • 描述:$_COOKIE是一个关联数组,包含了客户端发送的HTTP Cookie的值。Cookie是一种在客户端浏览器中存储数据的机制,用于跟踪用户状态和存储用户偏好设置。
  • 用法:C​OOKIE数组的键是Cookie的名称,值是Cookie的值。例如,‘_COOKIE['username']将返回存储在名为username`的Cookie中的值。
  • 设置Cookie:在PHP中,可以使用setcookie()函数来设置Cookie。

7. $_SESSION

  • 描述:$_SESSION是一个关联数组,用于在不同页面之间存储和访问会话数据。它可以用来跟踪用户会话状态,存储用户信息,以及实现用户登录和注销等功能。
  • 用法:在PHP脚本中,首先需要调用session_start()函数来启动会话,然后才能使用S​ESSION数组来存储和访问会话数据。例如,‘_SESSION['username']`可以存储当前登录用户的用户名。
  • 示例
    session_start();  
    $_SESSION['username'] = 'JohnDoe';  
    // 在另一个页面中访问会话数据  
    session_start();  
    echo 'Hello, ' . $_SESSION['username'];

8. $_REQUEST

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

总结

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


http://www.kler.cn/a/331376.html

相关文章:

  • 如何重新设置VSCode的密钥环密码?
  • 半连接转内连接规则的原理与代码解析 |OceanBase查询优化
  • 为何VisualRules更适合技术人员使用
  • 操作系统文件管理
  • MySQL复制问题和解决
  • Restaurants WebAPI(二)——DTO/CQRS
  • WebSocket 2024/9/30
  • MATLAB使用眼图分析QPSK通信系统接收端匹配滤波后的信号
  • windows 11 LTSC 26100.1742 官方简体中文版
  • 免杀对抗—GOC#反VT沙盒资源分离混淆加密
  • 【Flutter】- 基础语法
  • 【go入门】常量
  • Leetcode 11.乘最多水的容器(字节,快手面试题)
  • 探索Spring Boot:实现“衣依”服装电商平台
  • 【Java序列化】使用Java 自带的Serializer进行对象序列化和反序列化
  • 2024年OpenAI DevDay发布实时 API、提示缓存等新功能
  • 软考系统分析师知识点一:绪论
  • Ubuntu20.04如何安装Microsoft Edge浏览器?
  • Linux云计算 |【第四阶段】RDBMS1-DAY5
  • ATLAS/ICESat-2 L3B 每 3 个月网格动态海洋地形图 V001
  • 算法【Java】—— 递归
  • centos环境安装JDK详细教程
  • 在Docker中运行微服务注册中心Eureka
  • 复习HTML(进阶)
  • eNSP网络配置指南:IP设置、DNS、Telnet、DHCP与路由表管理
  • 1.2.2 计算机网络的分层结构(下)