0

0

PHP中的超级全局变量是什么?如何使用?

青灯夜游

青灯夜游

发布时间:2019-02-13 16:49:44

|

7573人浏览过

|

来源于php中文网

原创

php中预定义了一些数组变量,这些变量可以随时在脚本中的任何位置访问,它们被称之为超级全局变量。本篇文章就来带大家认识一下这些超级全局变量,简单了解一下这些变量的用法,希望对大家有所帮助。【视频教程推荐:php教程

PHP中的超级全局变量是什么?如何使用?

什么是超级全局(Superglobals)变量?

超级全局变量是PHP中内置的、特别定义的数组变量。它们可以随时在脚本中的任何位置使用超级全局变量来访问信息。即,不管作用域是什么,都可以轻松获取有关请求或其上下文的信息。

超级全局变量可以从任何函数、类或任何文件访问,而无需执行任何特殊任务,如声明任何全局变量等。它们主要会用于存储和获取应用程序中从一个页面到另一个页面等的信息。

立即学习PHP免费学习笔记(深入)”;

下面是PHP中可用的超全局变量列表:

 ●   $ GLOBALS

 ●   $ _ SERVER

 ●   $ _REQUEST

 ●   $ _GET

 ●   $ _ POST

 ●   $ _SESSION

 ●   $ _COOKIE

 ●   $ _FILES

 ●   $ _ENV

接下来我们来详细介绍一下其中的一些超级全局变量。

$ GLOBALS

$ GLOBALS是一个超全局变量,它存储脚本中声明的所有变量,可用于访问脚本中任何位置的任何变量。

PHP将所有全局变量存储在数组$ GLOBALS []中,这个数组有一个索引,用于保存全局变量名称,可以使用该名称进行访问。

下面我们就来看看如何使用$ GLOBALS:

<?php 
$x = 300; 
$y = 200; 
  
function multiplication(){ 
    $GLOBALS['z'] = $GLOBALS['x'] * $GLOBALS['y']; 
} 
multiplication(); 
echo $z; 
?>

在上面的代码中,声明了两个全局变量$ x和$ y,并赋值300和200。然后定义函数multiplication()以将$ x和$ y值的相乘并存储在GLOBAL数组中定义的另一个变量$ z中。

我们知道变量$ x和$ y不会在函数multiplication()中被访问,因为它们未在其中声明;但我们可以通过使用$ GLOBALS数组变量访问它来实现。

当调用函数square()时,就会执行变量$ x和$ y值的相乘;然后可以直接显示。

获得的相乘结果,因为变量$z也存在于$ GLOBALS数组变量中。

输出:

2.jpg

$ _SERVER

$ _SERVER是一个PHP超级全局变量,用于存储有关标题(标头),路径和脚本位置的信息,即它存储有关Web及其请求的信息。其中的一些元素用于从超全局变量$ _SERVER获取信息。

$ _SERVER变量中使用了许多信息元素。其中一些列表如下:

元件 描述
$ _ SERVER [ 'PHP_SELF']  返回当前正在执行的脚本的文件名。  
$ _ SERVER [ 'SERVER_ADDR'] 返回主机服务器的IP地址。    
$ _ SERVER [ 'SERVER_NAME']    返回主机服务器的名称。    
$ _ SERVER [ 'QUERY_STRING']   如果通过查询字符串访问页面,则返回查询字符串。    
$ _ SERVER [ 'REQUEST_TIME']   返回请求开始的时间戳。    

下面我们就来看看如何使用$ _SERVER:

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

输出:

3.jpg

在上面的代码中,我们使用$ _SERVER元素来获取一些信息。我们使用'PHP_SELF'元素获取当前处理的文件名,使用'SERVER_NAME'元素获取当前使用的服务器名称,通过'HTTP_HOST'获取主机名。

$ _REQUEST

$ _REQUEST是一个超全局变量,用于在提交HTML表单后收集数据。$ _REQUEST主要不使用,因为$ _POST和$ _GET执行相同的任务并被广泛使用。

注:$ _REQUEST可能导致安全风险。

下面我们就来看看如何使用$ _REQUEST:

<!DOCTYPE html>
<html> 
<head>
<meta charset="UTF-8">
   </head>
<body>   
<div class="demo">
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
 用户名: <input type="text" name="fname"> 
 <button type="submit">提交</button> 
</form> 
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $name = htmlspecialchars($_REQUEST['fname']); 
    if(empty($name)){ 
        echo "用户名为空"; 
    } else { 
        echo "用户名为:".$name; 
    } 
} 
?> 
</div>  
</body>   
</html>

效果图:

1.gif

在上面的代码中,我们创建了一个表单,该表单将用户名作为输入,并在单击提交按钮时输出显示其名称。我们使用action属性中指定的$ _SERVER ['PHP_SELF']元素将表单中接受的数据传输到同一页面,因为我们使用PHP代码操作同一页面中的数据。使用$ _REQUEST超全局数组变量检索数据。

$ _POST

$ _POST是一个超级全局变量,用于在提交数据后从HTML表单收集数据,当用于传输数据的方法是“POST”时。

当表单使用方法post传输数据时,数据在查询字符串中不可见,即在此方法中保持安全级别。

下面我们就来看看如何使用$ _POST:

<!DOCTYPE html>
<html> 
<head>
<meta charset="UTF-8">
   </head>
<body>   
<div class="demo">
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
 <label for="name">用户名: </label> 
 <input name="name" type="text"><br> 
 <label for="age">年龄: </label> 
 <input name="age" type="number"><br> 
 <input type="submit" value="提交"> 
</form> 
<?php
$nm=$_POST['name']; 
$age=$_POST['age']; 
echo "<strong>姓名:".$nm.", ".$age."岁</strong>"; 
?> 
</div>  
</body>   
</html>

在上面的代码中,我们创建了一个表单,该表单接受用户的名称和年龄,并在提交数据时使用$ _POST超级全局变量访问数据。

Nanonets
Nanonets

基于AI的自学习OCR文档处理,自动捕获文档数据

下载

由于每个超全局变量都是一个数组,因此它可以存储多个值。因此,我们从$ _POST变量中检索名称和年龄,并将它们存储在$ nm和$ age变量中。

效果图:

4.jpg

$ _GET

$ _GET是一个超级全局变量,用于在提交数据后从HTML表单中收集数据。当表单使用“GET”方法获取传输数据时,数据在查询字符串中可见,因此不隐藏值。$ _GET超级全局数组变量存储URL中的值。

下面我们就来看看如何使用$ _GET:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body bgcolor="cyan">    
 <!--demonstration of $_GET-->
 <h1><font color="red">Historic Monument</font></h1>
 <a href="picture.php?name=QutubMinar&city=Delhi"><img src="qutubminar.jpg" alt="Qutubminar" height="200" width="200"/></a>

</body>
</html>

我们实际上只看到了一半的逻辑,让我们理解上面的代码,然后看看其余的逻辑。

在上面的代码中,我们创建了一个QutubMinar的超链接图像,它将把我们带到picture.php页面,并带有参数名称=“QutubMinar”和city =“Delhi”。

也就是说,当我们点击QutubMinar的小图片时,我们将带到下一页picture.php以及参数。

由于默认方法是get,因此这些参数将使用get方法传递到下一页,它们将在地址栏中显示。

当我们想要将值传递给地址时,使用问号(?)将它们附加到地址。

然后将参数写为问号(?)后面的键值对,如以下语句中所指定:

<a href="picture.php?name=QutubMinar&city=Delhi"><img src="qutubminar.jpg" alt="Qutubminar" height="200" width="200"/></a>

这里的参数name = QutubMinar会附加到地址。

如果我们想要添加更多值,我们可以在每个键值对之后使用&符号(&)添加它们,类似于在name参数之后使用&符号添加city = Delhi。

现在,在点击QutubMinar的图像之后,我们希望显示picture.php页面,并显示参数值。

所以让我们在picture.php页面中为它编写代码。

<head>
<title>QutubMinar</title>
</head>
<body bgcolor="cyan">
 
 <?php
 $nm=$_GET['name'];
 $city=$_GET['city'];
 echo "<h1>       this is ".$nm." of ".$city."</h1><br><br>";
 
 ?>
 <img src="qutubminar.jpg" alt="QutubMinar" height="400" width="500"/>
 
</body>
</html>

在这里,我们使用超全局数组变量$ _GET接收参数name和city的值,并分别存储在变量$ nm和$ city中。

然后使用echo语句显示它们。

QutubMinar的放大图像如下所示。

首先让我们看一下index.php页面运行时的输出。

5.jpg

现在,当我们点击QutubMinar的超链接图像时,我们得到以下输出:

1550047422538840.jpg

$ _SESSION

$ _SESSION是一个预定义的超全局数组变量,用于记住用户的状态以及他想要在整个会话中检索的值。

以前,对服务器的每个请求都是单独的请求。HTML是一种无状态协议。这意味着它无法记住网站中用户访问的页面。但今天我们使用网站,用户可以让网站记住访问过的网页或之前做过的事情,例如购物网站。

会话(SESSION)的设计原因与此相同;会话可以记住用户登录到注销期间的所有操作。

$ _SESSION数组变量用于存储来自任何页面的值,并在任何其他页面中检索它们,而不在URL中传递它们。

在存储任何变量之前,使用session_start()声明启动会话。

$ _COOKIE

$ _COOKIE是一个超级全局数组变量,用于检索cookie的值。

Cookie是由服务器创建的用于标识用户的小文件。每当用户在互联网上请求某些信息时,该请求就会发送到服务器。如果用户第一次连接到该服务器,则服务器识别他的信息并创建具有给用户的标识号的小文件,并将其附加到发送给用户的响应并存储在用户的计算机中。

在此之后,每当用户向该服务器发送请求时,它都携带cookie文件,由此服务器发送响应而不再检查服务器认证。

$ _FILES

$ _FILES是一个超级全局数组变量,用于将上载文件的信息提供给服务器。我们可以检查上传的文件是否已成功上传;也可以使用$ _FILES变量检索文件的详细信息。

$ _ENV

$ _ENV有助于从Web服务器获取/访问环境变量。

PHP中的环境变量是允许脚本从服务器动态获取某些信息的变量。它支持在不断变化的服务器环境中的脚本灵活性。

使用$ _ENV访问任何环境变量的语法如下:

$_ENV[“variable_name”];

例如,我们可以访问temp_pwd变量,如下所示:

<?php
 echo “Temporary Password: ”.$_ENV[“temp_pwd”];
?>

总结:

在这些超级全局数组变量中,变量$ _GET,$ _POST,$ _ SERVER,$ _SESSION被最多使用。$ _REQUEST变量可以执行$ _GET,$ _POST和$ _COOKIE的工作,但需要避免使用它,因为它可能导致安全问题。

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

1

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

39

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

140

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

47

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

90

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

226

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

506

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

170

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 13.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号