php实现表单校验功能

php实现表单校验功能

  • Bootstrap
  • 新建网站
  • 前端HTML
  • 后端
  • 正则表达式

Bootstrap

bootstrap

前端框架,主要负责美化UI,纯后端校验,未做前端校验
注意:前端校验可以提升用户体验(反馈快),减少服务器压力(减少无意义的请求)
后端验证是防止接口被私自调用导致破坏数据库结构,如果后端不验证,相当于数据库就裸奔了
所以几乎所有的业务场景中前后端都需要做校验工作

新建网站

点击新建网站,设置域名,根目录,修改默认首页即可
php实现表单校验功能_第1张图片
请添加图片描述
新建成功

前端HTML

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #form {
      width: 600px;
      margin: 150px auto;
      padding: 10px;
      border: 1px;
    }
  </style>
  <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
    integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
</head>

<body>
  <form id="form" action="index.php" method="post">
    <div class="form-group">
      <label for="exampleInputEmail1">Email address</label>
      <input type="text" class="form-control" id="exampleInputEmail1" placeholder="Email" name="email">
    </div>
    <div class="form-group">
      <label for="exampleInputPassword1">Password</label>
      <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password" name="password">
    </div>
    <div class="form-group">
      <label for="exampleInputEmail1">ipone</label>
      <input type="text" class="form-control" id="exampleInputIPONE" placeholder="ipone" name="ipone">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
  </form>
</body>

</html>

后端

<?php
$error = array();
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    if(empty($_POST["email"])){
         array_push($error,"注意email是必填项");
    }else{
         $email = check($_POST["email"]);

    }
    if(empty($_POST["ipone"])){
        array_push($error,"注意ipone是必填项");
    }else{
        $ipone = check($_POST["ipone"]);
        if(!preg_match("/^1\d{10}$/",$ipone) == FALSE){
            array_push($ipone,"手机号输入不合法");
        }
    }
    if(empty($_POST["password"])){
        array_push($error,"注意password是必填项");
    }else{
        $password = check($_POST["password"]);
        if(!preg_match("/^\w{6,}$/",$password) == FALSE){
            array_push($password,"密码输入不合法");
        }
    }
} 
function check(){
     $data = trim($value);//移除字符串两侧的空白字符
     $data = htmlspecialchars($data);//把预定义字符转化为实体,可以防御XSS
     return $data;
}
$message = <<<EOT
<script>alert('$error[0]'); history.back(-1);</script>
EOT;

if(count($error) > 0){
    echo $message;
}else{
    echo "注册成功";
}
?>

注意:后端是通过name属性获取

正则表达式

  • preg_match()
    完成正则匹配
    /。/创建一个正则模式
    \w 代表一个字符的范围[0-9 a-z A-Z]
    +一个或多个
    ^ 字符的起始位置
    $ 字符的结束位置
    .任意字符
    .转义把”."当成普通字符
    \d 一个字符的范围是0-9
    {N}这个字符运行出现多少个
    {n,}这个字符允许出现n个以上

你可能感兴趣的:(Php,php,前端,开发语言)