為什麼呢?因為表單的處理有GET和POST兩種,怎麼在這兩種表單中都要傳遞一直do參數,而且要在後台通過同樣的方式擷取就一直是個很困惑的問題,今天經過幾個小時的實驗終於搞懂了,特發此文。
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:複製代碼 代碼如下:<pre>
<?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";
?>
</pre>
處理結果輸出:
參數 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 .
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: 複製代碼 代碼如下:<pre>
<?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";
?>
</pre>
處理結果輸出:
參數 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 .
結論:
GET表單值可以通過_GET擷取;但通過action的url參數設定的參數總是擷取不到的
POST表單值可以通過_POST擷取;但通過action的url參數設定的參數則可以通過_GET擷取到
同一變數都可以通過_GET擷取,但在GET表單中通過隱藏變數設定,在POST表單中則通過action的url參數設定