php預定義數組: 自動全局變量---超全局數組

 

 

<?php

/* 預定義數組:

 *  自動全局變量---超全局數組:是數組的用法,但是不能自己定義。在任何函數任何頁面中都可以使用

 *

 *  1. 包含了來自WEB服務器,客戶端,運行環境和用戶輸入的數據

 *  2. 這些數組比較特別

 *  3. 全局範圍內自動生效,都可以直接使用這些數組

 *  4. 用戶不能自定義這些數組,但這些數組的操作方式又和我們自己定義的數組操作方式一樣

    5、在函數中可以直接使用這些數組

 *

 * $_GET  //經由URL請求提交至服務器端腳本的變量(地址欄中請求(連接中的請求);表單請求,默認不指定method 就是GET方法)

 * $_POST //經由HTTP POST方法提交到腳本的變量(因爲地址欄的空間是有限的,請求的參數都顯示在地址欄中,密碼性的安全的數據或者大的數據最好用post方法請求服務器)

 * 有文件上傳的時候必須用Post。他是HTTP提交,隨表單一起提交給服務器。

 

  $_REQUEST//經由GETPOSTCOOKIE機制提交至腳本的變量。當服務器端不確定客戶端使用的是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();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章