--------------------------------------------------------------------------php
本節展現如何製做必填輸入字段,並建立須要時所用的錯誤消息。html
--------------------------------------------------------------------------web
從上一節中的驗證規則中,咱們看到 "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
在 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?」。