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 變數之值相互傳遞。