【二十三】php之预定义超全局变量
php提供了九种预定义超全局变量: $_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILE、 $_COOKIE、$_SESSION、 $GLOBALS
1.$_GET
原理图:
基本使用:
- 通过超链接传送消息给服务器(如test.php)
- 通过表单传送信息给服务器(<form action="a.php" method="get">)
- 通过重定向跳转(header:"location:test.php?aaa=**")
test.php
<?php //urlencode:url编码 $str=urlencode("花花啊"); echo "<a href='a.php?name=huahua&mon=$str'>传送数据</a>"; ?>
a.php
<?php // $_GET返回的是一个数组 echo "<pre>"; echo print_r($_GET); echo "</pre>"; // 如果想访问数组中指定的数组,可以通过下标名 // urldecode:url解码 echo urldecode($_GET['mon']); ?>
判断是否收到了某个值(empty inset)
// 方式一: if (empty($_GET['name'])) { echo "没有"; }else{ echo "收到".$_GET['name']; } // 方式二 if (!isset($_GET['name'])) { echo "没收到"; }else{ echo $_GET['name']; }
2.$_POST:通过http post方式给服务器传送的信息,会被封装在$_POST超全局数组中
基本用法
- 通过表单传送信息给服务器推荐使用post。有些信息必须使用post,比如上传文件
demo2.php
<!DOCTYPE html> <html> <head> <title>zhuce</title> </head> <body> <h1>用户注册</h1> <form action='b.php' method="post"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> 性别:<input type="radio" name="sex" value="man"/>男 <input type="radio" name="sex" value="woman" checked />女<br/> <!-- 注意:复选框要在name后面加[],表示接收的是一个数组 --> 你喜欢什么<input type="checkbox" name="hobby[]" value="唱歌">唱歌 <input type="checkbox" name="hobby[]" value="跳舞">跳舞 <input type="checkbox" name="hobby[]" value="看书">看书 <input type="checkbox" name="hobby[]" value="爬山">爬山 <input type="checkbox" name="hobby[]" value="游泳">游泳<br/> 个人介绍:<textarea rows="10" cols="30" name="intro"></textarea><br/> 您选择的图片:<input type="file" name="file"> <input type="submit" value="提交"><br/> </form> </body> </html>
b.php
<?php echo "<pre>"; echo print_r($_POST); echo "</pre>"; echo "您的爱好是:"; foreach ($_POST['hobby'] as $key => $value) { echo "$value"; //end 判断一个数组中的最后一个数 if ($value!=end($_POST['hobby'])) { echo ","; } } echo "<br/>您的个人介绍是:".$_POST['intro']; ?> 结果: Array // ( // [username] => root // [password] => 123456 // [sex] => woman // [hobby] => Array // ( // [0] => 唱歌 // [1] => 跳舞 // ) // [intro] => 给对方 // [file] => VirtualBox.exe // ) // 1 // 您的爱好是:唱歌,跳舞 // 您的个人介绍是:给对方
3.$_REQUEST
定义:可以接收post、get请求数据还包括$_COOKIE数组
4.$_SERVER
定义:包含了http请求行和消息头的信息,还有服务器自己的信息
基本用法:
- 获取请求服务器的ip地址(REMOTE_ADDR)
- 请求服务器端apache的版本号和php版本号(SERVER_SIGNATURE'、SERVER_SOFTWARE、)
- 防盗链行为(HTTP_REFERER)
5.$_ENV
定义:通过环境方式传递给当前脚本的变量的数组
该全局数组可以获取全局变量,但默认为禁用状态。可以在php.ini文件中启用
6.$GLOBALS
定义:包含了全部变量的全局组合数组
你定义的全局变量会自动被GLOBALS管理起来
<?php $a=900; echo "<pre>"; echo print_r($GLOBALS); echo "</pre>"; ?>
结果:
Array ( [_GET] => Array ( [AA] => QQ ) [_POST] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [_ENV] => Array ( ) [_REQUEST] => Array ( [AA] => QQ ) [_SERVER] => Array ( [HTTP_HOST] => localhost [HTTP_CONNECTION] => keep-alive [HTTP_CACHE_CONTROL] => max-age=0 [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36 [HTTP_UPGRADE_INSECURE_REQUESTS] => 1 [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 [HTTP_ACCEPT_ENCODING] => gzip, deflate, br [HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8 [PATH] => C:\ProgramData\Oracle\Java\javapath;C:\Python27;C:\Program Files (x86)\Google\Chrome\Application;C:\Python27\Scripts;C:\Program Files (x86)\Google\Chrome\Application;C:\Windows\System32;D:\Program Files (x86)\Git\cmd;D:\Program Files (x86)\Git\mingw32\bin;D:\Program Files (x86)\Git\usr\bin;%JAVA_HOME%;D:\apache-jmeter-3.2\bin;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps [SystemRoot] => C:\Windows [COMSPEC] => C:\Windows\system32\cmd.exe [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC [WINDIR] => C:\Windows [SERVER_SIGNATURE] => Apache/2.4.27 (Win64) PHP/5.6.31 Server at localhost Port 80 [SERVER_SOFTWARE] => Apache/2.4.27 (Win64) PHP/5.6.31 [SERVER_NAME] => localhost [SERVER_ADDR] => ::1 [SERVER_PORT] => 80 [REMOTE_ADDR] => ::1 [DOCUMENT_ROOT] => D:/wamp64/www [REQUEST_SCHEME] => http [CONTEXT_PREFIX] => [CONTEXT_DOCUMENT_ROOT] => D:/wamp64/www [SERVER_ADMIN] => wampserver@wampserver.invalid [SCRIPT_FILENAME] => D:/wamp64/www/server.php [REMOTE_PORT] => 63231 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => AA=QQ [REQUEST_URI] => /server.php?AA=QQ [SCRIPT_NAME] => /server.php [PHP_SELF] => /server.php [REQUEST_TIME_FLOAT] => 1512969105.181 [REQUEST_TIME] => 1512969105 ) [GLOBALS] => Array *RECURSION* [a] => 900 ) 1