超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。
PHP 超级全局变量列表:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
$GLOBALS
$GLOBALS 是 PHP 中的一个超全局数组,用于存储全局作用域中的全部变量,包括全局作用域、函数作用域以及类方法作用域中的变量。这个数组的键是变量名,值是对应变量的值。
解释:
$GLOBALS
是一个关联数组,其键是全局变量的名称,值是对应的变量的值。- 通过
$GLOBALS
数组,可以在任何地方访问全局作用域中的变量,而不需要使用global
关键字。
举例:
<?php
$x = 5;
$y = 10;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z; // 输出 15
?>
在这个示例中,我们定义了两个全局变量 $x
和 $y
。在 addition()
函数内部,我们通过 $GLOBALS
数组访问了这两个全局变量,并将它们相加并存储在 $GLOBALS['z']
中。最后,我们在全局作用域中输出了 $z
的值,得到了 15。
$_SERVER
$_SERVER
是 PHP 中的一个超全局数组,用于存储服务器和执行环境的信息。这些信息包括 HTTP 请求、服务器信息、运行环境等。$_SERVER
数组的键是服务器提供的变量名,值是相应的信息。
这个数组包含了许多键值对,其中一些常见的键包括:
$_SERVER['PHP_SELF']
: 当前执行脚本的文件名。$_SERVER['SERVER_NAME']
: 当前运行脚本所在服务器的主机名。$_SERVER['HTTP_HOST']
: 当前请求的 Host 头部内容。$_SERVER['HTTP_USER_AGENT']
: 当前用户代理(浏览器)的字符串。$_SERVER['REMOTE_ADDR']
: 客户端的 IP 地址。
这些信息可以用于调试、日志记录、用户识别等用途。下面是一个简单的示例,演示如何使用 $_SERVER
变量:
<?php
echo '当前执行脚本的文件名:' . $_SERVER['PHP_SELF'] . '<br>';
echo '当前运行脚本所在服务器的主机名:' . $_SERVER['SERVER_NAME'] . '<br>';
echo '当前请求的 Host 头部内容:' . $_SERVER['HTTP_HOST'] . '<br>';
echo '当前用户代理(浏览器)的字符串:' . $_SERVER['HTTP_USER_AGENT'] . '<br>';
echo '客户端的 IP 地址:' . $_SERVER['REMOTE_ADDR'] . '<br>';
?>
这个示例将输出当前执行脚本的文件名、服务器主机名、HTTP Host、用户代理和客户端的 IP 地址。
$_REQUEST
$_REQUEST
是 PHP 中的一个超全局数组,用于收集 HTML 表单提交的数据,同时也可以接收 URL 参数。它是 $_GET
、$_POST
和 $_COOKIE
的组合。当页面请求方式是 GET 或 POST 时,$_REQUEST
都可以接收到数据。
这个数组的键是表单元素的名称,值是用户输入的数据。值得注意的是,使用 $_REQUEST
可能会存在安全风险,因为它可以同时接收来自用户 GET 请求和 POST 请求的数据,这可能导致意外的数据混入。
下面是一个简单的示例,演示如何使用 $_REQUEST
获取表单提交的数据:
<!DOCTYPE html>
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Name: <input type="text" name="name">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 收集表单数据并输出
$name = $_REQUEST['name'];
if (empty($name)) {
echo "Name is empty";
} else {
echo "Hello, $name!";
}
}
?>
</body>
</html>
在这个示例中,我们创建了一个简单的表单,用户可以输入名字。当用户提交表单时,PHP 代码部分通过 $_REQUEST['name']
获取表单中输入的名字,并输出相应的问候语。
$_POST
$_POST
是 PHP 中的一个超全局数组,用于收集通过 POST 方法提交的表单数据。与 $_GET
不同,$_POST
方法将用户输入的数据发送到服务器,但是不会在 URL 中显示这些数据。这使得 $_POST
更适合处理敏感信息或大量数据的提交。
这个数组的键是表单元素的名称,值是用户输入的数据。通过 $_POST
,可以方便地从表单中获取用户提交的数据进行处理。
下面是一个简单的示例,演示如何使用 $_POST
获取表单提交的数据:
<!DOCTYPE html>
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Name: <input type="text" name="name">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// 收集表单数据并输出
$name = $_POST['name'];
if (empty($name)) {
echo "Name is empty";
} else {
echo "Hello, $name!";
}
}
?>
</body>
</html>
在这个示例中,我们创建了一个简单的表单,用户可以输入名字。当用户提交表单时,PHP 代码部分通过 $_POST['name']
获取表单中输入的名字,并输出相应的问候语。
$_GET
$_GET
是 PHP 中的一个超全局数组,用于收集通过 URL 参数传递的数据。当用户在浏览器地址栏中输入 URL 或者通过链接跳转页面时,可以使用 $_GET
来获取 URL 中的参数值。
这个数组的键是 URL 参数的名称,值是参数的值。通过 $_GET
,可以方便地从 URL 中获取参数传递的数据进行处理。
下面是一个简单的示例,演示如何使用 $_GET
获取 URL 参数的数据:
<!DOCTYPE html>
<html>
<body>
<?php
// 假定 URL 为 example.com/index.php?name=Alice
if (isset($_GET['name'])) {
$name = $_GET['name'];
echo "Hello, $name!";
} else {
echo "Name parameter is not set";
}
?>
</body>
</html>
在这个示例中,假设 URL 中包含参数 name=Alice
,当用户访问这个页面时,PHP 代码部分使用 $_GET['name']
获取 URL 中传递的名字参数,并输出相应的问候语。如果 URL 中没有传递参数,则会输出提示信息。
关注我,不迷路,共学习,同进步
关注我,不迷路,共学习,同进步