最常用的 HTTP 方法是 GET 與 POST, 當我們提交表單時, 後端伺服器上的 PHP 程式可以分別用 $_GET["param"] 與 $_POST["param"] 來取得前端傳來的參數 param, 如果不知道前端會用哪一種方法, 則可用 $_REQUEST["param"], 不管前端用 GET 還是 POST, $_REQUEST 都可以擷取到參數.
下面以三個範例來測試 $_GET, $POST, 與 $_REQUEST. 首先寫一個含有表單元素的網頁 http_get_form.htm :
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>PHP Test</title>
</head>
<body>
<form method="get" action="http_test.php" name="form1">
<input type="text" name="name" value="">
<input type="submit" value="確定" name="ok">
</form>
</body>
</html>
在此網頁中, 表單採用 GET 方法傳送元素, 表單內只含有一個名稱為 name 的輸入元素, 當按下確定後會將此表單向後端程式 http_test.php 提交, 其內容如下 :
<?php
header('Content-Type: text/html;charset=UTF-8');
$request=$_REQUEST["name"];
$post=$_POST["name"];
$get=$_GET["name"];
echo "<br>";
echo "REQUEST=".$request."<br>";
echo "POST=".$post."<br>";
echo "GET=".$get;
?>
此程式中分別用 $_GET, $POST, 與 $_REQUEST 取得前端傳出來的 name 參數, 然後向前端輸出, 如下面範例 1 所示 :
測試範例 1 : http://mybidrobot.allalla.com/phptest/http_get_form.htm [看原始碼]
後端程式 http_test.php 輸出結果如下 :
REQUEST=get_form
POST=
GET=get_form
可見以 GET 方法提交時, 必須用 $_GET 或 $_RQUEST 讀取, 不能用 $_POST.
如果我們將 GET 改為 POST, 如下 http_post_form.htm :
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>PHP Test</title>
</head>
<body>
<form method="post" action="http_test.php" name="form1">
<input type="text" name="name" value="">
<input type="submit" value="確定" name="ok">
</form>
</body>
</html>
同樣向 http_test.php 提交, 如下範例 2 所示 :
測試範例 2 : http://mybidrobot.allalla.com/phptest/http_post_form.htm [看原始碼]
結果如下 :
REQUEST=post_form
POST=post_form
GET=
可見用 POST 方法提交只能用 $_POST 或 $_REQUEST 取得參數, 不能用 $_GET.
還有一種 GET 方法是使用超連結發出 Request, 不是使用表單的, 如下 http_get_url.htm 所示 :
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>PHP Test</title>
</head>
<body>
<a href="http_test.php?name=uuu">http_test.php?name=uuu</a>
</body>
</html
如下面範例 3 :
測試範例 3 : http://mybidrobot.allalla.com/phptest/http_get_url.htm [看原始碼]
結果與範例 1 相同, 只能用 $_GET 或 $_REQUEST 才能取的參數 :
REQUEST=uuu
POST=
GET=uuu
經過這三個測試, 可知不管是 GET 與 POST 方法, 一律用 $_REQUEST 就沒問題了.
沒有留言 :
張貼留言