首页博客网络编程
关于 PHP 变量最重要的细节之一称为作用域。它定义了可以使用特定变量的位置:PHP 全局变量可以应用于函数之外的任何位置,而局部作用域的全局变量只能在首次声明它的特定方法中使用。
但是,还有一种类型的变量。它们被称为 PHP 超全局变量,可以在任何作用域、文件、类或函数中访问。
至于它们的数据类型,PHP 超全局变量是包含外部来源数据(例如,来自 cookie 或表单的信息)的 PHP 数组。这正是您不需要特定代码来访问它们的原因。在本教程中,我们将介绍最常用的那些,并为您提供一些示例。
超全局变量没有固定的范围:它们在所有超全局变量中都可用。因此,它们与本地和全球贵重物品不同。
这种类型的变量从 PHP 4.1 开始就已经存在了。
正如我们所提到的,一些 PHP 超全局变量比其他超全局变量使用得更多。看看一些你最有可能在日常任务中有用的:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_SESSION
$_COOKIE
$_FILES
$_ENV
现在,我们将使用示例仔细研究前五个。
此变量是 PHP 超全局变量,需要访问脚本上任何位置产生的 PHP 变量。
在此示例中,使用超全局来访问 PHP 变量,以找出:$GLOBALS
$z
例复制
<?php$x = 50; $y = 5; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; ?>
此变量包含数据调用路径、标头和脚本位置。
在下面的代码中,您可以看到此变量中几个元素的用法:
例复制
<?phpecho $_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'];?>
下表显示了变量的关键元素:PHP $_SERVER
元素/代码 | 描述 |
---|---|
$_SERVER[“PHP_SELF”] | 用于使 PHP 获取当前脚本文件名 |
$_SERVER['GATEWAY_INTERFACE'] | 用于使 PHP 获取正在使用的 CGI(通用网关接口)版本的数量 |
$_SERVER['SERVER_ADDR'] | 用于使 PHP 获取主机服务器 IP 地址 |
$_SERVER['SERVER_NAME'] | 用于使 PHP 获得一个名称 |
$_SERVER[“SERVER_SOFTWARE”] | 用于使 PHP 获取返回 ID 字符串 (Apache/2.1.10) |
$_SERVER[“SERVER_PROTOCOL”] | 用于使 PHP 获取数据协议的修订版和名称 (HTTP/1.0) |
$_SERVER[“REQUEST_METHOD”] | 用于使 PHP 获取页面访问请求(POST、GET) |
$_SERVER[REQUEST_TIME“] | 用于使 PHP 获取请求开始的时间戳 (1234568790) |
$_SERVER[“QUERY_STRING”] | 用于使 PHP 获取一串查询 |
$_SERVER[“HTTP_ACCEPT”] | 用于使 PHP 从当前请求中获取接受标头。 |
$_SERVER['HTTP_ACCEPT_CHARSET'] | 用于使 PHP 获取 accept_charset 标头(utf-8、ISO-8789-2) |
$_SERVER[“HTTP_HOST”] | 用于使 PHP 获取主机标头 |
$_SERVER['HTTP_REFERER'] | 用于使 PHP 获取访问的当前页面的完整 URL。不是很可靠,也不是所有用户代理都完全支持。 |
$_SERVER['HTTPS'] | 查询到 HTTP 协议的脚本(安全) |
$_SERVER['REMOTE_ADDR'] | 用于使PHP获取用户端页面IP地址 |
$_SERVER[REMOTE_HOST“] | 用于使 PHP 获取主机名 |
$_SERVER['REMOTE_PORT'] | 用于使PHP获取用户的机器端口 |
$_SERVER['SCRIPT_FILENAME'] | 用于使 PHP 获取绝对路径名 |
$_SERVER['SERVER_ADMIN'] | 用于使 PHP 获得给定值SERVER_ADMIN |
$_SERVER['SERVER_PORT'] | 用于使PHP获取服务器机器的端口 |
$_SERVER['SERVER_SIGNATURE'] | 用于使 PHP 获取虚拟主机名和服务器版本 |
$_SERVER[“PATH_TRANSLATED”] | 用于使 PHP 获取文件系统的路径 |
$_SERVER['SCRIPT_NAME'] | 用于使 PHP 获取路径 |
$_SERVER['SCRIPT_URI'] | 用于使 PHP 获取 URI |
需要此超全局才能从提交的 HTML 表单接收数据。
例复制
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") { // collect value of input field $name = $_REQUEST['fname']; if (empty($name)) { echo "Name is empty"; } else { echo $name; } }?>
$_POST
为了传递 PHP 变量或使用 HTML 表单提交表单后从表单中收集数据,需要超全局。method="post"
您可以在下面看到一个带有“提交”按钮和输入字段的表单。单击按钮时提交数据,然后发送到标记的操作属性中所述的文件。在我们的例子中,我们将数据发送到文件本身。您可以使用任何其他 PHP 文件通过更改文件名来接收表单数据。<form>
最后一步是使用超全局来收集输入字段中的数据:$_POST
例复制
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") { // collect value of input field $name = $_POST['fname']; if (empty($name)) { echo "Name is empty"; } else { echo $name; } }?></body> </html>
$_GET
需要从表单中收集数据,并通过 URL 发送数据。method="get"
假设有一个带有超链接的 HTML 页面:
例复制
<html> <body> <a href="learn_get.php?subject=PHP&web=learn.xyz">Test $GET</a> </body> </html>
单击“测试$GET”链接后,以下参数(和)将传递给learn_get.php。使用 ,可以访问 learn_get.php 中的值。web
subject
$_GET
在下面的示例中,您可以看到 learn_get.php 中的代码:
例复制
<html> <body><?php echo "Learn " . $_GET['subject'] . " at " . $_GET['web'];?></body> </html>
声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!
广告位
广告位