GET 與 POST 是兩種表單資料的傳遞方式,詳見以下範例。
GET 使用範例:
| send.php | <!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="receive.php" method="get">
姓名:<input type="text" name="name"/><br>
性別:<input type="radio" name="sex" value="male"/>男
<input type="radio" name="sex" value="female"/>女
<br><input type="submit" value="送出"/>
</form>
</body>
|
| receive.php | <?php
echo $_GET['name'].", ".$_GET['sex'];
?>
|
POST 使用範例:
| send.php | <!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="receive.php" method="post">
姓名:<input type="text" name="name"/><br>
性別:<input type="radio" name="sex" value="male"/>男
<input type="radio" name="sex" value="female"/>女
<br><input type="submit" value="送出"/>
</form>
</body>
|
| receive.php | <?php
echo $_POST['name'].", ".$_POST['sex'];
?>
|
使用 GET 時我們要將 form 元素的 method 屬性值設為 get;相對的,使用 POST 時屬性值就要設為 post。兩個方法的差別在於,GET 會將傳遞的資料放置在網址中,POST 則會將傳遞的資料放置在 HTTP 標頭 (header) 中。故 POST 較 GET 安全且可傳遞的資料量也較大。
事實上,使用 GET 時在網址中出現的那一串字串就是所謂的 URL 參數,其格式為「原網址?變數一的名稱=變數一的值&變數二的名稱=變數二的值&……」,因此您應該會看到「http://localhost/receive.php?name=YourName&sex=YourSex」。若您在欄位裡輸入中文,由於在傳遞時會經過編碼處理,所以您看到的參數值會有點累似亂碼。
註:POST 的資料大小上限由 php.ini 或 .htaccess 中的 post_max_size 參數決定。
思考:試說明如何間接地將一個 PHP 變數與一個 JavaScript 變數之值相互傳遞。