PHPMySQL基础(四):模拟登录Login功能案例

news2024/11/28 3:40:26

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

敏捷指标: 评估计划的进展

作者 | Will Hayes, Patrick Place, and Keith Korzec ——卡耐基梅隆大学 度量标准有助于实现一个运作良好的系统&#xff0c;评判现有流程的绩效。在项目交付契约功能时能够对其性能进行监督。本文探讨了在一个复杂的信息物理系统的迭代、增量交付过程中&#xff0c;政府项目…

Django从Models 10分钟建立一套RestfulApi

简介 Django是一套完善而强大的web开发框架, 结合Django Restframework我们可以非常快的搭建一套后台的api, 该api主要特点: 标准的Restful接口, 支持增删改查 每个模型分列表和详情两种接口, 列表GET获取列表/POST新建,详情接口GET获取详情/PUT修改/DELETE删除所有接口自带权…

DJ4-5 基本分段存储管理方式

目录 4.5.1 分段式存储管理方式的引入 4.5.2 分段式存储管理的基本原理 一、分段 二、段表 三、地址变换机构 4.5.3 段的共享和保护 一、分页共享 二、分段共享 4.5.4 段页式存储管理 一、段页式存储管理的引入 二、段页式存储管理 三、地址变换机构 四、评价…

小明找前缀100000(假)

题目背景 小明最近上课天天睡觉&#xff0c;于是啥都不会。 一天&#xff0c;老师终于点兵点将点到他回答问题&#xff0c;你能帮他渡过难关吗&#xff1f; 现在老师给了小明 n 个由 0、1 构成的字符串&#xff0c;然后有 m 次询问&#xff0c; 每次询问给出一个由 0、1 构…

【医学图像】图像分割系列.3 (uncertainty)

介绍几篇使用不确定性引导的医学图像分割论文&#xff1a;UA-MT&#xff08;MICCAI2019&#xff09;&#xff0c;SSL4MIS&#xff08;MICCAI2021&#xff09;&#xff0c;UG-MCL&#xff08;AIIM2022&#xff09;. Uncertainty-aware Self-ensembling Model for Semi-supervise…

3-网络初识-协议

1.概念 协议&#xff0c;网络协议的简称&#xff0c;网络协议是网络通信&#xff08;即网络数据传输&#xff09;经过的所有网络设备都必须共同遵从的一组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定&#xff0c;计算机之间才能相互通信交流。通常由三…

Android系统中的Binder通信机制分析(6)- Binder通信机制详解

声明 其实对于Android系统Binder通信的机制早就有分析的想法&#xff0c;记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的&#xff0c;但因为我个人问题没能实施这个计划&#xff0c;留下些许遗憾…文中参考了很多书籍及博客内容&#xff0c;可能涉及的比较多先不具…

SER5 5500U 黑苹果系统安装教程

注意事项&#xff1a; 安装黑苹果系统需要一定的技术和操作经验&#xff0c;而且存在一定的风险&#xff0c;安装前请注意备硬盘内的数据&#xff0c;以免数据丢失&#xff0c;不推荐普通用户进行尝试&#xff0c;本系统及引导由黑果小兵独家制作&#xff0c;更多黑苹果教程百度…

安装CHATGPT保姆级教程(windows版)

ai包链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1tKuG4OfkewlDRU292vx8mw?pwdtw8t 提取码&#xff1a;tw8t 一、安装篇 安装python&#xff0c;使用软件包中的python安装程序安装后检查是否安装成功&#xff0c;cmd窗口运行命令&#xff1a; python –vers…

【九章斩题录】C/C++:替换空格(JZ5)

精品题解 &#x1f525; 《九章斩题录》 &#x1f448; 猛戳订阅 &#x1f4dc; 目录&#xff1a; JZ5 - 替换空格 「 法一 」暴力美学 「 法二 」另开数组 「 法三 」反向替换&#xff08;利用 rfind replace&#xff09; 「 整活 」不用C&#xff0c;Python 一行代码搞…

C#基本语法

关键字 标识符命名规则 标识符中只能出现英文字母、数字、下划线&#xff0c;以及这几种字符&#xff0c;不能出现诸如"空格&#xff0c;&#xff01;"等这些字符&#xff1b;标识符名称只能以下划线&#xff0c;字母以及打头&#xff0c;不可以用数字作为标识符名…

企业如何运用CRM实现企业数字化战略布局

随着数字化时代的到来&#xff0c;越来越多的企业开始意识到数字化转型的重要性&#xff0c;而CRM&#xff08;客户关系管理&#xff09;系统则是企业数字化战略布局中的重要一环&#xff0c;也逐渐受到越来越多企业的关注。 那么&#xff0c;企业如何运用CRM实现数字化战略布局…

自动化测试实战(一)12306火车票网站自动登录工具

还记得2011年春运&#xff0c;12306火车票预订网站经常崩溃无法登录吗。 今天我们就开发一个12306网站自动登录软件。 帮助您轻松订票 Web的原理就是&#xff0c;浏览器发送一个Request给Web服务器&#xff0c;Web服务器处理完这个请求之后发送一个HTTP Response给浏览器。 如…

Mybatis源码细节探究:MappedStatement和Cache对象对照关系研究

给自己的每日一句 不从恶人的计谋&#xff0c;不站罪人的道路&#xff0c;不坐亵慢人的座位&#xff0c;惟喜爱耶和华的律法&#xff0c;昼夜思想&#xff0c;这人便为有福&#xff01;他要像一棵树栽在溪水旁&#xff0c;按时候结果子&#xff0c;叶子也不枯干。凡他所做的尽…

《面试1v1》类加载过程

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 你了解Java的类加载过程吗?跟我聊聊classes是如何加载到JVM中的。 候选人&#xff1a; Java的类加载过程由加载、验证、准备、解析和初始化5个…

5月底了,现在不想着跳槽可就晚了

前两天跟朋友感慨&#xff0c;今年的铜三铁四、裁员、疫情导致好多人都没拿到offer!现在已经5月底了&#xff0c;具体金九银十只剩下三个月。 对于想跳槽的职场人来说&#xff0c;绝对要从现在开始做准备了。这时候&#xff0c;很多高薪技术岗、管理岗的缺口和市场需求也出来了…

五、常用提升物体的方式

机器人在运动中伸展和提升功能&#xff0c;历来是比赛中机器人的一个重要的性能指标&#xff0c;因为按 比赛要求&#xff0c;机器人在上场前必须经过体积大小的检测&#xff0c;而在场地中如果能够有更好的伸展性 能将对比赛成绩十分有利&#xff0c;因此机器人提升自身高度以…

SAP-MM发票校验容差详解

MIRO发票校验容差详解 MIRO发票校验容差是指收货业务与发票校验业务之间的差异&#xff0c;这种差异可 能是物料价格差异、收货数量差异、收货金额差异等等&#xff0c;总之&#xff0c;发票校验的容差 内容最为丰富&#xff0c;容差类型有很多种&#xff0c;如下表所示&…

【ChatGPT插件第一期】28个ChatGPT插件,让你的学习、工作、生活效率翻倍!

文章目录 人工智能福利文章什么是ChatGPT插件如何使用ChatGPT插件28个插件全解读写在最后 人工智能福利文章 【分享几个国内免费可用的ChatGPT镜像】【10几个类ChatGPT国内AI大模型】【用《文心一言》1分钟写一篇博客简直yyds】【用讯飞星火大模型1分钟写一个精美的PPT】 Cha…

Linux I2C驱动分析4 - GPIO模拟I2C

一. 前言 在嵌入式开发中&#xff0c;由于芯片的I2C接口有限&#xff0c;或者出于硬件画板的方便&#xff0c;我们都需要将普通的GPIO模拟I2C接口使用。出于对这样的需求&#xff0c;Linux-2.6.x已经有相关代码了&#xff0c;Linux-3.x有标准的内核选项支持该功能&#xff0c;内…