首页博客网络编程
PHP 超全局变量
摘要 称为超全局变量的 PHP 数组保存源自外部源的数据,并且可以在所有作用域中访问

关于 PHP 变量最重要的细节之一称为作用域。它定义了可以使用特定变量的位置:PHP 全局变量可以应用于函数之外的任何位置,而局部作用域的全局变量只能在首次声明它的特定方法中使用。

但是,还有一种类型的变量。它们被称为 PHP 超全局变量,可以在任何作用域、文件、类或函数中访问。

至于它们的数据类型,PHP 超全局变量是包含外部来源数据(例如,来自 cookie 或表单的信息)的 PHP 数组。这正是您不需要特定代码来访问它们的原因。在本教程中,我们将介绍最常用的那些,并为您提供一些示例。

内容

PHP 超全局变量:主要提示

  • 超全局变量没有固定的范围:它们在所有超全局变量中都可用。因此,它们与本地和全球贵重物品不同。

  • 这种类型的变量从 PHP 4.1 开始就已经存在了。

最常见的超常变量

正如我们所提到的,一些 PHP 超全局变量比其他超全局变量使用得更多。看看一些你最有可能在日常任务中有用的:

  • $GLOBALS

  • $_SERVER

  • $_REQUEST

  • $_POST

  • $_GET

  • $_SESSION

  • $_COOKIE

  • $_FILES

  • $_ENV

现在,我们将使用示例仔细研究前五个。

$GLOBALS

此变量是 PHP 超全局变量,需要访问脚本上任何位置产生的 PHP 变量。

在此示例中,使用超全局来访问 PHP 变量,以找出:$GLOBALS$z

复制

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

$_SERVER

此变量包含数据调用路径、标头和脚本位置。

在下面的代码中,您可以看到此变量中几个元素的用法:

复制

<?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

$_REQUEST

需要此超全局才能从提交的 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

$_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

$_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 中的值。websubject$_GET

在下面的示例中,您可以看到 learn_get.php 中的代码:

复制

<html>
<body><?php echo "Learn " . $_GET['subject'] . " at " . $_GET['web'];?></body>
</html>


声明提示:若要转载请务必保留原文链接,申明来源,谢谢合作!

本文链接:https://www.gaoxuejun173.top/blog/140

广告位

本文配乐
来说两句吧

该文章已禁止评论

最新评论

广告位