PHP 表單驗證 - 必填字段

--------------------------------------------------------------------------php

本節展現如何製做必填輸入字段,並建立須要時所用的錯誤消息。html

--------------------------------------------------------------------------web

PHP - 輸入字段

從上一節中的驗證規則中,咱們看到 "Name", "E-mail" 以及 "Gender" 字段是必需的。這些字段不能爲空且必須在 HTML 表單中填寫。函數

在上一節中,全部輸入字段都是可選的。post

在下面的代碼中咱們增長了一些新變量:$nameErr、$emailErr、$genderErr 以及 $websiteErr。這些錯誤變量會保存被請求字段的錯誤消息。咱們還爲每一個 $_POST 變量添加了一個 if else 語句。這條語句檢查 $_POST 變量是否爲空(經過 PHP empty() 函數)。若是爲空,則錯誤消息會存儲於不一樣的錯誤變量中。若是不爲空,則經過 test_input() 函數發送用戶輸入數據:ui

 1 <?php
 2 // 定義變量並設置爲空值
 3 $nameErr = $emailErr = $genderErr = $websiteErr = "";
 4 $name = $email = $gender = $comment = $website = "";
 5 
 6 if ($_SERVER["REQUEST_METHOD"] == "POST") {
 7   if (empty($_POST["name"])) {
 8     $nameErr = "Name is required";
 9   } else {
10     $name = test_input($_POST["name"]);
11   }
12 
13   if (empty($_POST["email"])) {
14     $emailErr = "Email is required";
15   } else {
16     $email = test_input($_POST["email"]);
17   }
18 
19   if (empty($_POST["website"])) {
20     $website = "";
21   } else {
22     $website = test_input($_POST["website"]);
23   }
24 
25   if (empty($_POST["comment"])) {
26     $comment = "";
27   } else {
28     $comment = test_input($_POST["comment"]);
29   }
30 
31   if (empty($_POST["gender"])) {
32     $genderErr = "Gender is required";
33   } else {
34     $gender = test_input($_POST["gender"]);
35   }
36 }
37 ?>

 

----------------------------------------------------------------------------spa

PHP - 顯示錯誤消息

在 HTML 表單中,咱們在每一個被請求字段後面增長了一點腳本。若是須要,會生成恰當的錯誤消息(若是用戶未填寫必填字段就試圖提交表單):code

實例

 1 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
 2 
 3 Name: <input type="text" name="name">
 4 <span class="error">* <?php echo $nameErr;?></span>
 5 <br><br>
 6 E-mail:
 7 <input type="text" name="email">
 8 <span class="error">* <?php echo $emailErr;?></span>
 9 <br><br>
10 Website:
11 <input type="text" name="website">
12 <span class="error"><?php echo $websiteErr;?></span>
13 <br><br>
14 <label>Comment: <textarea name="comment" rows="5" cols="40"></textarea>
15 <br><br>
16 Gender:
17 <input type="radio" name="gender" value="female">Female
18 <input type="radio" name="gender" value="male">Male
19 <span class="error">* <?php echo $genderErr;?></span>
20 <br><br>
21 <input type="submit" name="submit" value="Submit"> 
22 
23 </form>

 

源代碼:orm

 1 <!DOCTYPE HTML> 
 2 <html>
 3 <head>
 4 <style>
 5 .error {color: #FF0000;}
 6 </style>
 7 </head>
 8 <body> 
 9 
10 <?php
11 // 定義變量並設置爲空值
12 $nameErr = $emailErr = $genderErr = $websiteErr = "";
13 $name = $email = $gender = $comment = $website = "";
14 
15 if ($_SERVER["REQUEST_METHOD"] == "POST") {
16    if (empty($_POST["name"])) {
17      $nameErr = "姓名是必填的";
18    } else {
19      $name = test_input($_POST["name"]);
20    }
21    
22    if (empty($_POST["email"])) {
23      $emailErr = "電郵是必填的";
24    } else {
25      $email = test_input($_POST["email"]);
26    }
27      
28    if (empty($_POST["website"])) {
29      $website = "";
30    } else {
31      $website = test_input($_POST["website"]);
32    }
33 
34    if (empty($_POST["comment"])) {
35      $comment = "";
36    } else {
37      $comment = test_input($_POST["comment"]);
38    }
39 
40    if (empty($_POST["gender"])) {
41      $genderErr = "性別是必選的";
42    } else {
43      $gender = test_input($_POST["gender"]);
44    }
45 }
46 
47 function test_input($data) {
48    $data = trim($data);
49    $data = stripslashes($data);
50    $data = htmlspecialchars($data);
51    return $data;
52 }
53 ?>
54 
55 <h2>PHP 驗證明例</h2>
56 <p><span class="error">* 必需的字段</span></p>
57 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
58    姓名:<input type="text" name="name">
59    <span class="error">* <?php echo $nameErr;?></span>
60    <br><br>
61    電郵:<input type="text" name="email">
62    <span class="error">* <?php echo $emailErr;?></span>
63    <br><br>
64    網址:<input type="text" name="website">
65    <span class="error"><?php echo $websiteErr;?></span>
66    <br><br>
67    評論:<textarea name="comment" rows="5" cols="40"></textarea>
68    <br><br>
69    性別:
70    <input type="radio" name="gender" value="female">女性
71    <input type="radio" name="gender" value="male">男性
72    <span class="error">* <?php echo $genderErr;?></span>
73    <br><br>
74    <input type="submit" name="submit" value="提交"> 
75 </form>
76 
77 <?php
78 echo "<h2>您的輸入:</h2>";
79 echo $name;
80 echo "<br>";
81 echo $email;
82 echo "<br>";
83 echo $website;
84 echo "<br>";
85 echo $comment;
86 echo "<br>";
87 echo $gender;
88 ?>
89 
90 </body>
91 </html>

運行結果:htm

接下來是驗證輸入數據,即「Name 字段是否只包含字母和空格?」,以及「E-mail 字段是否包含有效的電子郵件地址語法?」,而且若是填寫了 Website 字段,「這個字段是否包含了有效的 URL?」。

相關文章
相關標籤/搜索