PHP&MySQL基础(四):模拟登录Login功能案例

PHP&MySQL基础(一):创建数据库并通过PHP进行连接_长风沛雨的博客-CSDN博客

PHP&MySQL基础(二):通过PHP对MySQL进行增、删、改、查_长风沛雨的博客-CSDN博客

PHP&MySQL基础(三):处理查询SQL返回的结果集_长风沛雨的博客-CSDN博客

目录

一、搭建HTML表单结构

二、封装一个SQL执行方法Conn

三、实现用户登录功能

四、测试功能


MySQL和PHP之间可以进行增删改查的操作,也可以把查询返回的结果给转换成对象或者数组来进行取值

同时,也可以通过HTML的表单结构和PHP的查询语法来进行一个登录的校验


一、搭建HTML表单结构

    <form action="" method="post">
        <div>
            <label for="">账号:</label>
            <input type="text" name="userName">
        </div>
        <div>
            <label for="">密码:</label>
            <input type="password" name="pwd">
        </div>
        <input type="submit" value="登录">
        <a href="sql实现注册.php">注册</a>
    </form>

二、封装一个SQL执行方法Conn

封装一个function函数,把后续的sql语句当作实参进行传递

在该函数中,连接数据库,处理数据库连接异常,统一字符集编码

需要注意的是:在else分支中执行的query()方法,接受方法返回值的$res变量需要提高一个作用域,在else内部第一次声明的话,在外部返回就不写了

        //封装数据库请求的方法:接受一个sql语句,返回sql语句的执行结果
        function Conn($sql){
            $res;
            $link = new mysqli('localhost','root','123456','db_test','3306');
            if($link->connect_error){ # 判断如果link对象里面的异常不为空
                switch($link->connect_error){
                    case 1045 : echo " 访问被拒绝,可能用户名或者密码错误";
                    break;
                    case 1049 : echo " 数据库名称错误";
                    break;
                    default:break;
                }
            }else{
                $link->query("SET NAMES utf8"); # 使用连接对象自带的query方法执行sql语句,该sql是用来设置字符集编码
                $res = $link->query($sql); //这里的res是在内部的,要提高声明范围
            }
            mysqli_close($link);
            return $res;
        }

三、实现用户登录功能

        //3、实现功能:用户登录
        if($_POST){ //3.1 判断post有没有数据
            //3.2 获取表单传递过来的数据
            $userName = $_POST['userName'];
            $pwd = $_POST['pwd'];
            //3.3 判断用户名和密码是否为空
            if($userName && $pwd){
                //3.5 在有账号数据的前提下,去编写sql语句(先查询指定的姓名)
                $selectSql = "SELECT * FROM tb_user WHERE userName='$userName'";
                //3.6 用Conn方法去读取该sql语句
                $res = Conn($selectSql);
                //3.7 去判断这个结果集有没有读取到对应的数据
                if($res->num_rows){ # num_rows是读取到记录的条数,如果为0就是没有了
                    //3.9 去判断密码(读取结果集)
                    $info = mysqli_fetch_object($res);
                    //4.0 判断$info中对应的pwd是不是等于post传进来的pwd
                    if($info->pwd == $pwd){
                        echo "<script>window.alert('登录成功')</script>";
                    }else{
                        echo "<script>window.alert('密码不匹配')</script>";
                    }
                }else{ //3.8 如果没有查询到条数,就是账号不存在
                    echo "<script>window.alert('账号不存在')</script>";
                }
            }else{ // 3.4 否则进行提示
                echo "<script>window.alert('账号和密码不可为空')</script>";
            }
        }

四、测试功能

登录这个账号

这个登录案例差不多这样子

但是还可以在补充:用户登录成功后跳转到指定页面,同时保存用户登录的数据(会话存储session)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长风沛雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值