超级全局在PHP 4.1.0版本引入,并内置变量,它们总是在所有的范围内有效。
PHP全局变量 - 超全局
在PHP中的几个预定义变量"superglobals" ,这意味着它们始终可以访问,无论范围-你可以从任何函数,类或文件的访问,而不必做任何特殊。
PHP的全局变量是:
- $ GLOBALS
- $ _ SERVER
- $ _REQUEST
- $ _ POST
- $ _GET
- $ _FILES
- $ _ENV
- $ _COOKIE
- $ _SESSION
本章将介绍一些超全局,其余的将在后面的章节来解释。
PHP $ GLOBALS
$ GLOBALS是用于从任何位置访问在PHP脚本全局变量(也从函数或方法中)一个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是一个PHP超全局变量持有约标题,路径和脚本位置的信息。
下面的例子演示了如何使用某些$ _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'] | 返回主服务器的名称(such as www.w3ii.com) |
$ _ SERVER [ 'SERVER_SOFTWARE'] | 返回服务器标识字符串(such as Apache/2.2.24) |
$ _ SERVER [ 'SERVER_PROTOCOL'] | 返回的名称和版本信息协议(such as HTTP/1.1) |
$ _ SERVER [ 'REQUEST_METHOD'] | 返回用于访问该页面的请求方法(such as POST) |
$ _ SERVER [ 'REQUEST_TIME'] | 返回请求的开始的时间戳(such as 1377687496) |
$ _ SERVER [ 'QUERY_STRING'] | 返回查询字符串,如果该页面通过查询字符串访问 |
$ _ SERVER [ 'HTTP_ACCEPT'] | 返回当前请求的Accept报头 |
$ _ SERVER [ 'HTTP_ACCEPT_CHARSET'] | 返回Accept_Charset头从当前请求(例如UTF-8,ISO-8859-1) |
$ _ SERVER [ 'HTTP_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值(如果你的脚本在虚拟主机上运行,这将是该虚拟主机定义的值) (such as [email protected]) |
$ _ SERVER [ 'SERVER_PORT'] | 返回正在使用的web服务器进行通信的服务器计算机上的端口(such as 80) |
$ _ SERVER [ 'SERVER_SIGNATURE'] | 返回其添加到服务器生成的网页服务器版本和虚拟主机名 |
$ _ SERVER [ 'PATH_TRANSLATED'] | 返回到当前脚本的基于文件系统的路径 |
$ _ SERVER [ 'SCRIPT_NAME'] | 返回当前脚本的路径 |
$ _ SERVER [ 'SCRIPT_URI'] | 返回当前页面的URI |
PHP $ _REQUEST
PHP $ _REQUEST是用来提交HTML表单后收集数据。
下面的例子示出了具有输入字段和提交按钮的形式。 当用户通过点击提交数据"Submit" ,则表格数据被发送到在指定的文件action的属性<form>标记。 在这个例子中,我们指出这个文件本身进行处理表单数据。 如果您想使用其他PHP文件来处理表单数据,替换与您所选择的文件名。 然后,我们就可以使用超级全局变量$ _REQUEST收集输入字段的值:
例
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name
is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
运行示例» PHP $ _ POST
PHP $ _ POST被广泛使用的方法=“邮报”提交HTML表单后,收集表单数据。 $ _ POST还广泛用于传递变量。
下面的例子示出了具有输入字段和提交按钮的形式。 当用户通过点击提交数据"Submit" ,则表格数据被发送到在指定的文件action的属性<form>标记。 在这个例子中,我们指向文件本身进行处理表单数据。 如果您想使用其他PHP文件来处理表单数据,替换与您所选择的文件名。 然后,我们就可以使用超级全局变量$ _ POST收集输入字段的值:
例
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_POST['fname'];
if (empty($name)) {
echo "Name
is empty";
} else {
echo $name;
}
}
?>
</body>
</html>
运行示例» PHP $ _GET
PHP $ _GET也可以使用方法=“获得”提交HTML表单后,收集表单数据。
$ _GET还可以收集在URL发送的数据。
假设我们有一个包含带有参数的超链接的HTML页面:
<html>
<body>
<a href="test_get.php?subject=PHP&web=w3ii.com">Test $GET</a>
</body>
</html>
当用户点击该链接"Test $GET" ,参数"subject"和"web"发送到"test_get.php" ,然后就可以访问他们的价值观"test_get.php"与$ _GET。
下面的例子示出了在代码"test_get.php" :
例
<html>
<body>
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>
</body>
</html>
运行示例» 提示:您将了解更多关于$ _ POST和$ _GET在PHP形式的篇章。