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

什么是超级全局(Superglobals)变量?
超级全局变量是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数组变量中。
输出:

$ _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 " ";
echo $_SERVER['SERVER_NAME'];
echo " ";
echo $_SERVER['HTTP_HOST'];
echo " ";
echo $_SERVER['HTTP_USER_AGENT'];
echo " ";
echo $_SERVER['SCRIPT_NAME'];
echo " "
?>
输出:

在上面的代码中,我们使用$ _SERVER元素来获取一些信息。我们使用'PHP_SELF'元素获取当前处理的文件名,使用'SERVER_NAME'元素获取当前使用的服务器名称,通过'HTTP_HOST'获取主机名。
$ _REQUEST
$ _REQUEST是一个超全局变量,用于在提交HTML表单后收集数据。$ _REQUEST主要不使用,因为$ _POST和$ _GET执行相同的任务并被广泛使用。
注:$ _REQUEST可能导致安全风险。
下面我们就来看看如何使用$ _REQUEST:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = htmlspecialchars($_REQUEST['fname']);
if(empty($name)){
echo "用户名为空";
} else {
echo "用户名为:".$name;
}
}
?>
效果图:

在上面的代码中,我们创建了一个表单,该表单将用户名作为输入,并在单击提交按钮时
输出显示其名称。我们使用action属性中指定的$ _SERVER ['PHP_SELF']元素将表单中接受的数据传输到同一页面,因为我们使用PHP代码操作同一页面中的数据。使用$ _REQUEST超全局数组变量检索数据。
$ _POST
$ _POST是一个超级全局变量,用于在提交数据后从HTML表单收集数据,当用于传输数据的方法是“POST”时。
当表单使用方法post传输数据时,数据在查询字符串中不可见,即在此方法中保持安全级别。
下面我们就来看看如何使用$ _POST:
<?php
$nm=$_POST['name'];
$age=$_POST['age'];
echo "姓名:".$nm.", ".$age."岁";
?>
在上面的代码中,我们创建了一个表单,该表单接受用户的名称和年龄,并在提交数据时使用$ _POST超级全局变量访问数据。
由于每个超全局变量都是一个数组,因此它可以存储多个值。因此,我们从$ _POST变量中检索名称和年龄,并将它们存储在$ nm和$ age变量中。
效果图:

$ _GET
$ _GET是一个超级全局变量,用于在提交数据后从HTML表单中收集数据。当表单使用“GET”方法获取传输数据时,数据在查询字符串中可见,因此不隐藏值。$ _GET超级全局数组变量存储URL中的值。
下面我们就来看看如何使用$ _GET:
Historic Monument
我们实际上只看到了一半的逻辑,让我们理解上面的代码,然后看看其余的逻辑。
在上面的代码中,我们创建了一个QutubMinar的超链接图像,它将把我们带到picture.php页面,并带有参数名称=“QutubMinar”和city =“Delhi”。
也就是说,当我们点击QutubMinar的小图片时,我们将带到下一页picture.php以及参数。
由于默认方法是get,因此这些参数将使用get方法传递到下一页,它们将在地址栏中显示。
当我们想要将值传递给地址时,使用问号(?)将它们附加到地址。
然后将参数写为问号(?)后面的键值对,如以下语句中所指定:

这里的参数name = QutubMinar会附加到地址。
如果我们想要添加更多值,我们可以在每个键值对之后使用&符号(&)添加它们,类似于在name参数之后使用&符号添加city = Delhi。
现在,在点击QutubMinar的图像之后,我们希望显示picture.php页面,并显示参数值。
所以让我们在picture.php页面中为它编写代码。
QutubMinar
<?php
$nm=$_GET['name'];
$city=$_GET['city'];
echo " this is ".$nm." of ".$city."
";
?>
|