当前位置: 首页 > news >正文

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"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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">
    &nbsp;&nbsp;  <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实现动态登录

简介&#xff1a; 效果&#xff1a;通过前端页面的注册&#xff0c;通过MD5将密码加密&#xff0c;发送到数据库&#xff0c;通过验证数据库的内容实现登录&#xff0c;以及各种保证安全的措施 实验环境&#xff1a;phphtmlcssmysql数据表&#xff0c;使用html css设计注册&a…...

Servlet2-HTTP协议、HttpServletRequest类、HttpServletResponse类

目录 HTTP协议 什么是HTTP协议 HTTP协议的特点 请求的HTTP协议格式 GET请求 POST请求 常用的请求头说明 哪些是GET请求&#xff0c;哪些是POST请求 响应的HTTP协议格式 常见的响应码说明 MIME类型说明 HttpServletRequest类 作用 常用方法 如何获取请求参数 po…...

探索数据的内在世界:sklearn中分层特征聚类标签的可视化技术

探索数据的内在世界&#xff1a;sklearn中分层特征聚类标签的可视化技术 在机器学习中&#xff0c;聚类是一种探索数据结构的强大工具。对于具有分层特征的数据&#xff0c;如文本、时间序列或分类标签&#xff0c;聚类结果的可视化可以提供深入的洞见。本文将详细介绍如何在s…...

airtest定位方法

airtest定位方法 最近遇到一个比较新颖的airtest方法&#xff0c;分享给大家。一键三连&#xff1b; airtest是一款用于自动化测试的Python库&#xff0c;被广泛应用于移动应用和游戏的测试中。在进行自动化测试时&#xff0c;定位元素是非常重要的一步&#xff0c;因为只有准…...

排列组合 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 结构,使得数据操作和预处理…...

职业教育计算机网络综合实验实训室建设应用案例

近年来&#xff0c;职业教育在培养技能型人才方面发挥着越来越重要的作用。然而&#xff0c;传统的计算机网络技术教学模式往往重理论、轻实践&#xff0c;导致学生缺乏实际操作能力和职业竞争力。为了改变这一现状&#xff0c;唯众结合职业教育特点&#xff0c;提出了“教、学…...

【Docomo】5G

我们想向您介绍第五代移动通信系统“5G”。 5G 什么是5G&#xff1f;支持5G的技术什么是 5G SA&#xff08;独立&#xff09;&#xff1f;实现高速率、大容量的5G新频段Docomo的“瞬时5G”使用三个宽广的新频段 什么是5G&#xff1f; 5G&#xff08;第五代移动通信系统&#x…...

Servlet详解(Servlet源码)

Servlet Servlet是运行在Web服务器或应用服务器上的小程序&#xff0c;它作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。Servlet能够接收来自客户端的基于HTTP协议的请求&#xff0c;并且对请求进行响应。 Servlet是用来处理客户端请…...

仓颉--接收控制台输入

package projectNameimport std.console.*main() {Console.stdOut.write("请输入信息1&#xff1a;")var c Console.stdIn.readln() // 输入&#xff1a;你好&#xff0c;请问今天星期几&#xff1f;var r c.getOrThrow()Console.stdOut.writeln("输入的信息1…...

数据库设计效率提高的5大注意事项

数据库设计效率和质量的提高对项目影响深远&#xff0c;能够显著提升数据访问速度&#xff0c;确保数据一致性和完整性&#xff0c;减少应用开发和维护成本&#xff0c;同时提升系统稳定性和用户体验。如果数据库设计不佳会导致项目性能低下&#xff0c;数据访问缓慢&#xff0…...

C语言笔试题(一)

本专栏通过整理各专业方向的面试资料并咨询业界相关人士&#xff0c;整合不同方向的面试资料&#xff0c;希望能为您的面试道路点亮一盏灯&#xff01; 1 简单题 C语言中的注释如何写&#xff1f; 答案: 单行注释使用//&#xff0c;多行注释使用/* ... */解析: 注释用于…...

轻松实现远程智能交互:OriginBot与钉钉和GPT4o的集成指南

说明 我之前实现了简单UI来跟OriginBot交互&#xff0c;可以参考这里&#xff1a;古月居 - ROS机器人知识分享社区 但是由于我不是专业的前端开发&#xff0c;写UI还是比较耗时的&#xff0c;所以最近想修改一下这部分。 还有一个原因是&#xff0c;自己开发前端&#xff0c…...

Qt题目知多少-1

1.简述Qt框架的核心组成部分及其作用。 Qt框架是一个跨平台的应用程序开发框架&#xff0c;其核心组成部分及其作用包括&#xff1a; QtCore模块&#xff1a;这是Qt的基础模块&#xff0c;提供了字符串处理(QString)、容器类(QList, QMap等)、时间日期处理、文件和目录操作、国…...

nginx的反向代理和负载均衡(seventeen day)

一、nginx的反向代理 新建一台虚拟机——static-server&#xff08;静态服务器/前端服务器&#xff09; 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 编译完成&#xff0c;通过perl&#xff0c;将elf文件转为bin文件&#xff0c;出现错误。 通过查看&#xff0c;项目源文件中&#xff0c;只有一个pl文件&#xff1a; 查看Linux distro使用的WSL版本&am…...

【康复学习--LeetCode每日一题】3111. 覆盖所有点的最少矩形数目

题目&#xff1a; 给你一个二维整数数组 point &#xff0c;其中 points[i] [xi, yi] 表示二维平面内的一个点。同时给你一个整数 w 。你需要用矩形 覆盖所有 点。 每个矩形的左下角在某个点 (x1, 0) 处&#xff0c;且右上角在某个点 (x2, y2) 处&#xff0c;其中 x1 < x…...

Django实战:开启数字化任务管理的新纪元

&#x1f680; Django实战&#xff1a;开启数字化任务管理的新纪元 &#x1f310; &#x1f4d6; 引言 在数字化转型的浪潮中&#xff0c;任务管理的智能化成为提升组织效能的关键。今天&#xff0c;我将带领大家深入了解我们最新开发的OFTS系统——一款创新的组织任务管理软…...

史上最全网络安全面试题+答案

1、什么是SQL注入攻击 前端代码未被解析被代入到数据库导致数据库报错 2、什么是XSS攻击 跨站脚本攻击 在网页中嵌入客户端恶意脚本&#xff0c;常用s语言&#xff0c;也会用其他脚本语言 属于客户端攻击&#xff0c;受害者是用户&#xff0c;网站管理员也属于用户&#xf…...

Python 爬虫入门(五):使用 lxml 解析网页

Python 爬虫入门&#xff08;五&#xff09;&#xff1a;使用 lxml 解析网页 前言1. lxml 简介1.1 什么是 lxml&#xff1f;1.2 为什么选择 lxml&#xff1f;1.3 安装 lxml 2. lxml 基础2.1 解析 HTML/XML2.2 XPath 表达式2.3 使用 XPath 提取数据 3. 深入解析3.1 处理命名空间…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...