-
参考菜鸟教程,并经过自己亲手实验,记录PHP的几个超级全局变量
-
所谓超级全局变量 ,你可以理解为在一个脚本里面的全部代码里面都可以使用的变量。
-
$GLOBALS
$GLOBALS 是 php 的一个超级全局变量组,在PHP脚本中的全部作用域都可以访问
$GLOBALS 是一个包含了全部变量的全局组合数组,变量的名字就是 $GLOBAL 的键值。
你可以理解为 使用了 $GLOBALS 就可以使用这个脚本里面的任何一个任何地方的变量。
例子如下
<!doctype html>
<html>
<body>
<?php
$a = 55;
$b = 66;
function add_test()
{
$GLOBALS['c'] = $GLOBALS['a'] + $GLOBALS['b'];
}
add_test();
echo $c;
?>
</body>
</html>
![](http://images2017.cnblogs.com/blog/991711/201711/991711-20171101150641716-1368246906.png)
$_SERVER 是一个包含比如 头信息, 脚本路径,名称各种属性的超级全局变量,这个数组由 web 服务器创建
$_SERVER 有一些常用的键值,如下:
$_SERVER['PHP_SELF'] 表示的是当前执行执行脚本的名字, 比如说当前是 index.php , 那么这个值就是 index.php
$_SERVER['GATEWAY_INTERFACE'] 表示服务器所使用的 CGI 规范的版本
$_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器的 IP 地址。
$_SERVER['SERVER_NAME'] 当前运行脚本所在的服务器的主机名
$_SERVER['SERVER_SOFTWARE'] 服务器标识字符串,在响应请求时的头信息中给出,如Apache/2.2.24
$_SERVER['SERVER_PROTOCOL'] 请示页面时通信协议的名称和版本, 如: HTTP/1.0
$_SERVER['REQUEST_METHOD'] 访问页面使用的请求方法, 例如:"GET" "HEAD", "POST" , "PUT"
$_SERVER['REQUEST_TIME'] 请求开始时的时间戳, 如 1377687499
$_SERVER['QUERY_STRING'] query string (查询字符串), 如果有的话,通过他进行页面访问
$_SERVER['HTTP_ACCEPT'] 当前请求头中 Accept 项中的内容, 如果存在的话。
$_SERVER['HTTP_ACCEPT_CHARSET'] 当前请求头中 Accept-Charset 项中的内容
$_SERVER['HTTP_HOST'] 当前请求中 Host 项的内容,如果存在的话。
$_SERVER['REMOTE_ADDR'] 浏览当前页面的用户的 IP 地址。
$_SERVER['REMOTE_HOST'] 浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。
$_SERVER['REMOTE_PORT'] 用户机器上连接到 Web 服务器所使用的端口号。
$_SERVER['SCRIPT_FILENAME'] 当前执行脚本的绝对路径。
$_SERVER['SCRIPT_NAME'] 包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。
例子如下:
<!doctype html>
<html>
<body>
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['GATEWAY_INTERFACE'];
echo "<br>";
echo $_SERVER['SERVER_ADDR'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['SERVER_SOFTWARE'];
echo "<br>";
echo $_SERVER['SERVER_PROTOCOL'];
echo "<br>";
echo $_SERVER['REQUEST_METHOD'];
echo "<br>";
echo $_SERVER['REQUEST_TIME'];
echo "<br>";
echo $_SERVER['REMOTE_ADDR'];
echo "<br>";
echo $_SERVER['REMOTE_HOST'];
echo "<br>";
echo $_SERVER['REMOTE_PORT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
echo "<br>";
?>
</body>
</html>
例子
![](http://images2017.cnblogs.com/blog/991711/201711/991711-20171101162557341-1524850394.png)
$_REQUEST 是用于收集 HTML 表单提交的数据。
例子如下:
<!doctype html>
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?> ">
name : <input type="text" name="example">
<input type="submit">
</form>
<?php
$name = $_REQUEST['example'];
echo $name;
?>
</body>
</html>
效果:
![](http://images2017.cnblogs.com/blog/991711/201711/991711-20171101164958420-1914807539.png)
-
$_POST 功能上基本和 $_REQUEST 基本一样
例子如下:
<!doctype html>
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
test : <input type="text" name="test1">
<input type="submit">
</form>
<?php
$test1 = $_POST['test1'];
echo $test1
?>
</body>
</html>
效果:
![](http://images2017.cnblogs.com/blog/991711/201711/991711-20171101170020248-1203073496.png)
<!doctype html>
<html>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="get">
name: <input type="text" name="fname">
age: <input type="text" name="age">
<input type="submit" value="check">
</form>
<?php
echo "name: ".$_GET['fname']."<br>";
echo "age : ".$_GET['age']."<br>";
?>
</body>
</html>
效果:
![](http://images2017.cnblogs.com/blog/991711/201711/991711-20171101180355091-90099534.png)