PHP實現表單完整驗證


一、表單實現樣例

 

在表單中利用POST 提交信息,之后獲取到后進行輸出。

二、源碼實現

在源碼中有詳細注釋

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 <meta charset="UTF-8">
  5 <title>表單驗證網頁</title>
  6 <style>
  7 .error {
  8     color: #FF0000;
  9 }
 10 </style>
 11 </head>
 12 <body>
 13     <!-- php腳本對用戶輸入進行判斷 -->
 14 <?php
 15 // 定義初始變量
 16 $nameErr = $emailErr = $genderErr = $websiteErr = ";";
 17 $name = $email = $gender = $website = $comment = $speciality = "";
 18 $hobbies = NULL;
 19 if ($_SERVER['REQUEST_METHOD'] == "POST") {
 20     // 對name輸入進行驗證
 21     if (empty($_POST["name"])) {
 22         $nameErr = "名字不能為空";
 23     } else {
 24         $name = test_input($_POST["name"]);
 25         if (! preg_match("/^[a-zA-Z ]*$/", $name)) {
 26             // 進行正則表達式的匹配,如果無法匹配,就設置$nameErr
 27             $nameErr = "只允許字母和空格";
 28         }
 29     }
 30     // 同理對email進行驗證
 31     if (empty($_POST["email"])) {
 32         $emailErr = "郵箱不能為空";
 33     } else {
 34         $email = test_input($_POST["email"]);
 35         if (! preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {
 36             $emailErr = "郵箱格式不正確";
 37         }
 38     }
 39     // 個人網站
 40     if (empty($_POST["website"])) {
 41         $website = "";
 42     } else {
 43         $website = test_input($_POST["website"]);
 44         if (! preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $website)) {
 45             $websiteErr = "網站格式非法";
 46         }
 47     }
 48     // 簡介部分
 49     if (empty($_POST["comment"])) {
 50         $comment = "";
 51     } else {
 52         $comment = test_input($_POST["comment"]);
 53     }
 54     // 性別
 55     if (empty($_POST["gender"])) {
 56         $genderErr = "性別是必需的";
 57     } else {
 58         $gender = test_input($_POST["gender"]);
 59     }
 60     // 專業
 61     if (empty($_POST["speciality"])) {
 62         $speciality = "";
 63     } else {
 64         $speciality = $_POST["speciality"];
 65     }
 66     // 愛好
 67     if (isset($_POST["hobbies"])) {
 68         $hobbies = $_POST["hobbies"];
 69     }
 70 }
 71 
 72 // 通過這個函數來對輸入數據進行檢測,防止CSS注入腳本攻擊
 73 function test_input($data)
 74 {
 75     $data = trim($data); // 去除用戶輸入中的空格、tab、換行符等信息
 76     $data = stripcslashes($data); // 去除輸入中的"/"反斜杠,防止有轉義符的存在
 77     $data = htmlspecialchars($data); // 再次將數據轉回html轉義代碼
 78     return $data;
 79 }
 80 ?>
 81 
 82 <h2>PHP 表單驗證實例</h2>
 83     <p>
 84         <span class="error">* 必需字段。</span>
 85     </p>
 86 <!--     表單內容提交后均有記錄,提交后不會清空當前頁面的所有內容
 87         能夠實現再次填寫。
 88  -->
 89     <form method="post"
 90         action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
 91         名字: <input type="text" name="name" value="<?php echo $name;?>"> <span
 92             class="error">* <?php echo $nameErr;?></span> <br> <br> E-mail: <input
 93             type="text" name="email" value="<?php echo $email;?>"> <span
 94             class="error">* <?php echo $emailErr;?></span> <br> <br> 網址: <input
 95             type="text" name="website" value="<?php echo $website;?>"> <span
 96             class="error"><?php echo $websiteErr;?></span> <br> <br> 備注:
 97         <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
 98         <br> <br> 性別: <input type="radio" name="gender"
 99             <?php if (isset($gender) && $gender=="female") echo "checked";?>
100             value="female">女 <input type="radio" name="gender"
101             <?php if (isset($gender) && $gender=="male") echo "checked";?>
102             value="male">男 <span class="error">* <?php echo $genderErr;?></span><br>
103         專業: <select name="speciality" id="select">
104             <option value=""
105                 <?php if (isset($speciality) && $speciality=="") echo "selected";?>>請選擇</option>
106             <option value="java"
107                 <?php if (isset($speciality) && $speciality=="java") echo "selected";?>>Java</option>
108             <option value="python"
109                 <?php if (isset($speciality) && $speciality=="python") echo "selected";?>>Python</option>
110             <option value="android"
111                 <?php if (isset($speciality) && $speciality=="android") echo "selected";?>>Android</option>
112             <option value="ios"
113                 <?php if (isset($speciality) && $speciality=="ios") echo "selected";?>>Ios</option>
114         </select><br> 愛好: <br> <input type="checkbox" name="hobbies[]"
115             value="game"
116             <?php if (isset($hobbies) && in_array("game", $hobbies)) echo "checked";?>>打游戲<br>
117         <input type="checkbox" name="hobbies[]" value="ball"
118             <?php if (isset($hobbies) && in_array("ball", $hobbies)) echo "checked";?>>打球
119         <br> <input type="checkbox" name="hobbies[]" value="music"
120             <?php if (isset($hobbies) && in_array("music", $hobbies)) echo "checked";?>>聽音樂<br>
121 
122         <br> <br> <input type="submit" name="submit" value="Submit"
123             onclick="selected()">
124     </form>
125     
126 <?php
127 echo "<h2>您輸入的內容是:</h2>";
128 echo "姓名", $name;
129 echo "<br>";
130 echo "郵箱", $email;
131 echo "<br>";
132 echo "網站", $website;
133 echo "<br>";
134 echo "簡介", $comment;
135 echo "<br>";
136 echo "性別", $gender;
137 echo "<br>";
138 echo "專業", $speciality;
139 echo "<br>";
140 echo "愛好";
141 if (is_array($hobbies)) {
142     for ($i = 0; $i < count($hobbies); $i ++) {
143         echo $hobbies[$i], ",";
144     }
145 }
146 ?>
147 </body>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM