php中$_Get $_POST $_REQUEST區別

原文地址:http://www.jb51.net/article/19174.htm

Get表單

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=gbk"/> 
    <title>表單使用GET方式傳值</title> 
</head> 
<body> 
    <!-- action中的parm參數的值是無法傳遞到action-get.php的 --> 
    <form action="action-get.php?parm=url-get" method="get"> 
        <p> 
            姓名:<input type="text" name="name" /> 
            <!-- 隱藏變量傳值 --> 
            <input type="hidden" name="hkey" value="hvalue" /> 
            <!-- GET表單的隱藏變量傳值可以通過$_GET["do"]獲取 --> 
            <input type="hidden" name="do" value="index" /> 
            <!-- submit不設置name屬性則不會出現在url中 --> 
            <input type="submit" value="提交"/> 
        </p> 
    </form> 
</body> 
</html>

Get表單處理php

<?php 
    echo "參數 name 的值通過\$_GET獲取爲 ".$_GET["name"]." ,"; 
    echo "參數 name 的值通過\$_POST獲取爲 ".$_POST["name"]." ,"; 
    echo "參數 name 的值通過\$_REQUEST獲取爲 ".$_REQUEST["name"]." .\r\n"; 
    echo "參數 parm 的值通過\$_GET獲取爲 ".$_GET["parm"]." ,"; 
    echo "參數 parm 的值通過\$_POST獲取爲 ".$_POST["parm"]." ,"; 
    echo "參數 parm 的值通過\$_REQUEST獲取爲 ".$_REQUEST["parm"]." .\r\n"; 
    echo "參數 hkey 的值通過\$_GET獲取爲 ".$_GET["hkey"]." ,"; 
    echo "參數 hkey 的值通過\$_POST獲取爲 ".$_POST["hkey"]." ,"; 
    echo "參數 hkey 的值通過\$_REQUEST獲取爲 ".$_REQUEST["hkey"]." .\r\n"; 
    echo "參數 do 的值通過\$_GET獲取爲 ".$_GET["do"]." ,"; 
    echo "參數 do 的值通過\$_POST獲取爲 ".$_POST["do"]." ,"; 
    echo "參數 do 的值通過\$_REQUEST獲取爲 ".$_REQUEST["do"]." .\r\n"; 
?> 

輸出結果

參數 name 的值通過$_GET獲取爲 kj ,參數 name 的值通過$_POST獲取爲 ,參數 name 的值通過$_REQUEST獲取爲 kj . 
參數 parm 的值通過$_GET獲取爲 ,參數 parm 的值通過$_POST獲取爲 ,參數 parm 的值通過$_REQUEST獲取爲 . 
參數 hkey 的值通過$_GET獲取爲 hvalue ,參數 hkey 的值通過$_POST獲取爲 ,參數 hkey 的值通過$_REQUEST獲取爲 hvalue . 
參數 do 的值通過$_GET獲取爲 index ,參數 do 的值通過$_POST獲取爲 ,參數 do 的值通過$_REQUEST獲取爲 index . 

結論:get表單可以使用$_GET獲取表單內值,但通過action的url設置的參數獲取不到;$_POST不能獲取Get表單的任意值;$_REQUEST獲取的內容同$_GET。

Post表單

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=gbk"/> 
    <title>表單使用POST方式傳值</title> 
</head> 
<body> 
    <!-- action中的parm和do參數可以在action-post.php中通過$_GET方式獲取 --> 
    <form action="action-post.php?parm=url-post&do=index" method="post"> 
        <p> 
            姓名:<input type="text" name="name" /> 
            <!-- 隱藏變量傳值 --> 
            <input type="hidden" name="hkey" value="hvalue" /> 
            <input type="submit" value="提交"/> 
        </p> 
    </form> 
</body> 
</html> 

Post表單處理php

<?php 
    echo "參數 name 的值通過\$_GET獲取爲 ".$_GET["name"]." ,"; 
    echo "參數 name 的值通過\$_POST獲取爲 ".$_POST["name"]." ,"; 
    echo "參數 name 的值通過\$_REQUEST獲取爲 ".$_REQUEST["name"]." .\r\n"; 
    echo "參數 parm 的值通過\$_GET獲取爲 ".$_GET["parm"]." ,"; 
    echo "參數 parm 的值通過\$_POST獲取爲 ".$_POST["parm"]." ,"; 
    echo "參數 parm 的值通過\$_REQUEST獲取爲 ".$_REQUEST["parm"]." .\r\n"; 
    echo "參數 hkey 的值通過\$_GET獲取爲 ".$_GET["hkey"]." ,"; 
    echo "參數 hkey 的值通過\$_POST獲取爲 ".$_POST["hkey"]." ,"; 
    echo "參數 hkey 的值通過\$_REQUEST獲取爲 ".$_REQUEST["hkey"]." .\r\n"; 
    echo "參數 do 的值通過\$_GET獲取爲 ".$_GET["do"]." ,"; 
    echo "參數 do 的值通過\$_POST獲取爲 ".$_POST["do"]." ,"; 
    echo "參數 do 的值通過\$_REQUEST獲取爲 ".$_REQUEST["do"]." .\r\n"; 
?> 

輸出結果

參數 name 的值通過$_GET獲取爲 ,參數 name 的值通過$_POST獲取爲 zkj ,參數 name 的值通過$_REQUEST獲取爲 zkj . 
參數 parm 的值通過$_GET獲取爲 url-post ,參數 parm 的值通過$_POST獲取爲 ,參數 parm 的值通過$_REQUEST獲取爲 url-post . 
參數 hkey 的值通過$_GET獲取爲 ,參數 hkey 的值通過$_POST獲取爲 hvalue ,參數 hkey 的值通過$_REQUEST獲取爲 hvalue . 
參數 do 的值通過$_GET獲取爲 index ,參數 do 的值通過$_POST獲取爲 ,參數 do 的值通過$_REQUEST獲取爲 index . 

結論:Post表單可以使用$_POST獲取表單裏值,但不能獲取action的url中的參數;$_GET可以獲取action的url中的參數,但不能獲取表單內的值;$_REQUEST所有值都可以獲取。

同一名稱變量都可以使用$_GET獲取,但在get表單中通過隱藏變量設置,在post表單中通過action的url參數設置。

GET vs. POST

GET 和 POST 都創建數組(例如,array( key => value, key2 => value2, key3 => value3, ...))。此數組包含鍵/值對,其中的鍵是表單控件的名稱,而值是來自用戶的輸入數據。

GET 和 POST 被視作 $_GET 和 $_POST。它們是超全局變量,這意味着對它們的訪問無需考慮作用域 - 無需任何特殊代碼,您能夠從任何函數、類或文件訪問它們。

$_GET 是通過 URL 參數傳遞到當前腳本的變量數組。

$_POST 是通過 HTTP POST 傳遞到當前腳本的變量數組。

何時使用 GET?

通過 GET 方法從表單發送的信息對任何人都是可見的(所有變量名和值都顯示在 URL 中)。GET 對所發送信息的數量也有限制。限制在大於 2000 個字符。不過,由於變量顯示在 URL 中,把頁面添加到書籤中也更爲方便。

GET 可用於發送非敏感的數據。

註釋:絕不能使用 GET 來發送密碼或其他敏感信息!

何時使用 POST?

通過 POST 方法從表單發送的信息對其他人是不可見的(所有名稱/值會被嵌入 HTTP 請求的主體中),並且對所發送信息的數量也無限制

此外 POST 支持高階功能,比如在向服務器上傳文件時進行 multi-part 二進制輸入。

不過,由於變量未顯示在 URL 中,也就無法將頁面添加到書籤。

提示:開發者偏愛 POST 來發送表單數據。


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