1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP 九种预定义超全局变量

作者:用户 来源:互联网 时间:2017-12-01 15:31:45

PHP 九种预定义超全局变量 - 摘要: 本文讲的是PHP 九种预定义超全局变量, PHP供提供了九种预定义超全局变量: $_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILE、 $_COOKIE、$_SESSION、 $GLOBALS。在这里,我们介绍其中的六种。1.$_GET原理图

PHP供提供了九种预定义超全局变量
$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILE、 $_COOKIE、$_SESSION、 $GLOBALS。在这里,我们介绍其中的六种。
1.$_GET
原理图:

PHP 九种预定义超全局变量


示例:
test.php页面

<?php //urlencode编码 echo "<a href='a.php?city=北京好&name=xiaoming'>传送数据</a>";?>
a.php页面
<?php echo "<pre>"; echo print_r($_GET); echo "</pre>"; //如果希望指定取出某个数据,则可以通过下标名 echo $_GET['name']; ?>

$_GET也可以接收表单以get方式提交数据。

html;"><form action=”a.php” method=”get”>//....</from>


2.$_POST
使用率最高。
描述:表单中通过Http POST方式提交的数据,会被封装到$_POST超全局数组中。
示例:

PHP 九种预定义超全局变量

register.php
<html><head><metahttp-equiv="content-type"conten="text/html;charset=utf-8"/></head><body><h1>用户注册</h1><formaction="register2.php" method="post">用户名:<input type="text"name="username"/></br>密码:<input type="text"name="password"/></br>性别:男<input type="radio"name="sex" value="men"/>女<input type="radio"name="sex" value="women"/></br>你喜欢什么:<!--hobby是以数组的方式采集数据--><inputtype="checkbox" name="hobby[]" value="跳舞">跳舞<inputtype="checkbox" name="hobby[]" value="唱歌">唱歌<inputtype="checkbox" name="hobby[]" value="篮球">篮球<inputtype="checkbox" name="hobby[]" value="足球">足球</br>你的所在地是:<selectname="city"><optionvalue="beijing">北京</option><optionvalue="tianjing">天津</option><optionvalue="nanjing">南京</option></select><br/>个人介绍:<textarea rows="10"cols="30" name="introduce"></textarea></br><input type="submit"value="提交"/></form></body></html>

register2.php

<?php $name= $_POST['username']; $pwd= $_POST['password']; $sex= $_POST['sex']; $hobby= $_POST['hobby'];  echo"个人信息如下:</br>"; echo"姓名:".$name."</br>"; echo"密码:".$pwd."</br>"; echo"性别:".$sex."</br>"; echo"兴趣爱好:"; foreach($hobbyas $key=>$value)   echo$value."、"; echo"</br>"; echo"个人介绍:".$_POST['introduce'];?>
POST 提交 和GET 提交的区别:
① 安全性,POST高与GET;
② 数据传输大小,受限于浏览器,POST高于GET;
③ 保存到收藏夹,GET提交可以将数据保存到收藏夹,超链接默认是GET提交。

3.$_REQUEST
描述:$_REQUEST中可以包括$_GET/$_POST/$_COOKIE数组,所以我们可以理解为$_REQUEST包含了这些数组的信息。
示例:
<?php echo"<pre>"; echoprint_r($_REQUEST); echo"</pre>";  //如何取出某个值 //$_REQUEST既可以接收get请求的数据,也可以接收post请求的数据,以及cookie //所以这个变量,比较不可以信,不建议使用$_GET/$_POST echo$_REQUEST['aa'];?>
注意事项:
① 不要经常使用$_REQUEST;
② 如果不确定是GET/POST请求时,可以这样

if($_SERVER['http_method']=="post"){   $echo$_POST['名字']; }elseif($_SERVER['http_method']=="get"){   //用$_GET接收 }

4.$_SERVER
描述:$_SERVER中主要包含了Http请求行和消息头的信息,同时还有服务器自己的一些信息,比如DOCUMENT_ROOT,SCRIPT_FILENAME等。
示例:
① 请求获取该页面的客户机的ip地址。
$_SERVER['REMOTE_ADDR']
② 显示服务器端apache的版本号和php版本号。
$_SERVER['SOFTWARE']
③ 根据$_SERVER的REQUEST_METHOD来决定使用_GET还是_POST方法接收数据。
④ 利用$_SERVER 的HTTP_REFERER 来防止盗链行为。

5.$_ENV
描述:环境变量。当我们希望获取服务器端的环境信息时,可以使用 $_ENV。在php5.3.5中,默认情况下不能使用$_ENV,你会得到空值,这是出于对安全的考虑。如果希望使用$_ENV,可以通过修改php.ini的variables_order ="EGPCS"(EGPCS是Environment、Get、Post、Cookies、Server的缩写)实现。但是在开发环境,我们不建议这样配置。

6.$GLOBALS
描述:包含了全部变量的全局组合数组。变量的名字就是数组的键。同时一个自定义的全局变量,也会自动的被$GLOBALS管理。

示例:

<?php $a=900; echo "<pre>"; print_r($GLOBALS); echo "</pre>";?>
PHP 九种预定义超全局变量

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备