PHP get和post方法獲取form表單資料

2020-07-16 10:05:14
在 PHP 中使用 get 和 post 兩種方法接收來自 form 表單的值,在 form 表單中可以定義 PHP 的接收方式和接收地址。

get 和 post 方法主要有以下幾點區別。
  • get 是把引數資料佇列新增到提交表單的 action 屬性所指的 URL 中,值和表單內各個欄位一一對應,在 URL 中可以看到。post 是通過 HTTP post 機制將表單內各個欄位與其內容放置在 HTML HEADER 內一起傳送到 action 屬性所指的 URL 地址,使用者看不到這個過程。
  • get 傳送的資料量較小,不能大於 2KB,這主要是因為受 URL 長度限制。post 傳送的資料量較大,一般預設為不受限制。
  • get 安全性非常低,post 安全性較高,但是 get 執行效率卻比 post 方法好。
  • get 是 form 的預設方法。

建議在傳輸的資料包含機密資訊時用 post 資料提交方式,在做資料查詢時用 get 方式,在做資料新增、修改或刪除時用 post 方式。

PHP 獲取 form 表單的值

在 form 表單中,action 屬性定義提交表單的地址,method 屬性定義提交的方法,例如:
<form action="user.php" method="post">
    Username: <input type="text" name="user">
    Password: <input type="password" name="pwd">
    Birthday: <input type="date" name="bday">
    <input type="radio" name="sex" value="male">Male
    <input type="radio" name="sex" value="female">Female
    <!-- checkbox的name須使用陣列形式命名, 否則PHP只能接收到最後一個被選的值 -->
    <input type="checkbox" name="vehicle[]" value="Bike">bike
    <input type="checkbox" name="vehicle[]" value="Car">car
    <select name="car">
        <option value="volvo" >Volvo</option>
        <option value="saab" >Saab</option>
        <option value="mercedes" >Mercedes</option>
        <option value="audi" >Audi</option>
    </select>
    <input type="submit" value="Submit">
</form>
程式碼中定義接收表單值的地址是 user.php,接收方式是 post,所以我們編寫程式碼檢視在 user.php 中都接收到了哪些資料。user.php 中的程式碼如下:
<?php
var_dump($_POST);
?>
這裡用 $_POST 全域性變數接收來自表單提交的所有資料並列印出來,提交表單獲得的結果範例如下:

array(6)
{
    ["user"]=> string(5) "admin"
    ["pwd"]=> string(5) "admin"
    ["bday"]=> string(10) "2019-10-06"
    ["sex"]=> string(4) "male"
    ["vehicle"]=> array(2)
    {
        [0]=> string(4) "Bike"
        [1]=> string(3) "Car"
    }
    ["car"]=> string(5) "volvo"
}

注意,接收到的核取方塊 vehicle 是一個陣列。另外,$_POST 接收的值是一個以表單元素的 name 為鍵,以使用者選擇或輸入的值為對應值的陣列。

如果 form 中選擇使用get方式上傳資料,那麼將本例中的 post 改為 get 即可。