iT邦幫忙

DAY 2
2

遭遇PHP之經驗分享系列 第 2

[鐵人賽Day2] GET/POST 的差異與配合PHP用法

今天要來談論的是新手最常搞混的GET/POST
想當初在學習PHP的時候,常常會使用到 Form 這個表單(現在也很常用啦),而傳送資料的方法也常使用POST跟GET的方法來傳遞資料

GET/POST用在表單form裡的method,在Html的語法如下:

<form id="form1" method="(GET or POST)" action="">
     -內容物-
</form>

那到底GET/POST差別在哪呢?

GET方法
傳送的值藉由GET請求URL發送,簡單來說GET是把資料放在header進行傳送,而在網址列會看到"http://www.xxx.com/test/index.php?test1=value1&test2=value2"
同時,使用GET方式傳遞的話,並不適合傳送些隱密性較高的資料(例如:Password),因為在傳送的過程中就會顯示在網址列上
而GET的請求會被Cache紀錄、GET的請求受限於 QueryString 長度限制(依瀏覽器規定),因此GET的使用時機應為檢視資料時使用

POST方法
傳送的值藉由POST請求HTTP發送,簡單來說POST是把資料放在訊息主體內進行傳送
而POST的請求不會被Cache紀錄、POST的請求對資料長度沒有限制,因此POST比GET更安全,所以較適合用來傳送隱密性較高的資料
而在PHP中,當資料傳送出來後,GET傳值是運用PHP的$_GET['xxx']的變數接收,POST傳值是運用PHP的$_POST['xxx']的變數接收
(回想剛學習那時,常把兩者弄混淆,以至於抓不到值)

GET實作:
說明:test1.php為填寫表單並使用GET傳送,test2.php為接收表單

「test1.php」

    <title>iTHome_Test</title>
    <meta http-equiv="content-type" charset="UTF-8" />

    
        <form method="GET" action="./test2.php">
            帳號:<input name="username" type="text" />
            <br />
            密碼:<input name="password" type="password" />
            <br />
            <input type="submit" value="確定送出" />
        </form>
    

「test2.php」

    <title>iTHome_Test</title>
    <meta http-equiv="content-type" charset="UTF-8" />

    
        <?php
            $get_value1=$_GET[<span style="color:rgb(0, 0, 0)">'</span>username<span style="color:rgb(0, 0, 0)">'</span>];
            $get_value2=$_GET[<span style="color:rgb(0, 0, 0)">'</span>password<span style="color:rgb(0, 0, 0)">'</span>];
            echo "帳號:".$get_value1."<br />密碼:".$get_value2;
        ?>
    

如圖可看到,傳遞的資料在URL上顯示:

POST實作:
說明:
test1.php為填寫表單並使用POST傳送,test2.php為接收表單

test1.php
<form method="GET" action="./test2.php">,把method="GET"改method="POST"

test2.php
$get_value1=$_GET['username'];
$get_value2=$_GET['password'];
更改為
$get_value1=$_POST['username'];
$get_value2=$_POST['password'];

如圖可看到,傳遞的資料並不在URL上顯示,比GET更安全:

(參考資料:http://www.w3schools.com/tags/ref\_httpmethods.asp)


上一篇
[鐵人賽Day1]PHP timezone時區設置
下一篇
[鐵人賽Day3]PHP簡易檔案上傳實作
系列文
遭遇PHP之經驗分享30

尚未有邦友留言

立即登入留言