1. 程式人生 > >PHP 九種預定義超全域性變數

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超全域性陣列中。

示例:


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>";
?>