php实现动态登录
简介:
效果:通过前端页面的注册,通过MD5将密码加密,发送到数据库,通过验证数据库的内容实现登录,以及各种保证安全的措施
实验环境:php+html+css+mysql数据表,使用html +css设计注册,以及用户登陆表以及注册表
我们将创建以下文件
1,conn.php //连接数据库
2,login.php登录的后端处理
3,login.html登录前端表
4,loginok.php用户登录完成后的主页面
5,regist.html //用户注册的前端页面
6,regist_ok.php用户注册后端处理文
7,创建数据表 crerate table register(account varchar(20) not null primary kry,
password varchar(50) not null
实验开始
1,建立数据库连接-conn.php
<?php
$servername = "localhost";*
$usename = "root"; *
$passwd = "202019";*
$dbname="lv"; &//标注*号的部分需要根据实际情况进行更换
$conn = new mysqli($servername, $usename, $passwd,$dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}?>
2,建立用户登录前端页面-login.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<style type="text/css">
#aaa{width: 300px;
height: 30px;}
body{background-image:url('MTXX_MH20240504_162234715.jpg');
background-size: cover;
}
</style><body>
<center>
<h2>登录界面</h2>
<form method="POST" action="loginok.php"> //表格提交位置
账号 :<input id="aaa" type="text" name="uname" placeholder="用户名" />
<br /><br/>
密码 :<input id="aaa"type="password" name="pwd" placeholder="密码" />
<br />
<input type="submit" >
<input type="reset"> <a href="regist.php">注册账号</a>
</form>
</center>
</body>
</html>
效果展示
登陆时

登陆后展示

3,用户登录后端loginok.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>welcome</title>
</head>
<style>body {background-image:url('MTXX_MH20240504_162234715.jpg');
background-size:cover;
background-filter:blur(5px); //背景素材放在评论区了</style>
<body><?php
header("content-type:text/html; charest=UTF-8");
session_start();
if(isset($_POST['uname']) && isset($_POST['pwd'])){
$name =filter_var($_POST['uname'],FILTER_SANITIZE_ENCODED);
$pwd = $_POST['pwd'];
$hashedpwd=md5($pwd); //MD5加密
require("conn.php");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM register WHERE (account='$name') AND (password='$hashedpwd')";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo"<br>";
echo '<nav class="top-bar"><ul><li><a href ="rly.html">'.$row['account'].'</a>
</li>
<li><a href="#">'.$row['password'].'</a>
</li>
</ul>
</nav>';
}
} else {
echo "没有您要的信息";
}
$conn->close();
}
?>
</body>
</html>
4,用户注册前端 regist.html
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>登录欢迎页</title>
</head>
<style>
body {background-image:url('MTXX_MH20240504_162234715.jpg');
background-size:cover;
background-filter:blur(5px);
}<style rtpe="text/css">
.aaa{width:300px;
height:30px;}
</style>
<style type="text/javascripts"></style>
</style>
<body>
<?php
?>
<center>
<h2>注册界面</h2>
<form method="POST" name="from1" action="regist_ok.php">
姓名: <input class="aaa" type="text" name="username"><br/><br/>
密码: <input class="aaa" type="text" name="password"><br/><br/>
<input type="reset"name="reset" value="重置">
<input type="submit"name="submit" value="注册" onClick="myfunction">
<a href="login.php"><< 返回上一页</a>
<a href="loginok.php">点击注册</a>
</form>
</body>
</html>
效果展示
注册前端 
注册后端

5,注册后端 regist_ok.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>regist_ok.php</title>
</head>
<style>body {background-image:url('MTXX_MH20240504_162234715.jpg');
background-size:cover;
background-filter:blur(5px);</style>
<body><?php
header("content-type:text/html; charest=UTF-8");
session_start();
if(isset($_POST['uname']) && isset($_POST['pwd'])){
$name =filter_var($_POST['uname'],FILTER_SANITIZE_ENCODED);//清楚特殊字符防止注入
$pwd = $_POST['pwd'];
$hashedpwd=md5($pwd); //MD5加密
require("conn.php");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM register WHERE (account='$name') AND (password='$hashedpwd')";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo"<br>";
echo '<nav class="top-bar"><ul><li><a href ="rly.html">'.$row['account'].'</a>
</li>
<li><a href="#">'.$row['password'].'</a>
</li>
</ul>
</nav>';
}
} else {
echo "没有您要的信息";
}
$conn->close();
}
?>
</body>
</html>
在本次本次实验中,我们将密码加密发送至数据库,保护数据的安全,由于MD5的单项加密过程,使得我们在每次输入同样的数字带来的相同的加密内容,使得在保证用户交互的情况下,保证密码安全,同时在防止sql植入中,我们设计加入了filter函数对特殊字符进行转义,总之,这只是一次很小的进步,师兄,路还长!
相关文章:
php实现动态登录
简介: 效果:通过前端页面的注册,通过MD5将密码加密,发送到数据库,通过验证数据库的内容实现登录,以及各种保证安全的措施 实验环境:phphtmlcssmysql数据表,使用html css设计注册&a…...
Servlet2-HTTP协议、HttpServletRequest类、HttpServletResponse类
目录 HTTP协议 什么是HTTP协议 HTTP协议的特点 请求的HTTP协议格式 GET请求 POST请求 常用的请求头说明 哪些是GET请求,哪些是POST请求 响应的HTTP协议格式 常见的响应码说明 MIME类型说明 HttpServletRequest类 作用 常用方法 如何获取请求参数 po…...
探索数据的内在世界:sklearn中分层特征聚类标签的可视化技术
探索数据的内在世界:sklearn中分层特征聚类标签的可视化技术 在机器学习中,聚类是一种探索数据结构的强大工具。对于具有分层特征的数据,如文本、时间序列或分类标签,聚类结果的可视化可以提供深入的洞见。本文将详细介绍如何在s…...
airtest定位方法
airtest定位方法 最近遇到一个比较新颖的airtest方法,分享给大家。一键三连; airtest是一款用于自动化测试的Python库,被广泛应用于移动应用和游戏的测试中。在进行自动化测试时,定位元素是非常重要的一步,因为只有准…...
排列组合 n*(n-1)*(n-m+1)
n*(n-1)*(n-m1)/m! --# 组合 n*(n-1)*(n-m1)/m! local function get_combinations(n,m) c 1 c0 1 for i 1,m do c c*(n-i1) c c/i end return math.floor(c) end print(get_combinations(10,6)) 打印出来为:210...
Python面试整理-数据处理和分析
在Python中,数据处理和分析是一项非常重要的应用,得益于丰富的第三方库和工具,Python已经成为数据科学家和分析师的首选语言之一。以下是进行数据处理和分析时常用的工具和方法: 1. 数据处理 a. Pandas ● 功能: Pandas 提供了强大的 DataFrame 结构,使得数据操作和预处理…...
职业教育计算机网络综合实验实训室建设应用案例
近年来,职业教育在培养技能型人才方面发挥着越来越重要的作用。然而,传统的计算机网络技术教学模式往往重理论、轻实践,导致学生缺乏实际操作能力和职业竞争力。为了改变这一现状,唯众结合职业教育特点,提出了“教、学…...
【Docomo】5G
我们想向您介绍第五代移动通信系统“5G”。 5G 什么是5G?支持5G的技术什么是 5G SA(独立)?实现高速率、大容量的5G新频段Docomo的“瞬时5G”使用三个宽广的新频段 什么是5G? 5G(第五代移动通信系统&#x…...
Servlet详解(Servlet源码)
Servlet Servlet是运行在Web服务器或应用服务器上的小程序,它作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。Servlet能够接收来自客户端的基于HTTP协议的请求,并且对请求进行响应。 Servlet是用来处理客户端请…...
仓颉--接收控制台输入
package projectNameimport std.console.*main() {Console.stdOut.write("请输入信息1:")var c Console.stdIn.readln() // 输入:你好,请问今天星期几?var r c.getOrThrow()Console.stdOut.writeln("输入的信息1…...
数据库设计效率提高的5大注意事项
数据库设计效率和质量的提高对项目影响深远,能够显著提升数据访问速度,确保数据一致性和完整性,减少应用开发和维护成本,同时提升系统稳定性和用户体验。如果数据库设计不佳会导致项目性能低下,数据访问缓慢࿰…...
C语言笔试题(一)
本专栏通过整理各专业方向的面试资料并咨询业界相关人士,整合不同方向的面试资料,希望能为您的面试道路点亮一盏灯! 1 简单题 C语言中的注释如何写? 答案: 单行注释使用//,多行注释使用/* ... */解析: 注释用于…...
轻松实现远程智能交互:OriginBot与钉钉和GPT4o的集成指南
说明 我之前实现了简单UI来跟OriginBot交互,可以参考这里:古月居 - ROS机器人知识分享社区 但是由于我不是专业的前端开发,写UI还是比较耗时的,所以最近想修改一下这部分。 还有一个原因是,自己开发前端,…...
Qt题目知多少-1
1.简述Qt框架的核心组成部分及其作用。 Qt框架是一个跨平台的应用程序开发框架,其核心组成部分及其作用包括: QtCore模块:这是Qt的基础模块,提供了字符串处理(QString)、容器类(QList, QMap等)、时间日期处理、文件和目录操作、国…...
nginx的反向代理和负载均衡(seventeen day)
一、nginx的反向代理 新建一台虚拟机——static-server(静态服务器/前端服务器) wget https://nginx.org/download/nginx-1.26.1.tar.gz #安装nginx包 ls 安装依赖软件 yum -y install gcc gcc-c yum -y install pcre-devel yum -y install openss…...
BES编译SDK中遇到的perl问题
0 Preface/Foreword 1 问题清单 1.1 perl\r: No such file or directory 编译完成,通过perl,将elf文件转为bin文件,出现错误。 通过查看,项目源文件中,只有一个pl文件: 查看Linux distro使用的WSL版本&am…...
【康复学习--LeetCode每日一题】3111. 覆盖所有点的最少矩形数目
题目: 给你一个二维整数数组 point ,其中 points[i] [xi, yi] 表示二维平面内的一个点。同时给你一个整数 w 。你需要用矩形 覆盖所有 点。 每个矩形的左下角在某个点 (x1, 0) 处,且右上角在某个点 (x2, y2) 处,其中 x1 < x…...
Django实战:开启数字化任务管理的新纪元
🚀 Django实战:开启数字化任务管理的新纪元 🌐 📖 引言 在数字化转型的浪潮中,任务管理的智能化成为提升组织效能的关键。今天,我将带领大家深入了解我们最新开发的OFTS系统——一款创新的组织任务管理软…...
史上最全网络安全面试题+答案
1、什么是SQL注入攻击 前端代码未被解析被代入到数据库导致数据库报错 2、什么是XSS攻击 跨站脚本攻击 在网页中嵌入客户端恶意脚本,常用s语言,也会用其他脚本语言 属于客户端攻击,受害者是用户,网站管理员也属于用户…...
Python 爬虫入门(五):使用 lxml 解析网页
Python 爬虫入门(五):使用 lxml 解析网页 前言1. lxml 简介1.1 什么是 lxml?1.2 为什么选择 lxml?1.3 安装 lxml 2. lxml 基础2.1 解析 HTML/XML2.2 XPath 表达式2.3 使用 XPath 提取数据 3. 深入解析3.1 处理命名空间…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
