摘要:[PHP]GET/POST 的差異與配合PHP用法
[鐵人賽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
<html>
<head>
<title>iTHome_Test</title>
<meta http-equiv="content-type" charset="UTF-8" />
</head>
<body>
<form method="GET" action="./test2.php">
帳號:<input name="username" type="text" />
<br />
密碼:<input name="password" type="password" />
<br />
<input type="submit" value="確定送出" />
</form>
</body>
</html>
test2.php
<html>
<head>
<title>iTHome_Test</title>
<meta http-equiv="content-type" charset="UTF-8" />
</head>
<body>
<?php
$get_value1=$_GET['username'];
$get_value2=$_GET['password'];
echo "帳號:".$get_value1."<br />密碼:".$get_value2;
?>
</body>
</html>
POST實作:
說明:test1.php為填寫表單並使用POST傳送,test2.php為接收表單
test1.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'];