PHP表單(get,post)提交方式

  • PHP 表單處理

PHP 超全局變量 $_GET $_POST 用於收集表單數據(form-data)。php

    • $_GET 是經過 URL 參數傳遞到當前腳本的變量數組。
    • $_POST 是經過 HTTP POST 傳遞到當前腳本的變量數組。

有一點很重要的事情值得注意,當處理 HTML 表單時,PHP 能把來自 HTML 頁面中的表單元素自動變成可供 PHP 腳本使用。html

  • $_GET 變量

預約義的 $_GET 變量用於收集來自 method="get" 的表單中的值。web

從帶有 GET 方法的表單發送的信息,對任何人都是可見的(會顯示在瀏覽器的地址欄),而且對發送信息的量也有限制。數組

例:form.html 文件代碼

<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<form action="welcome.php" method="get"> 名字: <input type="text" name="fname"> 年齡: <input type="text" name="age">
<input type="submit" value="提交">
</form>

</body>
</html>

當用戶點擊 "Submit" 按鈕時,發送到服務器的 URL 以下所示: http://www.runoob.com/welcome.php?fname=Runoob&amp;age=3 瀏覽器

"welcome.php" 文件如今能夠經過 $_GET 變量來收集表單數據了(請注意,表單域的名稱自動成爲 $_GET 數組中的鍵):安全

歡迎 <?php echo $_GET["fname"]; ?>!<br> 你的年齡是 <?php echo $_GET["age"]; ?>  歲。
  • 什麼時候使用 method="get"?

    在 HTML 表單中使用 method="get" 時,全部的變量名和值都會顯示在 URL 中。服務器

    註釋:因此在發送密碼或其餘敏感信息時,不該該使用這個方法!不安全函數

    然而,正由於變量顯示在 URL 中,所以能夠在收藏夾中收藏該頁面。在某些狀況下,這是頗有用的。post

    註釋:HTTP GET 方法不適合大型的變量值。它的值是不能超過 2000 個字符的。spa

  • $_POST 變量

預約義的 $_POST 變量用於收集來自 method="post" 的表單中的值。

從帶有 POST 方法的表單發送的信息,對任何人都是不可見的(不會顯示在瀏覽器的地址欄),而且對發送信息的量也沒有限制。

註釋:然而,默認狀況下,POST 方法的發送信息的量最大值爲 8 MB(可經過設置 php.ini 文件中的 post_max_size 進行更改)。

例:form.html 文件代碼

<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<form action="welcome.php" method="post"> 名字: <input type="text" name="fname"> 年齡: <input type="text" name="age">
<input type="submit" value="提交">
</form>

</body>
</html>

當用戶點擊 "提交" 按鈕時,URL 相似以下所示: http://www.runoob.com/welcome.php 

"welcome.php" 文件如今能夠經過 $_POST 變量來收集表單數據了(請注意,表單域的名稱會自動成爲 $_POST 數組中的鍵):

歡迎 <?php echo $_POST["fname"]; ?>!<br> 你的年齡是 <?php echo $_POST["age"]; ?>  歲。
  • 什麼時候使用 POST?

經過 POST 方法從表單發送的信息對其餘人是不可見的(安全)(全部名稱/值會被嵌入 HTTP 請求的主體中),而且對所發送信息的數量也無限制

此外 POST 支持高階功能,好比在向服務器上傳文件時進行 multi-part 二進制輸入。

不過,因爲變量未顯示在 URL 中,也就沒法將頁面添加到書籤

大多數開發者偏心 POST 來發送表單數據。

  • 經過 PHP 驗證表單數據

咱們要作的第一件事是經過 PHP 的 htmlspecialchars() 函數傳遞全部變量。

在咱們使用 htmlspecialchars() 函數後,若是用戶試圖在文本字段中提交如下內容:

<script>location.href('http://www.hacked.com')</script>

- 代碼不會執行,由於會被保存爲轉義代碼,就像這樣:

&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

如今這條代碼顯示在頁面上或 e-mail 中是安全的。

在用戶提交該表單時,咱們還要作兩件事:

  1. (經過 PHP trim() 函數)去除用戶輸入數據中沒必要要的字符(多餘的空格、製表符、換行)
  2. (經過 PHP stripslashes() 函數)刪除用戶輸入數據中的反斜槓(\)

接下來咱們建立一個檢查函數(相比一遍遍地寫代碼,這樣效率更好)。

咱們把函數命名爲 test_input()。

如今,咱們可以經過 test_input() 函數檢查每一個 $_POST 變量,腳本是這樣的:

  • <?php // 定義變量並設置爲空值
    $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?>
相關文章
相關標籤/搜索