<?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 protected]&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();