一、表單實現樣例
在表單中利用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>