超全局变量
我们已经在 PHP 的变量和数据类型中讨论了PHP中的变量和全局变量。在这篇文章中,我们将学习PHP中的超全局变量。
这些是PHP中专门定义的数组变量,可以方便地获取关于请求或其上下文的信息。在整个脚本中都可以使用超全局变量。这些变量可以从任何函数、类或文件访问,而不需要执行任何特殊任务,如声明任何全局变量等。它们主要用于在应用程序中从一个页面存储和从另一个页面获取信息等。
下面是PHP中可用的超全局变量列表:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_GET
- $_POST
- $_SESSION
- $_COOKIE
- $_FILES
- $_ENV
现在让我们来详细了解一下这些超全局变量:
- $GLOBALS:这是一个超全局变量,用于从PHP脚本的任何地方访问全局变量。PHP将所有全局变量存储在数组$GLOBALS[]中,它由一个数组组成,数组中有一个索引,索引中保存了全局变量名,可以访问该变量。
下面的程序演示了在PHP中使用$GLOBALS:
1234567891011<?php$x = 300;$y = 200;function multiplication(){$GLOBALS['z'] = $GLOBALS['x'] * $GLOBALS['y'];}multiplication();echo $z;?>输出:
160000在上面的代码中,两个全局变量被声明为$x和$y,它们被赋值给它们。然后定义一个函数multiplication(),将$x和$y的值相乘,并存储在全局数组中定义的另一个变量$z中。
- $_SERVER:这是一个PHP超级全局变量,它存储有关头文件、路径和脚本位置的信息。其中一些元素用于从超全局变量$_SERVER获取信息。
下面的程序演示了在PHP中使用$_SERVER:
123456789101112<?phpecho $_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>"?>输出:
12345/sky8g/index.phplocalhostlocalhost:443Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...../sky8g/index.php在上面的代码中,我们使用$_SERVER元素来获取一些信息。我们得到了正在使用’ PHP_SELF ‘元素的当前文件名。然后我们得到当前使用‘SERVER_NAME’元素使用的服务器名。然后通过’ HTTP_HOST ‘获得主机名。
- $_REQUEST:它是一个超全局变量,用于在提交HTML表单后收集数据。$_REQUEST不常用,因为$_POST和$_GET执行相同的任务,并且被广泛使用。
下面是解释$_REQUEST如何工作的HTML和PHP代码:
1234567891011121314151617181920<!DOCTYPE html><html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">NAME: <input type="text" name="fname"><button type="submit">SUBMIT</button></form><?phpif ($_SERVER["REQUEST_METHOD"] == "POST") {$name = htmlspecialchars($_REQUEST['fname']);if(empty($name)){echo "Name is empty";} else {echo $name;}}?></body></html>输出:
在上面的代码中,我们创建了一个表单,该表单以用户的名称作为输入,并在单击submit按钮时打印它的名称。我们使用action属性中指定的$_SERVER[‘ PHP_SELF ‘]元素将表单中接受的数据传输到相同的页面,因为我们使用PHP代码操作相同页面中的数据。使用$_REQUEST超全局数组变量检索数据 - $_POST:它是一个超全局变量,用于在提交HTML表单后收集数据。当表单使用方法post传输数据时,该数据在查询字符串中不可见,因为此方法中维护的是安全级别。
下面是解释$_POST如何工作的HTML和PHP代码:
12345678910111213141516171819<!DOCTYPE html><html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"><label for="name">Please enter your name: </label><input name="name" type="text"><br><label for="age">Please enter your age: </label><input name="age" type="text"><br><input type="submit" value="Submit"><button type="submit">SUBMIT</button></form><?php$nm=$_POST['name'];$age=$_POST['age'];echo "<strong>".$nm." is $age years old.</strong>";?></body></html>输出:
在上面的代码中,我们创建了一个表单,它接受用户的名称和年龄,并在用户提交数据时使用$_POST超全局变量访问数据。因为每个超全局变量都是一个数组,所以它可以存储多个值。因此,我们从$_POST变量中检索名称和年龄,并将它们存储在$nm和$age变量中。 - $_GET: $_GET是一个超全局变量,用于在提交HTML表单后收集数据。当表单使用方法get传输数据时,数据在查询字符串中是可见的,因此值不会被隐藏。$_GET超级全局数组变量存储URL中的值。
下面是解释$_GET如何工作的HTML和PHP代码:
12345678910111213<!DOCTYPE html><html><head><title></title></head><body bgcolor="cyan"><?php$name = $_GET['name'];$city = $_GET['city'];echo "<h1>This is ".$name." of ".$city."</h1><br>";?></body></html>例如:访问https://www.sky8g.com/one.php?name=张三&city=上海
php和参数。由于默认方法是get,这些参数将使用get方法传递到下一页,它们将在地址栏中可见。当我们想要将值传递给一个地址时,它们会使用一个问号?附加到地址上。
输出:1这是上海的张三