加入收藏 | 设为首页 | 会员中心 | 我要投稿 承德站长网 (https://www.0314zz.com.cn/)- 云开发、边缘计算、数据分析、视频终端、人体识别!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php form表单的验证+提交到数据库

发布时间:2022-08-02 13:59:55 所属栏目:PHP教程 来源:互联网
导读:php form表单的验证+提交到数据库 php表单的验证详解 首先我们对用户所有提交的数据都通过 PHP 的 htmlspecialchars() 函数处理。把特殊字符转换为 HTML 实体。这意味着 和 之类的 HTML 字符会被替换为 和 。这样可防止攻击者通过在表单中注入 HTML 或 JavaS
  php form表单的验证+提交到数据库
  php表单的验证详解
  首先我们对用户所有提交的数据都通过 PHP 的 htmlspecialchars() 函数处理。把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 < 和 > 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。
 
  当用户提交表单时,我们将做以下两件事情,:
 
  使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
 
  使用PHP stripslashes()函数去除用户输入数据中的反斜杠 ()
 
   
 
  格式匹配
 
  1、匹配姓名
 
  “/^[a-zA-Z ]*$/”
 
  只允许空格和字母,”^”表示开头,”$”表示结尾,[a-zA-Z ]表示a-z或者A-Z或者空格中的一个字符。
 
  其实例代码如下:
 
  <?php
 
  $name = $_POST['name'];
  if(!preg_match('/^[a-zA-Z]*$/',$name)){
    echo '只允许字母和空格';
  }
   
 
  2、匹配E-mail
 
  “/([w-]+@[w-]+.[w-]+)/”
 
  “w”匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’;
 
  +匹配前面的子表达式一次或多次;
 
  “-“匹配”-“。
 
   
 
  3、匹配URL
 
  “/b(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i”
 
  保留表单中的值
 
  在用户点击提交按钮后,为确保字段值是否输入正确,我们在HTML的input元素中插添加PHP脚本, 各字段名为: name, email, 和 website。 在评论的 textarea 字段中,我们将脚本放于 <textarea> 和 </textarea> 标签之间。 PHP脚本输出值为: $name, $email, $website, 和 $comment 变量。
 
   
 
  一个PHP表单验证完整实例,其代码如下:
 
  复制代码
  <!DOCTYPE HTML>
 
  <html>
 
    <head>
 
      <meta charset="utf-8">
 
      <title>form</title>
 
      <style>
 
        .error {color: #FF0000;}
 
      </style>
 
    </head>
 
    <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 (!preg_match("/^[a-zA-Z ]*$/",$name))
 
        {
 
          $nameErr = "只允许字母和空格";
 
        }
 
      }
 
      if (empty($_POST["email"]))
 
      {
 
        $emailErr = "邮箱是必需的";
 
      }
 
      else
 
      {
 
        $email = test_input($_POST["email"]);
 
        // 检测邮箱是否合法
 
        if (!preg_match("/([w-]+@[w-]+.[w-]+)/",$email))
 
        {
 
          $emailErr = "非法邮箱格式";
 
        }
 
      }
 
      if (empty($_POST["website"]))
 
      {
 
        $website = "";
 
      }
 
      else
 
      {
 
        $website = test_input($_POST["website"]);
 
        // 检测 URL 地址是否合法
 
        if (!preg_match("/b(?:(?:https?|ftp)://|www.)[-a-z0-9+&@#/%?=~_|!:,.;]*[-a-z0-9+&@#/%=~_|]/i",$website))
 
        {
 
          $websiteErr = "非法的 URL 的地址";
 
        }
 
      }
 
      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;
 
    }
 
    ?>
 
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
 
      名字: <input type="text" name="name" value="<?php echo $name;?>">
 
      <span class="error">* <?php echo $nameErr;?></span>
 
      <br><br>
 
      E-mail: <input type="text" name="email" value="<?php echo $email;?>">
 
      <span class="error">* <?php echo $emailErr;?></span>
 
      <br><br>
 
      网址: <input type="text" name="website" value="<?php echo $website;?>">
 
      <span class="error"><?php echo $websiteErr;?></span>
 
      <br><br>
 
      备注: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
 
      <br><br>
 
      性别:
 
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?>  value="female">女
 
      <input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?>  value="male">男
 
      <span class="error">* <?php echo $genderErr;?></span>
 
      <br><br>
 
      <input type="submit" name="submit" value="Submit">
 
    </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>

(编辑:承德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读