在PHP中,有几个预定义的变量,它们在脚本的任何地方都可以访问。这些变量被称为“超全局变量”(Superglobals)。下面是一个详细教程,介绍了PHP的超全局变量及其使用方法。
1. $GLOBALS - 访问全局作用域中的全局变量
$GLOBALS
是一个包含所有全局变量的关联数组。数组的键名是变量的名字,值是变量的内容。可以通过下标来访问或修改这些变量。
示例:
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z; // 输出100
在这个例子中,函数addition()
访问了全局变量$x
和$y
,并将它们的值相加后赋给了另一个全局变量$z
。
2. $_SERVER - 服务器和执行环境信息
$_SERVER
是一个包含诸如头信息(header)、路径(path)以及脚本位置(script locations)等信息的数组。这个变量可用于获取当前页面的地址,或者用户的IP地址等信息。
示例:
echo $_SERVER['PHP_SELF']; // 输出当前脚本文件名
echo $_SERVER['SERVER_NAME']; // 输出服务器主机名称
echo $_SERVER['HTTP_USER_AGENT']; // 返回访问者的用户代理头信息
3. $_REQUEST - HTTP请求变量
$_REQUEST
用于收集HTML表单提交的数据。包含了$_GET
, $_POST
和$_COOKIE
的内容。可以通过索引来获取表单中对应元素的值。
示例:
<form method="post">
<input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
在这个例子中,通过表单提交的数据会被存储到$_REQUEST['fname']
中。
4. $_POST - HTTP POST变量
$_POST
用于收集来自方法为"POST"的HTML表单中的值。可以通过索引来获取对应元素的值。
示例:
<form method="post">
<input type="text" name="fname">
<input type="submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// collect value of input field
$name = $_POST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
在这个例子中,通过表单提交的数据会被存储到$_POST['fname']
中。
5. $_GET - HTTP GET变量
$_GET
用于收集来自方法为"GET"的HTML表单中的值,或者从URL中通过查询字符串传递的变量。可以通过索引来获取对应元素的值。
示例:
<a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>
<?php
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>
在这个例子中,通过查询字符串传递的变量会被存储到$_GET['subject']
和$_GET['web']
中。
6. $_FILES - HTTP文件上传变量
$_FILES
是一个二维关联数组,用于收集来自HTML表单的上传文件信息。可以通过索引和属性来获取对应元素的值。
示例:
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars(basename($_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
?>
在这个例子中,上传文件的信息会被存储到$_FILES['fileToUpload']
数组中。
7. $_ENV - 环境变量
$_ENV
是一个包含环境变量的关联数组。这个变量可用于获取系统或服务器的相关信息。
示例:
echo $_ENV["USER"]; // 输出当前登录用户名
echo $_ENV["HOME"]; // 输出当前用户主目录
8. $_SESSION - Session变量
$_SESSION
是一个数组,用于存储和访问会话信息。可以在多个页面中共享这些数据,直到会话结束(通常发生在浏览器关闭时)。
示例:
session_start();
$_SESSION["favcolor"] = "green";
echo "Favorite color is " . $_SESSION["favcolor"]; // 输出"Favorite color is green"
在这个例子中,会话变量$_SESSION['favcolor']
被设置为"green",然后在当前页面输出。
9. $_COOKIE - Cookie变量
$_COOKIE
是一个数组,用于存储和访问Cookie信息。可以在多个页面中共享这些数据,直到Cookie过期或被删除。
示例:
setcookie("user", "Alex Porter", time()+3600); // 设置一个名为"user"的Cookie,值为"Alex Porter",有效期为1小时
echo $_COOKIE["user"]; // 输出Cookie的值
在这个例子中,Cookie变量$_COOKIE['user']
被设置为"Alex Porter",然后在当前页面输出。