2024 年日本 PHP 研討會

表單處理

PHP 最強大的功能之一就是它處理 HTML 表單的方式。需要理解的基本概念是任何表單元素都會自動提供給您的 PHP 腳本使用。請閱讀手冊中關於來自外部來源的變數的章節,以取得更多關於使用 PHP 處理表單的資訊和範例。以下是一個 HTML 表單範例

範例 #1 一個簡單的 HTML 表單

<form action="action.php" method="post">
    <label for="name">Your name:</label>
    <input name="name" id="name" type="text">

    <label for="age">Your age:</label>
    <input name="age" id="age" type="number">

    <button type="submit">Submit</button>
</form>

這個表單沒有任何特殊之處。它是一個沒有任何特殊標籤的標準 HTML 表單。當使用者填寫此表單並按下提交按鈕時,會呼叫 action.php 頁面。在此檔案中,您可以編寫如下程式碼

範例 #2 從我們的表單列印資料

<?php echo htmlspecialchars($_POST['name']); ?>
您的年齡是 <?php echo (int) $_POST['age']; ?> 歲。

此腳本的範例輸出可能是

Hi Joe. You are 22 years old.

除了 htmlspecialchars()(int) 部分之外,它的作用應該很明顯。 htmlspecialchars() 會確保在 HTML 中具有特殊意義的任何字元都經過正確編碼,這樣人們就無法將 HTML 標籤或 Javascript 注入到您的頁面中。對於年齡欄位,因為我們知道它是一個數字,我們可以將其轉換整數,這將自動清除任何雜亂的字元。您也可以使用 過濾器 擴充功能讓 PHP 自動為您執行此操作。 $_POST['name']$_POST['age'] 變數是由 PHP 自動為您設定的。之前我們使用了 $_SERVER 超全域變數;上面我們剛剛介紹了包含所有 POST 資料的 $_POST 超全域變數。請注意我們的表單的 *方法* 是 POST。如果我們使用 *GET* 方法,那麼我們的表單資訊將會存放在 $_GET 超全域變數中。如果您不關心請求資料的來源,您也可以使用 $_REQUEST 超全域變數。它包含 GET、POST 和 COOKIE 資料的合併資訊。

新增註釋

使用者貢獻的註釋 1 則註釋

sethg at ropine dot com
21 年前
根據 HTTP 規範,當您使用表單更改伺服器端某些內容的狀態時,您應該使用 POST 方法。例如,如果一個頁面有一個表單允許使用者新增自己的評論,就像此頁面一樣,則該表單應該使用 POST。如果您在通過 POST 到達的頁面上點擊「重新載入」或「重新整理」,幾乎總是一個錯誤——您不應該發佈兩次相同的評論——這就是為什麼這些頁面沒有被加入書籤或快取的原因。

當您的表單是從伺服器獲取某些內容而不是實際更改任何內容時,您應該使用 GET 方法。例如,搜尋引擎的表單應該使用 GET,因為搜尋網站不應該更改客戶端可能關心的任何內容,並且將搜尋引擎查詢的結果加入書籤或快取與將靜態 HTML 頁面加入書籤或快取一樣有用。
To Top