PHP 九種預定義超全域性變數
PHP供提供了九種預定義超全域性變數:
$_GET、$_POST、$_REQUEST、$_SERVER、$_ENV、$_FILE、 $_COOKIE、$_SESSION、 $GLOBALS。在這裡,我們介紹其中的六種。
1.$_GET
原理圖:
示例:
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方式提交資料。
<form action=”a.php” method=”get”>
//....
</from>
2.$_POST
使用率最高。
描述:表單中通過Http POST方式提交的資料,會被封裝到$_POST超全域性陣列中。
示例:
<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
POST 提交 和GET 提交的區別:<?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;
③ 儲存到收藏夾,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>";
?>