PHP超全局变量实现原理及代码解析


Posted in PHP onSeptember 01, 2020

超全局变量在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量。

PHP 超全局变量

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

本节会介绍一些超全局变量,并会在稍后的章节讲解其他的超全局变量。

$GLOBALS — 引用全局作用域中可用的全部变量

$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。

PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

下面的例子展示了如何使用超级全局变量 $GLOBALS:

实例

<?php 
$x = 75; 
$y = 25;
 
function addition() { 
 $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
 
addition(); 
echo $z; 
?>

在上面的例子中,由于 z 是 $GLOBALS 数组中的变量,因此在函数之外也可以访问它。

PHP $_SERVER

$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。

下面的例子展示了如何使用 $_SERVER 中的某些元素:

实例

<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

下表列出了您能够在 $_SERVER 中访问的最重要的元素:

元素/代码 描述
$_SERVER['PHP_SELF'] 返回当前执行脚本的文件名。
$_SERVER['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.0”)。
$_SERVER['REQUEST_METHOD'] 返回访问页面使用的请求方法(例如 POST)。
$_SERVER['REQUEST_TIME'] 返回请求开始时的时间戳(例如 1577687494)。
$_SERVER['QUERY_STRING'] 返回查询字符串,如果是通过查询字符串访问此页面。
$_SERVER['HTTP_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'] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
$_SERVER['SERVER_PORT'] Web 服务器使用的端口。默认值为 “80”。
$_SERVER['SERVER_SIGNATURE'] 返回服务器版本和虚拟主机名。
$_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。
$_SERVER['SCRIPT_NAME'] 返回当前脚本的路径。
$_SERVER['SCRIPT_URI'] 返回当前页面的 URI。

PHP $_REQUEST

PHP $_REQUEST 用于收集 HTML 表单提交的数据。

下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:

实例

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>

</body>
</html>

PHP $_POST

PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。

下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。如果您希望使用另一个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来收集输入字段的值:

实例

<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php 
$name = $_POST['fname'];
echo $name; 
?>

</body>
</html>

PHP $_GET

PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。

$_GET 也可以收集 URL 中的发送的数据。

假设我们有一张页面含有带参数的超链接:

<html>
<body>

<a href="test_get.php?subject=PHP&web=W3school.com.cn" rel="external nofollow" >测试 $GET</a>

</body>
</html>

当用户点击链接 "测试 $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。

下面的例子是 "test_get.php" 中的代码:

实例

<html>
<body>

<?php 
echo "在 " . $_GET['web'] . " 学习 " . $_GET['subject'];
?>

</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
深入PHP curl参数的详解
Jun 17 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
Yii分页用法实例详解
Dec 04 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
php将图片保存为不同尺寸图片的图片类实例
Mar 30 PHP
示例详解Laravel重置密码代码重构
Aug 10 PHP
统计PHP目录中的文件数方法
Mar 05 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 #PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 #PHP
PHP数组Key强制类型转换实现原理解析
Sep 01 #PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 #PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 #PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 #PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 #PHP
You might like
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
Python列表切片用法示例
2017/04/19 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
基于python实现名片管理系统
2018/11/30 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
幼儿园老师辞职信
2014/01/20 职场文书
《可爱的动物》教学反思
2014/02/22 职场文书
经济信息系毕业生自荐信范文
2014/03/15 职场文书
新法人代表任命书
2014/06/06 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
学校德育工作总结2015
2015/05/11 职场文书
护理自荐信
2019/05/14 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Django分页器的用法你都了解吗
2021/05/26 Python
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js