<?php
/* 预定义数组:
* 自动全局变量---超全局数组:是数组的用法,但是不能自己定义。在任何函数任何页面中都可以使用
*
* 1. 包含了来自WEB服务器,客户端,运行环境和用户输入的数据
* 2. 这些数组比较特别
* 3. 全局范围内自动生效,都可以直接使用这些数组
* 4. 用户不能自定义这些数组,但这些数组的操作方式又和我们自己定义的数组操作方式一样
5、在函数中可以直接使用这些数组
*
* $_GET //经由URL请求提交至服务器端脚本的变量(地址栏中请求(连接中的请求);表单请求,默认不指定method 就是GET方法)
* $_POST //经由HTTP POST方法提交到脚本的变量(因为地址栏的空间是有限的,请求的参数都显示在地址栏中,密码性的安全的数据或者大的数据最好用post方法请求服务器)
* 有文件上传的时候必须用Post。他是HTTP提交,随表单一起提交给服务器。
$_REQUEST//经由GET,POST和COOKIE机制提交至脚本的变量。当服务器端不确定客户端使用的是GET还是Post方法提交的数据,那么用$_REQUEST都能接收到提交过来的参数。
因此该数组并不值得我们信任,尽量不去使用。因为客户端不管用POST方法还是Get方法都能够进行攻击。
*
$_FILES//经由HTTP POST文件上传而提交给脚本的变量都记录在这里。
$_COOKIE//跟踪用户变量。会话控制的
* $_SESSION//
* $_ENV //执行环境提交至脚本的变量
* $_SERVER//变量由web服务器设定的,或 直接和当前脚本的执行环境相关联。。
*
$GLOBALS//只要是当前脚本有效的变量都在这里。数组键名为全局变量的名称。包含一个应用指向每一个脚本全局范围内有效的变量。
*
*
什么是全局变量呢?,如下面的$arr,要想在函数中使用$arr就要global把它包含到函数中,而超级全局数组就不用包含到函数中就可以直接使用
$arr=array(10, 20);
$_GET=array(50, 90);
function demo(){
global $arr;
print_r($arr);
print_r($_GET);
}
demo();
//只要是存储在这些超全局数组中的变量,提交过来的数据我们直接可以把数组里的成员当做变量来用$_GET举例
<?php //但是这个前提是php配置中register_global=On处于开启状态才可以直接用,否则,页面中不会收到的,但如果开启,会处于不安全的状态
echo $username."<br>";
echo $email."<br>";
echo $page."<br>";
?>
<?php
echo $_GET["username"]."<br>";
echo $_GET["email"]."<br>";
echo $_GET["page"]."<br>";
$_GET["eeee"]="@@@@@@@@@@@@";
print_r($_GET);//服务器端的操作。取数组数据
print_r($_POST);
print_r($_REQUEST);
?>
<form action="demo.php" method="post">//客户端的操作,把method换成get试一下
username : <input type="text" name="uname"><br>
password: <input type="password" name="pass"><br>
<input type="submit" value="login"> <br>
</form>
<a href="demo.php?username=zhangsan&email=aaa@bbb.com&page=45">this is a $_GET test</a>
$GLOBALS:
<?php
$a=100;
$b=200;
$c=300;
echo "<pre>";
print_r($GLOBALS);
echo "</pre>";
function demo(){
global $a;
echo $a;
echo $GLOBALS["c"]."<br>";
}
demo();