前端:用户输入
post传参,提交表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="06.php" method="post" >
用户名<input type="text" name="username">
邮箱<input type="text" name="email">
<input type="submit">
</form>
</body>
</html>
后端用户输入验证
验证用户输入内容及格式是否正确
实例代码
<?php
header("content-type:text/html;charset=utf8");
//获取post请求提交的表单中,名为emali的值
//isset判断传入变量,判断变量状态
if(isset($_POST["email"])){
$email = $_POST["email"];
//正则判断格式是否正确,正则匹配成功返回true,反之则为false
$estimate = preg_match("/^\w{6,12}@[a-z0-9]{2,}\.(com|cn)$/",$email);
echo $estimate . '<br>' . '<hr>';
//!:取反,如果源判断为false取反后为true
if(!$estimate){
echo '内容或格式错误' . '<br>' . '<hr>';
}else{
echo '邮箱正确' . '<br>' . '<hr>';
}
}else{
//直接进入后端页面时触发:变量值为NULL,或变量不存在
echo '<script>alert("请通过正规途径进入")</script>';
}
//empty判断变量值,空为true,非空:false
if(!empty($_POST["username"])){
echo 'name is existence';
}else{
echo "<script>alert('请输入用户名')</script>";
}
/*
扩展:前端未填写任何值就提交表单,表单内字段实际上是存在的,只是它的值是一个空字符串。
在 PHP 中,空字符串是一个有效的值,因此 isset() 会认为变量已经被设置,即使它的值是空的。
*/
?>
代码运行逻辑
1.使用 isset 函数检查前端是否通过 post 方式传参,如果没有则触发else判断输出js代码进行弹窗提醒
2.如果前端正常post传参,则通过变量email,存储post表单中name为email对应的值
3.进行正则匹配,并将匹配结果存储到变量estimate中,正则详情见下文
4.输出变量内容,true为1,false为0或不显示
5.if判断中执行逻辑非运算符,将结果逆转
此时如果源判断为false则逆转为true,触发if判断主句,输出指定内容并拼接html标签提供页面可读性
如果源判断为true则逆转为false,触发else子句,输出(邮箱正确)并拼接换行,和下划线
6.通过post传参取值,并使用emty函数判断变量值,空为true,非空为false
7.逻辑非进行布尔值的逆转,并进行if判断
如果用户没有输入内容,结果(6)后为true,再经过逻辑非取反后为false,触发else子句,弹窗提醒用户
用户正常输入内容,结果(6)后为false,经过逻辑非取反后为true,触发if主句,页面输出(名字存在)
/*
扩展:前端未填写任何值就提交表单,表单内字段实际上是存在的,只是它的值是一个空字符串。
在 PHP 中,空字符串是一个有效的值,因此 isset() 会认为变量已经被设置,即使它的值是空的。
*/
正则讲解及如何使用
正则表达式 /^\w{6,12}@[a-z0-9]{2,}\.(com|cn)$/
用于确保邮箱地址符合以下条件:
- 以6到12个字母或数字开头。
- 包含
@
符号。 - 域名至少有两个字符长,由字母或数字组成。
- 域名后紧跟一个点(
.
),然后是com
或cn
作为顶级域名。
正则表达式元字符
正则表达式 – 元字符 | 菜鸟教程 (runoob.com)
正则快速测试在线网站
正则表达式在线测试 | 菜鸟工具 (jyshare.com)
涉及函数作用及用法
isset函数
作用:判断变量是否为空,变量存在且有值的情况下返回true,反之(空值,null)为false
实例:
//传入创建并赋值的变量,输出为1:true
$j = 1;
echo isset($j); //1
// 传入空字符,输出为1:true
$str = '';
echo isset($str);
//传入未创建的变量 输出为false
$b = isset($c);
echo $b;
var_dump($b);
//传入已创建,但值为null的变量,输出为false
$f = NULL;
echo isset($f);
var_dump(isset($f));//bool(false)
//传入已创建,但未赋值的变量,未赋值的变量默认值为 NULL,输出为false
$i;
echo isset($i);
var_dump(isset($i));
empty函数
作用:判断变量值,空为true,非空:false
空值类型:
""
(空字符串)0
(也被看作是 PHP 中的false
)0.0
(浮点数形式的零)"0"
(字符串形式的零)NULL
FALSE
- 空数组
array()
- 未设置的变量(即使该变量已经被声明)
preg_match函数
作用:正则表达式匹配变量,成功返回true,反之则为false
用法:
preg_match("正则表达式",变量);