PHP 超级全局变量 功能 用法运用 详解

news/2025/3/15 13:13:43/文章来源:https://www.cnblogs.com/baisemoshui/p/18773535

PHP 超级全局变量是一类特殊的变量,它们在任何函数、类或文件中都可以访问,为开发者提供了处理 HTTP 请求和响应的强大工具。以下是 PHP 超级全局变量的功能、用法及详细解释:

一、超级全局变量的种类

PHP 中常用的超级全局变量包括以下几种:

  1. $GLOBALS

    • 功能:包含了全局作用域中可用的全部变量的全局组合数组。
    • 用法:在函数或方法中,可以通过 $GLOBALS 数组来访问全局作用域中的变量。
    • 示例:
      $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 数组的键是服务器提供的变量名,值是相应的信息。
    • 示例:
      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

    • 功能:用于收集通过 URL 参数传递的数据。
    • 用法:$_GET 数组的键是 URL 参数的名称,值是参数的值。
    • 示例:
      // 假定 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 数组的键是表单元素的名称,值是用户输入的数据。
    • 示例:
      <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

    • 功能:用于访问通过 HTTP POST 方法上传的文件,包含了上传文件的属性,如文件名、文件类型、文件大小等。
    • 用法:$_FILES 数组的键是表单中 <input type="file"> 元素的名称,值是一个包含了文件信息的数组。
    • 示例:
      <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

    • 功能:包含了客户端发送的 HTTP Cookie 的值。Cookie 是一种在客户端浏览器中存储数据的机制,用于跟踪用户状态和存储用户偏好设置。
    • 用法:$_COOKIE 数组的键是 Cookie 的名称,值是 Cookie 的值。
    • 设置 Cookie:在 PHP 中,可以使用 setcookie() 函数来设置 Cookie。
  7. $_SESSION

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

    • 功能:包含了通过 GET、POST 和 COOKIE 方式提交的参数的值。它可以同时获取 GET 和 POST 的参数值,但不建议在生产环境中使用,因为它可能会引入安全风险。
    • 用法:$_REQUEST 数组的键是参数的名称,值是参数的值。
    • 注意事项:由于 $_REQUEST 可以获取多种来源的参数,因此在使用之前需要注意安全性和数据一致性。
  9. $_ENV(在 PHP 5.4.0 之前的版本中可用,但在后续版本中被废弃,建议使用 getenv() 函数来获取环境变量)

    • 功能:用于获取环境变量,如数据库连接信息等。
    • 用法:$_ENV 数组的键是环境变量的名称,值是环境变量的值。

二、超级全局变量的特点

  • 全局性:超级全局变量在 PHP 脚本的全部作用域中都可以访问,无需在函数或方法中声明全局变量。
  • 内置性:这些变量是 PHP 内置的,开发者无需自行定义。
  • 便捷性:超级全局变量为开发者提供了处理 HTTP 请求和响应的便捷方式,减少了手动获取请求参数和会话信息的复杂性。

三、注意事项

  • 在使用超级全局变量时,要注意变量名可能已经被其他变量覆盖,导致数据丢失。
  • 避免敏感信息泄露,在处理用户输入时,要确保对输入数据进行验证和过滤,防止 SQL 注入、XSS 攻击等安全风险。
  • 谨慎使用 $_SESSION,在存储大量数据时,可能会导致性能问题。在使用 $_SESSION 时,要尽量减少存储的数据量,并定期清理无用的会话信息。

综上所述,PHP 超级全局变量为开发者提供了强大的功能,但在使用过程中需要注意相关注意事项。通过灵活运用超级全局变量,可以提高代码的效率和安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/899148.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

82.7K star!大气炫酷UI开源项目,超级火!

shadcn/ui 是一款基于 Radix UI 和 Tailwind CSS 构建的现代化 UI 组件库,专为追求设计品质与开发效率的开发者打造。不同于传统组件库,它提供完全可定制的组件代码模板,让开发者既能享受开箱即用的便利,又能保持对设计系统的完全掌控。嗨,大家好,我是小华同学,关注我们…

20241415 实验一 《Python程序设计》实验报告

20241415 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2414 姓名: 赵邵宁 学号:20241415 实验教师:王志强 实验日期:2025年3月12日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序…

前后端分离开发:如何高效调试API?有工具 vs 无工具全解析

在前后端分离的开发模式中,API 的调试是非常重要的一部分。特别是使用 Java 作为后端开发时,保证接口的功能正确性、性能稳定性,以及响应数据的准确性,都是前端和后端高效协作的关键。本文将结合接口调试的实际开发场景,探讨在有调试工具和没有调试工具两种情况下,如何实…

服务器SSH 仅密钥登录

前言 随着我服务器上Alist资源的增多,服务器【本身】这个存放着Alist内所有密码(虽然都是随机生成的)的存在就显得非常的脆弱。 尽管我的ssh密码选择了随机生成并交给电脑记住,但是服务器被攻破导致全部密码我都得改一遍的后果我承担不起。 另注:因为上传到云盘的重要资料…

JDK7-日历类--java进阶day07

1.Calendar类 用于获取或者修改时间,之前学的Date类,获取和修改时间的方法已经过时2.Calendar对象的创建 Calendar类里面有很多抽象方法,如果创建对象就要全部重写,所以不能直接创建 我们可以使用多态解决创建对象的问题,由于其子类对象也较难创建,所以我们使用下图中的方…

Vue3-DeepSeek-Chat流式AI对话|vite6+vant4+deepseek智能ai聊天助手

原创新作vue3.5+deepseek+vant4+vant4仿DeepSeek-R1流式输出ai聊天对话。 deepseek-vue3-chat : 实战2025智能大模型ai会话,基于Vue3+Vite6+OpenAI集成接入DeepSeek聊天小助手模板,支持流式打字输出效果、浅色/暗黑主题模式、代码高亮显示、针对移动端+PC端适配处理。🐬使用…

Sections 多列混排

学习点@Reusable 装饰器 WaterFlow瀑布流容器 模块组件 代码讲解效果图@Reusable 装饰器使用场景 @Reusable 是一个在 HarmonyOS ArkTS 中使用的装饰器,主要用于自定义组件的复用。从 API version 10 开始,@Reusable 装饰器得到了支持。它的主要功能是当一个标记为 @Reusable…

后缀数组(SA)学习笔记(倍增算法)

倍增求SA后缀数组是一个非常好的东西。一开始看不出来这个东西有什么用,但是它非常的有用。(以下 \(N\) 为字符串长度) 有了后缀数组,我们就可以在 \(O(N \log N)\) 的时间内:得到所有后缀的字典序关系。(最基本的功能) 求出任意两个子串的最长公共前缀 (LCP)。 求出字符…

Chat2DB 数据库客户端邀请码

推荐一款超好用的AI数据库管理工具Chat2DB,支持22种数据库,包括国产的达梦、OpenGuass、OceanBase、TiDB等,还有非关系型MongoDB、Redis等,快来试试吧! 🔥 官网:https://chat2db-ai.com/ 🔥 邀请码:622888 邀请码介绍:https://docs.chat2db-ai.com/docs/settings/i…

基于Java的全栈入门学习路线

Java全栈JavaSE数据库前端JavaWebSSM框架Linux学完以上可独立开发,下面是微服务协同开发 SpringBootSpringCloudHadoop

latex中如何重复引用已经存在的脚注?

在使用latex写论文的时候,如果要添加一个脚注,可以使用 \footnote{...}如果第二次出现相同内容的脚注,再写一次\footnote{...}会导致出现两个脚注,我们希望两处脚注链接到一处,可以这样写: 第一处脚注添加label: \footnote{...\label{llama3.2}}第二处及之后的脚注直接引…