Bootstrap
前端框架,主要负责美化UI,纯后端校验,未做前端校验
注意:前端校验可以提升用户体验(反馈快),减少服务器压力(减少无意义的请求)
后端验证是防止接口被私自调用导致破坏数据库结构,如果后端不验证,相当于数据库就裸奔了
所以几乎所有的业务场景中前后端都需要做校验工作
新建网站
点击新建网站,设置域名,根目录,修改默认首页即可
新建成功
前端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个以上