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

PHP语法基础篇(八):超全局变量

超全局变量是在 PHP 4.1.0 中引入的,并且是内置变量,可以在所有作用域中始终可用。
PHP 中的许多预定义变量都是"超全局的",这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
PHP 超全局变量包括:
  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION
本篇文章将记录一些超全局变量的学习过程,其余部分将在后面的篇章中说明。

一、$GLOBALS

$GLOBALS 是一个包含所有全局变量的数组,数组的键就是变量的名字。

function test() {$foo = "局部变量";echo '$foo在全局作用域中的值:' . $GLOBALS["foo"] . "<br>";echo '$foo在当前作用域中的值:' . $foo . "<br>";
}$foo = "全局变量";
test();

输出

$foo在全局作用域中的值:全局变量
$foo在当前作用域中的值:局部变量

二、$_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等信息的数组。这个数组中的条目由 Web 服务器创建,所以不能保证每个 Web 服务器都提供全部条目;服务器可能会忽略一些,或者提供此处没有列举出来的其它内容。

下表列出了 $_SERVER 中重要的元素: 

元素/代码

描述

$_SERVER['PHP_SELF']

返回当前执行脚本的文件名。

$_SERVER['GATEWAY_INTERFACE']

返回服务器使用的 Common Gateway Interface (CGI) 的版本。

$_SERVER['SERVER_ADDR']

返回主机服务器的 IP 地址。

$_SERVER['SERVER_NAME']

返回主机服务器的名称(如 www.w3school.com.cn)。

$_SERVER['SERVER_SOFTWARE']

返回服务器标识字符串(如 Apache/2.2.24)。

$_SERVER['SERVER_PROTOCOL']

返回信息协议的名称和修订号(如 HTTP/1.1)。

$_SERVER['REQUEST_METHOD']

返回用于访问页面的请求方法(如 POST)。

$_SERVER['REQUEST_TIME']

返回请求开始的时间戳(如 1377687496)。

$_SERVER['QUERY_STRING']

如果页面是通过查询字符串访问的,则返回查询字符串。

$_SERVER['HTTP_ACCEPT']

返回当前请求的 Accept 头。

$_SERVER['HTTP_ACCEPT_CHARSET']

返回当前请求的 Accept_Charset 头(如 utf-8,ISO-8859-1)。

$_SERVER['HTTP_HOST']

返回当前请求的 Host 头。

$_SERVER['HTTP_REFERER']

返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持它)。

$_SERVER['HTTPS']

脚本是否通过安全的 HTTP 协议查询。

$_SERVER['REMOTE_ADDR']

返回用户查看当前页面的 IP 地址。

$_SERVER['REMOTE_HOST']

返回用户查看当前页面的主机名。

$_SERVER['REMOTE_PORT']

返回用户在机器上用于与 Web 服务器通信的端口。

$_SERVER['SCRIPT_FILENAME']

返回当前执行脚本的绝对路径名。

$_SERVER['SERVER_ADMIN']

返回在 Web 服务器配置文件中为 SERVER_ADMIN 指令给定的值。

$_SERVER['SERVER_PORT']

返回服务器上 Web 服务器用于通信的端口(如 80)。

$_SERVER['SERVER_SIGNATURE']

返回添加到服务器生成页面的服务器版本和虚拟主机名。

$_SERVER['PATH_TRANSLATED']

返回当前脚本基于文件系统的路径。

$_SERVER['SCRIPT_NAME']

返回当前脚本的路径。

$_SERVER['SCRIPT_URI']

返回当前页面的 URI。

示例 

echo $_SERVER["SERVER_NAME"] . "<br>";
echo $_SERVER["HTTP_HOST"] . "<br>";
echo $_SERVER["SCRIPT_NAME"] . "<br>";

三、$_REQUEST

$_REQUEST 是 PHP 的一个超全局变量,它包含了提交的表单数据和所有的 cookie 数据,默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。也就是说,我们可以通过 $_REQUEST 关键字加上表单字段或 cookie 的名称来访问这些数据。

接下来我们创建一个 HTML 的表单,然后使用 $_REQUEST 来获取表单提交的数据,然后将获取到的表单数据显示在页面上。

<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">名字:<input type="text" name="username" /><input type="submit" /></form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {$name = htmlspecialchars($_REQUEST["username"]);if (!empty($name)) {echo "<h1>名字是:$name</h1>";}}?></body>
</html>

四、$_POST

当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencoded(表单数据以键值对的形式编码并发送到服务器。它是 HTML 表单默认的编码方式。) 或 multipart/form-data(用于在 Web 表单中上传文件或提交包含二进制数据的表单。它允许在单个 HTTP 请求中发送多个不同类型的数据(如文本字段和文件)。) 时,会将变量以关联数组形式传入当前脚本。

<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">名字:<input type="text" name="username" /><input type="submit" /></form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {$name = htmlspecialchars($_POST["username"]);if (!empty($name)) {echo "<h1>名字是:$name</h1>";}}?></body>
</html>

五、$_GET

通过 URL 参数(又叫查询字符串)传递给当前脚本的变量的数组。注意:该数组不仅仅对表单 method 为 GET 的请求生效,而是会针对所有带 查询字符串 的请求。

<a href="demo_get.php?name=Hello">测试 $_GET</a>

demo_get.php

<?php
echo "<h1>" . $_GET["name"] . "</h1>";

六、其它超全局变量

其它的超全局变量在这里只做简单的说明,具体的使用会在后续的篇章中给出。

$_FILES — HTTP 文件上传变量:通过 HTTP POST 方式上传到当前脚本的项目的数组。

$_ENV — 环境变量:通过环境方式传递给当前脚本的变量的数组。这些变量被从 PHP 解析器的运行环境导入到 PHP 的全局命名空间。很多是由支持 PHP 运行的 Shell 提供的,并且不同的系统很可能运行着不同种类的 Shell,所以 $_ENV 数组中的内容是和当前运行环境相关的。

$_COOKIE — HTTP Cookies:通过 HTTP Cookies 方式传递给当前脚本的变量的数组。

$_SESSION — Session 变量:当前脚本可用 SESSION 变量的数组。

http://www.xdnf.cn/news/1079155.html

相关文章:

  • 转录组分析流程(零):流程介绍
  • 【二分】-----【Music Notes S】
  • 【Git】同时在本地使用多个github账号进行github仓库管理
  • 通过Curtain 解决方案保障BIM模型安全共享—建筑业的防泄密实战
  • react-打包和本地预览 ——打包优化
  • 【数据结构】C++的unordered_map/set模拟实现(开散列(哈希桶)作底层)
  • npm 命令入门指南(前端小白版)
  • contenteditable网页富文本编辑无法选中图片
  • 从0到1实战!用Docker部署Qwerty Learner输入法的完整实践过程
  • curl for android
  • Linux多线程(十三)之【POSIX信号量基于环形队列的生产消费模型】
  • OpenCV CUDA模块设备层-----在 GPU上高效地执行两个uint类型值的最小值比较函数vmin2()
  • LeetCode 317 最短距离选址问题详解(Swift 实现 + BFS 多源遍历)
  • 高边驱动 低边驱动
  • 多模态AI Agent技术栈解析:视觉-语言-决策融合的算法原理与实践
  • Kafka生态整合深度解析:构建现代化数据架构的核心枢纽
  • JA3指纹在Web服务器或WAF中集成方案
  • 专题:2025即时零售与各类人群消费行为洞察报告|附400+份报告PDF、原数据表汇总下载
  • MacOS Safari 如何打开F12 开发者工具 Developer Tools
  • 打造一个可维护、可复用的前端权限控制方案(含完整Demo)
  • 请求未达服务端?iOS端HTTPS链路异常的多工具抓包排查记录
  • 【CSS揭秘】笔记
  • 网络基础(3)
  • HTML初学者第二天
  • 利用tcp转发搭建私有云笔记
  • Chart.js 安装使用教程
  • 【强化学习】深度解析 GRPO:从原理到实践的全攻略
  • 怎样理解:source ~/.bash_profile
  • vscode vim插件示例json意义
  • 电子电气架构 --- SOVD功能简单介绍