PHP form 表單傳參明細研究

來源:互聯網
上載者:User

為什麼呢?因為表單的處理有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參數設定

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.