PHP超全局数组(Superglobals)介绍

PHP超全局数组是指在整个脚本中生效的全局变量,它们是预定义好的变量,可以在任何可见的位置访问。PHP中有以下5个超全局数组:

PHP超全局数组是指在整个脚本中生效的全局变量,它们是预定义好的变量,可以在任何可见的位置访问。PHP中有以下5个超全局数组:

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_COOKIE
  • $_REQUEST
  • $_FILES
  • $_ENV

下面详细介绍一下每一个超全局数组:

1. $GLOBALS

$GLOBALS 是一个包含了全部变量的全局组合数组,变量名就是数组的键名,变量值就是键值。例如:

$a = 10;
$b = 20;

function sum() {
  global $a, $b;
  $GLOBALS['c'] = $a + $b;
}

sum();
echo $GLOBALS['c'];   // 输出 30

在上面的例子中,我们定义了两个变量 $a$b,在 sum() 函数中使用了 global 来访问 $a$b。然后我们将 $a + $b 的结果赋值给 $GLOBALS['c'] 变量,最后在函数外部就可以直接使用 $GLOBALS['c'] 变量来输出结果。

2. $_SERVER

$_SERVER 是一个包含了超级全局变量 $server 中的信息的数组。$server 中的信息包括了很多与服务器相关的元素,例如服务器目前运行的脚本名称,请求中的头信息,请求中的路径,客户端的 IP 地址,请求的方法等等。

// 示例:获取客户端的IP地址
echo $_SERVER['REMOTE_ADDR'];

3. $_GET

$_GET 是用来得到HTTP GET请求中的参数的数组。当我们使用 GET 方法向服务器提交请求时,服务器将参数信息按照 URL 参数的方式来传递。例如:

// URL 中有 ?name=John&age=30 参数
echo $_GET['name'];   // 输出 John
echo $_GET['age'];    // 输出 30

4. $_POST

$_POST 是用来得到 HTTP POST 请求中的参数。POST 请求的数据将存储在请求的主体中,而不是通过URL来进行传递。我们可以使用表单等方式来提交 POST 请求。例如:

// HTML 代码
<form action="submit.php" method="POST">
  <input type="text" name="username" />
  <input type="password" name="password" />
  <input type="submit" value="提交" />
</form>

// PHP 代码
echo $_POST['username'];    // 输出提交的用户名
echo $_POST['password'];    // 输出提交的密码

5. $_COOKIE

$_COOKIE 是由客户端发送到PHP的所有 cookie 的变量。当客户端与服务器进行交互时,服务器可以发送一个 cookie 给客户端,客户端将在下一次连接时将该 cookie 值自动发送回服务器。例如:

// 设置 cookie
setcookie('user', 'John', time()+3600);    // 有效期为1小时

// 获取 cookie
echo $_COOKIE['user'];

示例

示例一:使用 $_SERVER 打印出当前网站的URL和用户的浏览器信息

echo '当前网站的URL:' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . '<br>';
echo '用户的浏览器信息:' . $_SERVER['HTTP_USER_AGENT'];

示例二:使用 $_GET 和 $_POST 获取表单的数据

// HTML 代码
<form action="submit.php" method="POST">
  <input type="text" name="username" />
  <input type="password" name="password" />
  <input type="submit" value="提交" />
</form>

// PHP 代码
echo $_GET['username'];   // 输出空,因为提交时使用了 POST 请求
echo $_POST['username'];  // 输出提交的用户名

本文标题为:PHP超全局数组(Superglobals)介绍

基础教程推荐