全栈:前端post传参,后端用户输入验证[isset(),preg_match(),empty()]函数讲解与实例,正则讲解

前端:用户输入

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("正则表达式",变量);

       

  • 33
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值