• 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("/(?:(?: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>
  • 相关阅读:
    Spark SQL ---一般有用
    idea快捷键
    04.Scala编程实战 ---没看
    03.Scala高级特性 ---没看
    02.Actor编程 ---没看
    01.Scala编程基础 ---没看
    附6、Storm面试题目答疑 ---一般有用
    扩展运算符
    ES6新增数组方法(部分)
    for of 循环
  • 原文地址:https://www.cnblogs.com/null-/p/9717313.html
Copyright © 2020-2023  润新知