PHP 表單 - 必需字段

不知道大家有沒有註意,平常我們上網的時候,有些網站是要註冊帳號的,在我們註冊帳號時,是需要填寫資料的,如果我們有重要的資料沒有填寫的話,會有提示給我們,說什麼什麼是必須填寫的。我們本章節就來講解表單的必要欄位及錯誤訊息。


PHP - 必要欄位

必須欄位就是我們填寫資料的時候,必須填寫的,不然是沒有辦法通過的,

在上一章我們已經介紹了表單的驗證規則,我們可以看到"名字", "E-mail", 和"性別" 字段是必需的,各字段不能為空,這就是必須字段。

#         驗證規則上必須。 +只能包含字母和空格必須。 + 必須是有效的電子郵件地址(包含'@'和'.')
           #            欄位##         驗證規則上
    名字
    E-mail
#    網址可選。如果存在,它必須包含一個有效的URL可選。 多行輸入欄位(文字域)
    評論
######    性別######必須。 必須選擇一個#############

在上一節中,所有輸入欄位都是可選的,因為我們沒有對它們進行驗證。

 在以下程式碼中我們加入了一些新的變數: $nameErr, $emailErr, $genderErr, 和 $websiteErr.。這些錯誤變數將顯示在必需欄位上。 我們也為每個$_POST變數增加了一個if else語句。 這些語句會檢查 $_POST 變數是 否為空(使用php的 empty() 函數)。如果為空,將顯示對應的錯誤訊息。 如果不為空,資料將傳遞給test_input() 函數:

<?php
 // 定义变量并默认设为空值
 $nameErr = $emailErr = $genderErr = $websiteErr = "";
 $name = $email = $gender = $comment = $website = "";
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
     if (empty($_POST["name"])) {
         $nameErr = "名字是必需的。";
     } else {
         $name = test_input($_POST["name"]);
     }
 
     if (empty($_POST["email"])) {
         $emailErr = "邮箱是必需的。";
     } else {
         $email = test_input($_POST["email"]);
     }
 
     if (empty($_POST["website"])) {
         $website = "";
     } else {
         $website = test_input($_POST["website"]);
     }
 
     if (empty($_POST["comment"])) {
         $comment = "";
     } else {
         $comment = test_input($_POST["comment"]);
     }
 
     if (empty($_POST["gender"])) {
         $genderErr = "性别是必需的。";
     } else {
         $gender = test_input($_POST["gender"]);
     }
 }
 ?>

上面得到程式碼的意思就是,如果我們在名字,郵箱,性別這三個必須字段輸入框內什麼都不寫就提交的話,那麼在頁面上就會顯示相應的錯誤信息,什麼名字是必需的,郵箱是必需的。如果不是空白,那麼就會通過驗證,執行else 語句裡面的內容。

但是上面的程式碼還不能把錯誤訊息顯示出來。讓我們往下看。



PHP - 顯示錯誤訊息

在以下的HTML實例表單中,我們為每個欄位中加入了一些腳本, 各個腳本會在資訊輸入錯誤時顯示錯誤資訊. (如果使用者未填寫資訊就提交表單則會輸出錯誤訊息):

實例

<!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>PHP中文网</title>
 </head>
 
 <style>
     .error {color: #FF0000;}
 </style>
 <body>
 <?php
 // 定义变量并设置为空值
 $nameErr = $emailErr = $genderErr = $websiteErr = "";
 $name = $email = $gender = $comment = $website = "";
 
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
     if (empty($_POST["name"])) {
         $nameErr = "姓名是必填的";
     } else {
         $name = test_input($_POST["name"]);
     }
 
     if (empty($_POST["email"])) {
         $emailErr = "电邮是必填的";
     } else {
         $email = test_input($_POST["email"]);
     }
 
     if (empty($_POST["website"])) {
         $website = "";
     } else {
         $website = test_input($_POST["website"]);
     }
 
     if (empty($_POST["comment"])) {
         $comment = "";
     } else {
         $comment = test_input($_POST["comment"]);
     }
 
     if (empty($_POST["gender"])) {
         $genderErr = "性别是必选的";
     } else {
         $gender = test_input($_POST["gender"]);
     }
 }
 
 function test_input($data) {
     $data = trim($data);
     $data = stripslashes($data);
     $data = htmlspecialchars($data);
     return $data;
 }
 ?>
 
 <h2>PHP 验证实例</h2>
 <p><span class="error">* 必需的字段</span></p>
 <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
     姓名:<input type="text" name="name">
     <span class="error">* <?php echo $nameErr;?></span>
     <br><br>
     电邮:<input type="text" name="email">
     <span class="error">* <?php echo $emailErr;?></span>
     <br><br>
     网址:<input type="text" name="website">
     <span class="error"><?php echo $websiteErr;?></span>
     <br><br>
     评论:<textarea name="comment" rows="5" cols="40"></textarea>
     <br><br>
     性别:
     <input type="radio" name="gender" value="female">女性
     <input type="radio" name="gender" value="male">男性
     <span class="error">* <?php echo $genderErr;?></span>
     <br><br>
     <input type="submit" name="submit" value="提交">
 </form>
 
 <?php
 echo "<h2>您的输入:</h2>";
 echo $name;
 echo "<br>";
 echo $email;
 echo "<br>";
 echo $website;
 echo "<br>";
 echo $comment;
 echo "<br>";
 echo $gender;
 ?>
 
 </body>
 </html>

2.png

##上面的範例如果我們在帶*的幾個輸入框沒有填寫內容就提交的話,就會顯示下面這樣的頁面:


反正則通過。

###接下來是驗證輸入數據,即“Name 欄位是否只包含字母和空格?”,以及“E-mail 欄位是否包含有效的電子郵件地址語法?”,如果填寫了Website 字段,「這個字段是否包含了有效的URL?」。 ############
繼續學習
||
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PHP中文网</title> </head> <style> .error {color: #FF0000;} </style> <body> <?php // 定义变量并设置为空值 $nameErr = $emailErr = $genderErr = $websiteErr = ""; $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "姓名是必填的"; } else { $name = test_input($_POST["name"]); } if (empty($_POST["email"])) { $emailErr = "电邮是必填的"; } else { $email = test_input($_POST["email"]); } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } if (empty($_POST["gender"])) { $genderErr = "性别是必选的"; } else { $gender = test_input($_POST["gender"]); } } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>PHP 验证实例</h2> <p><span class="error">* 必需的字段</span></p> <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 姓名:<input type="text" name="name"> <span class="error">* <?php echo $nameErr;?></span> <br><br> 电邮:<input type="text" name="email"> <span class="error">* <?php echo $emailErr;?></span> <br><br> 网址:<input type="text" name="website"> <span class="error"><?php echo $websiteErr;?></span> <br><br> 评论:<textarea name="comment" rows="5" cols="40"></textarea> <br><br> 性别: <input type="radio" name="gender" value="female">女性 <input type="radio" name="gender" value="male">男性 <span class="error">* <?php echo $genderErr;?></span> <br><br> <input type="submit" name="submit" value="提交"> </form> <?php echo "<h2>您的输入:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body> </html>