PHP 表单验证 - 完成表单实例

本节展示如何在用户提交表单后保留输入字段中的值。

PHP - 保留表单中的值

如需在用户点击提交按钮后在输入字段中显示值,我们在以下输入字段的 value 属性中增加了一小段 PHP 脚本:name、email 以及 website。在 comment 文本框字段中,我们把脚本放到了 <textarea> 与 </textarea> 之间。这些脚本输出 $name、$email、$website 和 $comment 变量的值。

然后,我们还需要显示选中了哪个单选按钮。对此,我们必须操作 checked 属性(而非单选按钮的 value 属性):

  1. Name: <input type="text" name="name" value="<?php echo $name;?>">
  2.  
  3. E-mail: <input type="text" name="email" value="<?php echo $email;?>">
  4.  
  5. Website: <input type="text" name="website" value="<?php echo $website;?>">
  6.  
  7. Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
  8.  
  9. Gender:
  10.  
  11. <input type="radio" name="gender"
  12. <?php if (isset($gender) && $gender=="female") echo "checked";?>
  13. value="female">Female
  14. <input type="radio" name="gender"
  15. <?php if (isset($gender) && $gender=="male") echo "checked";?>
  16. value="male">Male

PHP - 完整的表单实例

下面是 PHP 表单验证实例的完整代码:

实例

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <style>
  5. .error {color: #FF0000;}
  6. </style>
  7. </head>
  8. <body>
  9. <?php
  10. // 定义变量并设置为空值
  11. $nameErr = $emailErr = $genderErr = $websiteErr = "";
  12. $name = $email = $gender = $comment = $website = "";
  13. if ($_SERVER["REQUEST_METHOD"] == "POST") {
  14. if (empty($_POST["name"])) {
  15. $nameErr = "姓名是必填的";
  16. } else {
  17. $name = test_input($_POST["name"]);
  18. // 检查姓名是否包含字母和空白字符
  19. if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  20. $nameErr = "只允许字母和空格";
  21. }
  22. }
  23. if (empty($_POST["email"])) {
  24. $emailErr = "电邮是必填的";
  25. } else {
  26. $email = test_input($_POST["email"]);
  27. // 检查电子邮件地址语法是否有效
  28. if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
  29. $emailErr = "无效的 email 格式";
  30. }
  31. }
  32. if (empty($_POST["website"])) {
  33. $website = "";
  34. } else {
  35. $website = test_input($_POST["website"]);
  36. // 检查 URL 地址语法是否有效(正则表达式也允许 URL 中的斜杠)
  37. if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  38. $websiteErr = "无效的 URL";
  39. }
  40. }
  41. if (empty($_POST["comment"])) {
  42. $comment = "";
  43. } else {
  44. $comment = test_input($_POST["comment"]);
  45. }
  46. if (empty($_POST["gender"])) {
  47. $genderErr = "性别是必选的";
  48. } else {
  49. $gender = test_input($_POST["gender"]);
  50. }
  51. }
  52. function test_input($data) {
  53. $data = trim($data);
  54. $data = stripslashes($data);
  55. $data = htmlspecialchars($data);
  56. return $data;
  57. }
  58. ?>
  59. <h2>PHP 验证实例</h2>
  60. <p><span class="error">* 必需的字段</span></p>
  61. <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  62. 姓名:<input type="text" name="name">
  63. <span class="error">* <?php echo $nameErr;?></span>
  64. <br><br>
  65. 电邮:<input type="text" name="email">
  66. <span class="error">* <?php echo $emailErr;?></span>
  67. <br><br>
  68. 网址:<input type="text" name="website">
  69. <span class="error"><?php echo $websiteErr;?></span>
  70. <br><br>
  71. 评论:<textarea name="comment" rows="5" cols="40">