服务热线
1888888888
作者:文煞发布时间:2024-03-09分类:PHP笔记浏览:268
PHP 中的超级全局变量是内置的,可以在整个脚本中使用的特殊变量。从 PHP 4.1.0 开始,这些变量就一直是 PHP 编程的一部分。它们使得在函数和类中访问全局变量变得容易,无需特别的声明。
一、有哪些超全局变量?
本文大致为你整理出以下几类超级全局变量:
1. $GLOBALS:包含了所有全局变量的数组,可以在脚本的任何部分访问和修改这些变量。
2. $_SERVER:包含了服务器相关的信息,如头信息、路径、端口、IP和脚位置等。这些信息由 Web 服务器提供。
3. $_REQUEST:用于收集 HTML 表单提交的数据。它包含了 `$_POST` 和 `$_GET` 数组中的数据。
4. $_POST:广泛用于收集通过 "method=post" 的 HTML 表单数据。
5. $_GET:用于收集通过 "method=get" 的 HTML 表单数据,也可以从 URL 中获取参数。
6. $_FILES:用于访问上传的文件。
7. $_ENV:包含了环境变量的数组,如服务器上的用户名、路径等。
8. $_COOKIE:包含了通过 HTTP cookie 发送的数据。
9. $_SESSION:用于存储跨请求的会话数据,可以在用户浏览的不同页面之间保持数据。
二、常用超级全局变量介绍
这些超级全局变量在 PHP 编程中非常重要,因为它们允许你轻松地访问和处理来自用户输入、服务器环境和会话数据的信息。了解每个变量的用途和如何正确地使用它们,对于开发健壮和高效的 PHP 应用程序至关重要。
接下来,我们将详细介绍一些常用的超级全局变量。
1、$GLOBALS全局数组
首先是介绍$GLOBALS。这是一个全局数组,你可以通过它的键来访问和修改任何全局变量。例如:
<?php$x = 75;$y = 25;function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];}addition();echo $z; // 输出 100?>
在这个例子中,我们定义了一个函数 addition,它修改了全局变量 $z。因为 $GLOBALS是全局的,所以函数内外都可以访问和修改它。
2、$_SERVER全局数组
$_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'];?>
$_SERVER数组中的元素提供了关于服务器环境和请求的信息。这些信息通常由 Web 服务器设置,并在 PHP 脚本中通过 $_SERVER访问。
3、$_REQUEST表单数据
$_REQUEST用于收集 HTML 表单提交的数据。以下是一个简单的表单和处理它的脚本:
<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"></form><?php$name = $_REQUEST['fname'];echo $name;?></body></html>
当用户填写表单并提交时,表单数据将发送到当前脚本,并可以通过 $_REQUEST数组访问并提取数据。
4、$_POST表单数据
$_POST用于收集通过method=post的表单数据。用法和$_REQUEST类似,但更专门用于 POST 方法的数据:
<html><body><form method="post" action="<?php echo $_SERVER['PH_SELF'];?"> Name: <input type="text" name="fname"> <input type="submit"></form><?php$name = $_POST['fname'];echo $name;?></body></html>
5、$_GET表单数据
最后是$_GET,它用于收集通过method=get提交的表单数据,也可以从 URL 中获取参数。例如:
<html><body><a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a></body></html>
在这个例子中,点击链接会向test_get.php发送参数。
test_get.php文件代码如下所示:
<html><body><?phpecho "Study " . $_GET['subject'] . " @ " . $_GET['web'];?></body></html>
当用户点击链接时,参数subject和web会发送到test_get.php,并通过 $_GET数组访问这些数据。这里通过echo来展示这些内容,你还可以进行其他处理。
这些就是 PHP 中的一些最常用超级全局变量。了解和使用这些变量对于 PHP 开发者来说非常重要,因为它们是处理表单数据和环境信息的基础。接下来我会为大家整理一些超全局变量数组的列表,供大家参考使用。
三、PHP超级全局变量列表
变量名称 | 变量值含义 | |
---|---|---|
$_SERVER['PHP_SELF'] | 当前执行脚本的文件名,与文档根目录有关。例:http://example.com/test.php中$_SERVER['PHP_SELF']的值是:到/test.php。 | |
$_SERVER['SERVER_NAME'] | 当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。 | |
$_SERVER['SERVER_SOFTWARE'] | 服务器标识字符串,在响应请求时的头信息中给出。例如:Apache/2.2.24。 | |
$_SERVER['SERVER_PROTOCOL'] | 请求页面时通信协议的名称和版本。例如,HTTP/1.0 或 HTTP/1.1。 | |
$_SERVER['REQUEST_METHOD'] | 访问页面使用的请求方法;例如,GET, HEAD, POST, PUT等。 | |
$_SERVER['REQUEST_TIME'] | 请求开始时的时间戳。从 PHP 5.1.0 起可用。 | |
$_SERVER['QUERY_STRING'] | 查询字符串,如果有的话,通过它进行页面访问。 | |
$_SERVER['HTTP_ACCEPT'] | 当前请求头中Accept项的内容,如果存在的话。 | |
$_SERVER['HTTP_ACCEPT_CHARSET'] | 当前请求头中Accept-Charset:项的内容,如果存在的话。例如:iso-8859-1,*,utf-8。 | |
$_SERVER['HTTP_HOST'] | 当前请求头中Host项的内容,如果存在的话。 | |
$_SERVER['HTTP_REFERER'] | 引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。 | |
$_SERVER['HTTP_USER_AGENT'] | 用户代理发送的User-Agent头信息。如:浏览器信息,IP地址,设备信息等一些与浏览者相关的信息! | |
$_SERVER['SCRIPT_NAME'] | 包含当前脚本的路径。这在页面需要指向自己时非常有用。 | |
$_SERVER['SERVER_ADDR'] | 当前运行脚本所在的服务器的 IP 地址。 | |
$_SERVER['SERVER_PORT'] | Web 服务器使用的端口。默认值为80。如果使用 SSL 安全连接,这个值为用户设置的 HTTP 端口,通常是443。 | |
$_SERVER['SERVER_SIGNATURE'] | 包含了服务器版本和虚拟主机名的字符串。 | |
$_SERVER['PATH_TRANSLATED'] | 当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。 | |
$_SERVER['SCRIPT_FILENAME'] | 当前执行脚本的绝对路径。 | |
$_SERVER['SERVER_ADMIN'] | 该值指明了 Apache 服务器配置文件中的 `SERVER_ADMIN` 参数。如果脚本运行在一个虚拟主机上,则该值是那个虚拟主机的值。 | |
$_SERVER['HTTP_X_FORWARDED_FOR'] | 代理服务器发送的 IP 地址,通常用于识别客户端的原始 IP 地址。 | |
$_SERVER['REMOTE_ADDR'] | 浏览当前页面的用户的 IP 地址。如果用户使用了代理IP,则需要使用$_SERVER['HTTP_X_FORWARDED_FOR']来准确获取! | |
$_SERVER['REMOTE_USER'] | 当使用身份验证(如使用 Basic 身份验证时),包含通过身份验证的用户名。 | |
$_SERVER['HTTPS'] | 用于标识请求是通过 HTTPS 协议发送的。 | |
$_SERVER['REDIRECT_URL'] | 原始请求被重定向到的 URL。 | |
$_SERVER['HTTP_REFERER'] | 用户最后一次离开的页面的 URL。这可能不准确,因为用户可以更改或禁用它。 | |
$_SERVER['CONTENT_LENGTH'] | 请求主体的大小(以字节为单位)。 | |
$_SERVER['CONTENT_TYPE'] | 请求主体的内容类型(如 "application/x-www-form-urlencoded" 或 "multipart/form-data")。 |
这些是一些常见的$_SERVER数组键,以及它们对应的含义。请注意,这些值可能会因服务器配置和请求的不同而有所不同。当然你可以使用print_r($_SERVER)来打印该服务器所有已配置的$_SERVER信息!
变量名称 | 变量值含义 |
---|---|
$_FILES["name"] | 上传文件的名称 |
$_FILES["type"] | 上传文件的类型 |
$_FILES["tmp_name"] | 文件被上传到服务器上的临时文件名 |
$_FILES["error"] | 上传文件时可能出现的错误代码 |
$_FILES["size"] | 上传文件的大小 |
$_FILES["tmpDir"] | 上传文件的临时存储目录 |
对于$_FILES数组来说,这是一个非常丰富的超级全局变量,因为它包含了关于通过表单上传的文件的信息。$_FILES数组中的键名和对应的值通常在文件上传过程中使用。不过在PHP中超级全局变量(如$_GET、$_POST、$_FILES等)的值在脚本执行期间是动态变化的,所以你需要确保在正确的上下文中使用这些变量。而且,这些信息可能会根据PHP版本的不同而略有差异,因此在使用时最好参考你正在使用的PHP版本的官方文档。
变量名称 | 变量值含义 |
---|---|
$_ENV['HTTP_HOST'] | 客户端请求的主机名。 |
$_ENV['HTTP_USER_AGENT'] | 发起请求的用户代理(通常包含浏览器信息)。 |
$_ENV['HTTP_ACCEPT'] | 客户端可接受的响应内容类型。 |
$_ENV['HTTP_ACCEPT_LANGUAGE'] | 客户端首选的语言。 |
$_ENV['HTTP_ACCEPT_CHARSET'] | 客户端首选的字符集。 |
$_ENV['REMOTE_ADDR'] | 访问服务器的客户端的IP地址。 |
$_ENV['REMOTE_PORT'] | 访问服务器的客户端的端口号。 |
$_ENV['SERVER_ADDR'] | 服务器的IP地址。 |
$_ENV['SERVER_PORT'] | 服务器端口号。 |
$_ENV['SERVER_NAME'] | 服务器的名称。 |
$_ENV['SERVER_SOFTWARE'] | 服务器软件名称和版本。 |
$_ENV['DOCUMENT_ROOT'] | 脚本所在文档根目录。 |
$_ENV['SCRIPT_FILENAME'] | 当前执行脚本的绝对路径。 |
$_ENV['QUERY_STRING'] | 查询字符串(当使用 `?` 传递参数时)。 |
$_ENV['REQUEST_METHOD'] | 客户端请求方法(如GET,POST等)。 |
请注意:这些只是例子,实际的环境变量可能会更多,且取决于服务器配置。如果需要获取$_ENV数组中所有键名及其对应值,可以使用 print_r() 或 var_dump()函数来打印这个数组。
在PHP中,您可以通过以下方式访问 $_ENV数组中的元素:
echo $_ENV['VARIABLE_NAME'];
如果您需要确保某个环境变量在您的PHP脚本中可用,您可以使用 putenv()函数在脚本执行之前设置它:
putenv('VARIABLE_NAME=Value');
如果 $_ENV`数组在您的PHP配置文件(如php.ini)中被禁用,您可以通过修改variables_order指令来启用它。如第二个参考信息中所述,variables_order指令决定了哪些超全局数组在PHP启动时注册,以及它们的注册顺序。在php.ini文件中,您可以将此指令设置为包含 `E`(ENV)的顺序,如下所示:
variables_order = "EGPCS"
这样,$_ENV数组就会被注册并可以使用。但是你需要知道在PHP中,$_ENV全局数组包含了所有环境变量。环境变量是服务器或运行脚本的操作系统设置的变量,它们可以在脚本中通过getenv()函数访问。由于 $_ENV`数包含的所有环境变量会因服务器配置和操作系统而异,这些值不是固定的,而是取决于运行脚本的具体环境。
分享:
支付宝
微信