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.pswp.cn/news/912944.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912944.shtml

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

相关文章

NumPy-核心函数concatenate()深度解析

NumPy-核心函数concatenate深度解析 一、concatenate()基础语法与核心参数函数签名与核心作用基础特性&#xff1a;形状匹配规则 二、多维数组拼接实战示例1. 一维数组&#xff1a;最简单的序列拼接2. 二维数组&#xff1a;按行与按列拼接对比按行拼接&#xff08;垂直方向&…

aws(学习笔记第四十八课) appsync-graphql-dynamodb

aws(学习笔记第四十八课) appsync-graphql-dynamodb 使用graphql来方便操作dynamodb 理解graphql中的graphql api&#xff0c;schema&#xff0c;resolver 学习内容&#xff1a; graphqlgraphql apischemaresolver 1. 代码连接和修改 1.1 代码链接 代码链接&#xff08;app…

关于微前端框架micro,子应用设置--el-primary-color失效的问题

设置了manualChunks导致失效,去掉即可,比较小众的问题 下面是deepseek的分析 关于 manualChunks 导致 Element Plus 主题变量失效的问题 你找到的确实是问题的关键所在。这个 manualChunks 配置影响了 Element Plus 样式和变量的加载顺序&#xff0c;从而导致主题变量失效。…

MySQL 学习 之 你还在用 TIMESTAMP 吗?

目录 1. 弊端1.1. 取值范围1.2. 时区依赖1.3. 隐式转换 2. 区别3. 解决 1. 弊端 1.1. 取值范围 TIMESTAMP 的取值范围为 1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC&#xff0c;超出范围的数据会被强制归零或触发异常‌。 具体表现为在基金债券等业务中&#xff0…

java中字节和字符有何区别,为什么有字节流和字符流?

在Java中&#xff0c;字节&#xff08;byte&#xff09;和字符&#xff08;char&#xff09;是两种不同的数据类型&#xff0c;它们的主要区别在于所表示的数据单位、用途以及编码方式,字节流和字符流的区分就是为了解决编码问题。 字节&#xff08;byte&#xff09;&#xff…

伴随矩阵 线性代数

伴随矩阵的定义 伴随矩阵的作用是什么&#xff1f;我们可以看到其伴随矩阵乘上自己等于一个数&#xff08;自身的行列式&#xff09;乘以E&#xff0c;所以对于一个方阵来说&#xff0c;其逆矩阵就是自己的伴随矩阵的倍数。 所以说伴随矩阵的作用就是用来更好的求解逆矩阵的。…

百胜软件获邀走进华为,AI实践经验分享精彩绽放

在数字化浪潮席卷全球的当下&#xff0c;零售行业正经历着深刻变革&#xff0c;人工智能技术成为重塑行业格局的关键力量。6月26日&#xff0c;“走进华为——智领零售&#xff0c;AI赋能新未来”活动在华为练秋湖研发中心成功举办。百胜软件作为数字零售深耕者&#xff0c;携“…

六种扎根理论的编码方法

一、实境编码 1.概念&#xff1a;实境编码是一种基于参与者原生语言的质性编码方法&#xff0c;其核心在于直接采用研究对象在访谈、观察或文本中使用的原始词汇、短语或独特表达作为分析代码。该方法通过保留数据的"原生态"语言形式&#xff08;如方言、隐喻、习惯用…

【Spring篇09】:制作自己的spring-boot-starter依赖1

文章目录 1. Spring Boot Starter 的本质2. Starter 的模块结构&#xff08;推荐&#xff09;3. 制作 xxx-spring-boot-autoconfigure 模块3.1 添加必要的依赖3.2 编写具体功能的配置类3.3 编写自动化配置类 (AutoConfiguration)3.4 注册自动化配置类 (.imports 或 spring.fact…

Qt6之qml自定义控件开发流程指南

Qt6之qml自定义控件开发流程指南 &#x1f6e0;️ 一、基础控件创建 定义 QML 文件 在工程中新建 QML 文件&#xff08;如 CustomButton.qml&#xff09;&#xff0c;文件名首字母大写。 使用基础组件&#xff08;如 Rectangle、Text&#xff09;构建控件逻辑&#xff0c;通过…

Vue简介,什么是Vue(Vue3)?

什么是Vue&#xff1f; Vue是一款用于构建用户界面的JavaScript框架。 它基于标准HTML、CSS和JavaScript构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单的还是复杂地界面&#xff0c;Vue都可以胜任。 声明式渲染…

从零开始构建Airbyte数据管道:PostgreSQL到BigQuery实战指南

作为数据工程师&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;流程是日常工作的核心。然而&#xff0c;构建和维护数据管道往往耗时且复杂。幸运的是&#xff0c;开源工具Airbyte提供了一种更便捷的解决方案——它支持350预构建连接器&#xff0c;允许通过无…

JavaScript的初步学习

目录 JavaScript简介 主要特点 主要用途 JavaScript的基本特性 JavaScript的引入方式 1. 内联方式 (Inline JavaScript) 2. 内部方式 (Internal JavaScript / Embedded JavaScript) 3. 外部方式 (External JavaScript) JavaScript的语法介绍 1.书写语法 2.输出语句 3.…

洛谷P1379 八数码难题【A-star】

P1379 八数码难题 八数码难题首先要进行有解性判定&#xff0c;避免无解情况下盲目搜索浪费时间。 有解性判定 P10454 奇数码问题 题意简述 在一个 n n n \times n nn 的网格中进行&#xff0c;其中 n n n 为奇数&#xff0c; 1 1 1 个空格和 [ 1 , n 2 − 1 ] [1,n^2…

MySQL Buffer Pool 深度解析:从架构设计到性能优化(附详细结构图解)

在 MySQL 数据库的世界里&#xff0c;有一个决定性能上限的"神秘仓库"——Buffer Pool。它就像超市的货架&#xff0c;把最常用的商品&#xff08;数据&#xff09;放在最方便拿取的地方&#xff0c;避免每次都要去仓库&#xff08;磁盘&#xff09;取货。今天我们就…

使用numpy的快速傅里叶变换的一些问题

离散傅里叶变换&#xff08;DFT&#xff09;的频率&#xff08;或波数&#xff09;确实主要由采样点数和物理步长决定。 最高波数和最小波长的乘积是1。单位长度内波的周期数。 &#xff08;注意角波数是 k 2 π λ k \frac{2 \pi}{\lambda} kλ2π​&#xff09; 使用numpy…

DVWA靶场通关笔记-CSRF(High级别)

目录 一、CSRF Token 二、代码审计&#xff08;High级别&#xff09; 1、渗透准备 2、源码分析 三、渗透实战 1、渗透准备 2、修改URL重放失败 3、burpsuite尝试重放失败 4、安装CSRF Token Tracker 5、安装logger插件 6、配置CSRF Token Tracker 7、bp再次重放报文…

Redis实战:数据安全与性能保障

数据安全 持久化策略 RDB持久化&#xff1a;通过创建快照将内存中的数据写入到磁盘上的RDB文件中。可以在配置文件中设置save参数来指定在多少秒内有多少次写操作时触发快照保存。例如&#xff0c;save 900 1表示900秒内至少有1次写操作时保存快照。 AOF持久化&#xff1a;将每…

人脸活体识别3:C/C++实现实时眨眼、张嘴、点头、摇头检测

> 当AI能识破照片与真人的区别,我们才真正跨入生物识别安全时代 --- ### 一、活体检测:数字世界的守门人 **传统人脸识别的致命缺陷**: - 高清照片欺骗成功率 > 85% - 视频回放攻击成本 < $50 - 3D面具破解率高达72% **我们的解决方案**: ```mermaid graph …

【Linux】AlmaLinux 无法使用root用户登录cockpit控制台问题解决

在虚拟机安装AlmaLinux 9.6&#xff0c;安装过程中需要允许使用root用户和SSH协议登录服务器。但是&#xff0c;在使用root用户登录cockpit管理后台时&#xff0c;系统提示“权限被拒绝”。 经过查询资料&#xff0c;可以通过下面的方法来解决此问题。 编辑 /etc/cockpit/disa…