6.4.2 服务器变量$_SERVER和环境变量$_ENV
超全局数组(预定义变量)
服务器变量: $_SERVER
环境变量: $_ENV
HTTP GET变量: $_GET
HHTP POST变量: $_POST
request变量: $_REQUEST
HTTP文件上传变量: $_FILES
HTTP Cookies: $_COOKIE
Session变量: $_SESSION
Global变量: $_GLOBALS
服务器变量: $_SERVER
•$_SERVER是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。数组的实体由 web 服务器创建。不能保证所有的服务器都能产生所有的信息;服务器可能忽略了一些信息,或者产生了一些未在下面列出的新的信息。这是一个自动全局变量。这只不过意味这它在所有的脚本中都有效。在函数或方法中不需要使用
global $_SERVER;
–*PHP_SELF*:当前正在执行脚本的文件名
–*DOCUMENT_ROOT*:当前运行脚本所在的文档根目录
–*REMOTE_ADDR*:正在浏览当前页面用户的 IP 地址。
环境变量:$_ENV
在解析器运行时,这些变量从环境变量转变为 PHP 全局变量名称空间(namespace)。它们中的许多都是由 PHP 所运行的系统决定。完整的列表是不可能的。请查看系统的文档以确定其特定的环境变量。
这是一个自动全局变量。它在所有的脚本中都有效。在函数或方法中不需要使用 global $_ENV;
HTTP GET变量:$_GET
通过 HTTP GET 方法传递的变量组成的数组。是自动全局变量.
http://localhost/login.php?name=zhangsan&id=100
<?php
echo “参数name的值:”.$_GET[“name”]; //zhangsan
echo “参数id的值:”.$_GET[“id”]; //100
?>
HTTP POST变量:$_POST
通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
与$_GET相似,只是方法不一样。
request变量:$_REQUEST
此关联数组包含 $_GET,$_POST 和 $_COOKIE 中的全部内容。
HTTP文件上传变量:$_FILES
通过 HTTP POST 方法传递的已上传文件项目组成的数组。是自动全局变量。
HTTP Cookies:$_COOKIE
通过 HTTP cookies 传递的变量组成的数组。是自动全局变量。
Session变量:$_SESSION
•包含当前脚本中 session 变量的数组。参阅 Session 函数文档以获得更多信息。
Global变量:$GLOBALS
由所有已定义全局变量组成的数组。变量名就是该数组的索引。
例test.php
<?php
/*
* 超全局数组(变量), 在PHP的脚本中, 已经声明完的变量, 你可以直接就去使用即可! 变量的名子已经规定好的了
*
*
* $_SERVER
* $_ENV
* $_GET
* $_POST
* $_REQUEST
* $_FILES
* $_COOKIE
* $_SESSION
* $GLOBALS
*
*
* 超 全局 数组
*
*
* 1. 数组(关联数组), 就和你自己声明的数组是一样的操作方式
* 2. 全局
* 3. 每个预定义的数组都有自独特的能力
*
*/
function getip() {
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
} elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if(!empty($_SERVER['REMOTE_ADDR'])) {
return $_SERVER['REMOTE_ADDR'];
}else{
return '未知IP';
}
}
echo getip();
echo '<br>';
echo $_SERVER['HTTP_USER_AGENT'];
echo '<br>';
echo count($_SERVER);
echo "<br>";
echo '<pre>';
print_r($_SERVER);
echo '</pre>';