在先前的文章中為大家帶來了《PHP表單學習之表單的輸入與驗證》,其中詳細的介紹了PHP中的表單輸入與驗證的相關知識,本篇我們來繼續看一下怎樣驗證表單中的必要欄位。希望對大家有幫助!
在先前的文章中,我們了解了表單中的輸入與透過PHP來對表單進行簡單的驗證的相關知識。在其中我們輸入資訊的時候即使我們的資訊沒有輸入,也不會提示我們。我們在日常生活中,遇到需要填寫資料的時候,一些重要的資訊我們是必填的,一旦我們不填的話,會有提示資訊來告訴我們,說哪裡的資訊沒有填寫。
這其實就是我們所說的必需字段,那這樣必需字段必填的效果是怎樣實現的呢?那接下來我們就一起來看看怎樣搞定表單中的必需欄位以及錯誤訊息吧。
PHP必需字段
我們在日常註冊時要填寫資料中就遇到過必需字段,必需字段就是我們填寫資料的時候,必須填寫的,不然是沒有辦法通過的。
在先前的文章中我們已經介紹了表單的驗證規則,其中我們舉的例子中介紹到了:名字的驗證規則是必須的,E-mail的驗證規則是必須的,其中必須是一個有效的電子郵件地址(包含'@
'和'.
')。性別的驗證規則是必須的,必須選擇一個。這就是屬於我們勢力中的必要字段了。
在先前文章的範例中,所有輸入欄位都是可選的,因為我們沒有對它們進行驗證。那要怎麼樣才能達到必需欄位必填的效果呢?
這時候我們可以在以下程式碼中我們加入了一些新的變數: $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"]); } } ?>
輸出結果目前看不到,這段程式碼需要透過表單程式碼來驗證表單的資料。
名字的驗證規則是必須的,E-mail的驗證規則是必須的,其中必須是有效的電子郵件地址(包含'@'和'.')。性別的驗證規則是必須的,必須選擇一個。
透過上述程式碼我們還不能夠將錯誤顯示出來,上述的程式碼知識我們在名字、信箱和性別這三個必要欄位輸入框內甚麼都不寫就提交的話,會在頁面上顯示出錯誤的訊息。如果不是空白就會被驗證,再去執行lse 語句裡面的內容。那接下來我們來看看怎樣把錯誤的訊息顯示出來。
在的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>
經過驗證資料之後,一旦未填寫我們帶有標記的姓名、電子郵件和性別資訊就點提交的話,輸出結果如下:
由上述範例,我們便透過$nameErr, $emailErr, $genderErr, 和 $websiteErr這些變量,以及ifelse語句來配合錯誤顯示完成了PHP表單中必需欄位的填寫要求。
如果感覺只是文字提醒不夠醒目的話,在我們的日常生活中比較常見的就是當你點擊提交後,頁面會有一個小彈窗,接下來作為拓展知識,我們來看一下怎麼實現彈跳窗提醒。
範例如下:
<!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 = "<script language=\"javascript\"> //声明标识符 { alert(\"姓名是必填的\"); //弹出对话框 } </script>"; } else { $name = test_input($_POST["name"]); } if (empty($_POST["email"])) { $emailErr = "<script language=\"javascript\"> //声明标识符 { alert(\"电邮是必填的\"); //弹出对话框 } </script>"; } 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 = "<script language=\"javascript\"> //声明标识符 { alert(\"性别是必选的\"); //弹出对话框 } </script>"; } 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="提交" onclick="MsgBox()"> </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>
當我們正常輸入結果時,輸出結果如下:
當我們沒有輸出結果時,頁面會出現下面彈跳窗,哪一項沒有填寫就會有哪一項的彈跳窗提醒:
大家如果有興趣的話,可以點選《PHP影片教學》進行更多關於PHP知識的學習。
以上是PHP表單學習如何驗證表單中的必要欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!