php实现动态登录

news2025/1/13 10:23:14

简介:

效果:通过前端页面的注册,通过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函数对特殊字符进行转义,总之,这只是一次很小的进步,师兄,路还长!

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

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

相关文章

do语句——输入两个值求和

代码如下&#xff1a; #include<stdio.h> int main() {int sum0;int a,b;puts("请输入两个整数");printf("整数a:"); scanf("%d",&a);printf("整数b:"); scanf("%d",&b);int t(a>b)?b:a;do{sumsumt;tt1;…

PHP基于微信小程序的打车平台-计算机毕业设计源码78689

摘 要 本文介绍的是基于PHP开发的打车平台小程序。该系统旨在为用户提供一个便捷、高效的平台&#xff0c;以实现网约车的打车功能。随着社交媒体和互联网的普及&#xff0c;网约车已成为日常交通中常见的形式。然而&#xff0c;传统的打车方式存在不方便、不及时等问题。 微信…

【Kafka】对 kafka 消费程序客户端进行监控采集

前言 对于 Kafka 组件而言&#xff0c;我们通常会对 kafka 服务端添加一些监控&#xff0c;来确保服务的稳定性&#xff0c;虽然有 kafka-exporter 来对消费者进行监控&#xff0c;但是指标很少&#xff0c;对于生产者和消费者更细粒度的监控就无法做到了。只能将监控部署在客…

DDPM 核心代码解析(1)

所有代码 已上传至GitHub - duhanyue349/diffusion_model_learned_ddpm_main: 扩散模型基础框架源代码 目录结构如下 在train_cifar.py 中展示了扩散模型训练的所有代码 如果没有安装wandb 可以在create_argparser()设置 log_to_wandbFalse 一、加载模型参数 args 这里用了一…

语音转文字在线免费有什么工具?这4款工具让记录更高效

在当今职场、学术界和内容创作领域&#xff0c;人们越来越需要一种高效的方式来整理会议记录、讲座内容或采访对话。 幸运的是&#xff0c;除了传统的手动记笔记方式&#xff0c;我们还可以通过录音转文字软件来实现这一目标。这些软件能够直接将音频资料转写为文本&#xff0…

4nm点状激光模组的应用让未来科技走向潮流

在科技发展时代&#xff0c;激光技术以其高精度、高效率的特性&#xff0c;正逐步成为众多行业不可或缺的核心技术之一。其中&#xff0c;4nm点状激光模组作为激光技术领域的佼佼者&#xff0c;凭借其卓越的性能和广泛的应用前景&#xff0c;正引领着科技发展的新潮流。接下来我…

ubuntu20.04.6 安装Skywalking 10.0.1

1.前置准备 1.1. **jdk17&#xff08;Skywalking10 jdk22不兼容&#xff0c;用17版本即可&#xff09;**安装&#xff1a; https://blog.csdn.net/CsethCRM/article/details/140768670 1.2. elasticsearch安装&#xff1a; https://blog.csdn.net/CsethCRM/article/details…

Apollo:源码分析之cyber/mainboard启动入口介绍-my write, test ok

软件结构图 cyber入口 cyber的入口在"cyber/mainboard"目录中: ├── mainboard.cc // 主函数 ├── module_argument.cc // 模块输入参数 ├── module_argument.h ├── module_controller.cc // 模块加载,卸载 └── module_controller.…

Feature Corrective Transfer Learning (2024CVPR)

Feature Corrective Transfer learning Framework &#xff08;特征矫正迁移学习框架&#xff09; 旨在引导非理想图像上的模型训练与理想图像上训练的模型的特中层更紧密地对齐 Model Selection and Training on Ideal Images 首先在理想图像上训练&#xff0c;得到理想参数…

NV170D语音芯片:为洗地扫地一体机带来新体验!

随着物联网、人工智能技术的飞速发展&#xff0c;家用电器的智能化转型已成为不可逆转的趋势。在这一背景下&#xff0c;洗地扫地一体机&#xff0c;作为家务自动化的先锋&#xff0c;融合了高效清洁与便捷操作的双重优势&#xff0c;而语音芯片的应用&#xff0c;更是为其增添…

使用 nvm在linux上安装多个版本的node

使用 nvm&#xff08;Node Version Manager&#xff09;: nvm 是一个流行的 Node.js 版本管理工具&#xff0c;允许你安装和使用多个版本的 Node.js。 1、安装nvm wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.nvm/nvm.sh2、…

javaEE(3)

目录 一. 前端浏览器保存用户信息 二. 前端路由导航守卫 三. 路由嵌套 四. web会话跟踪 1. web会话跟踪原理 2. JWT 2.1 传统的session认证 2.2 基于token的鉴权机制 2.3 jwt的构成 2.4 jwt搭建 五. 前端发送请求携带token 5.1 请求拦截器 六. 后端过滤器验证toke…

springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290

摘要 随着社会对高校毕业生的职业素养和实践能力要求不断提高&#xff0c;高校实习实训教育愈发受到重视。信息化技术的快速发展也为高校教学管理带来了新的机遇。合肥师范学院实习实训管理系统的研究就是源自当前高等教育对学生实习实训管理的需求。 实习实训管理系统充分利用…

手机录屏直播,教你3个方法,秒变录屏高手

在移动互联网飞速发展的今天&#xff0c;手机录屏直播已成为越来越多用户分享内容、交流心得的重要方式。无论是游戏高手展示高超技艺&#xff0c;还是教育从业者进行远程授课&#xff0c;手机录屏直播都能提供极大的便利。 在手机录屏的世界里&#xff0c;安卓手机和苹果手机…

深入分析 Android ContentProvider (九)

文章目录 深入分析 Android ContentProvider (九)ContentProvider 的高级使用及最佳实践&#xff08;续&#xff09;1. 复杂查询与联合查询复杂查询示例 2. 数据同步与一致性示例&#xff1a;使用事务确保数据一致性 3. 数据分页加载示例&#xff1a;分页加载数据 4. 内容提供者…

jmeter录制

1、添加代理服务器 添加方法&#xff1a;“测试计划”右键 -> 添加 -> 非测试元件 -> HTTP代理服务器 2、添加线程组 添加方法&#xff1a;“测试计划”右键->添加->线程&#xff08;用户&#xff09;->线程组 3、配置http代理服务器 &#xff08;1&a…

电脑录屏软件带声音,3款软件推荐,一键录制

在今天&#xff0c;电脑录屏软件带声音的功能已经悄然改变了我们的学习、工作和娱乐方式。录屏软件&#xff0c;这个看似简单的工具&#xff0c;实则蕴藏着无穷的魅力。它不仅能够捕捉屏幕上的每一个细节&#xff0c;还能将声音完美地融入其中。无论是游戏中的背景音乐、会议中…

谷粒商城实战笔记-77-商品服务-API-平台属性-规格参数列表

文章目录 一&#xff0c;新增product/attr/base/list接口二&#xff0c;踩坑记录1. 使用 Lazy 注解2. 使用 PostConstruct 注解代码分析解决方案分析 这一节的主要内容是完成规格参数的列表查询功能。 一&#xff0c;新增product/attr/base/list接口 这个接口用来查询规格参数…

电力巡检红外热成像夜视手持终端有多强?

电力巡检红外热成像夜视手持终端在电力巡检中展现出强大的功能和应用价值。这些手持终端结合了红外热成像技术和夜视功能&#xff0c;能够在夜间或光线不足的环境下对电力设备进行精确的温度测量和状态监测。以下是对其强大之处的详细分析&#xff1a; 1. 精准的红外热成像能力…

【机器学习】正规方程的简单介绍以及如何使用Scikit-Learn实现基于正规方程的闭式解线性回归

引言 Scikit-learn 是一个开源的机器学习库&#xff0c;它支持 Python 编程语言。它提供了多种机器学习算法的实现&#xff0c;并用于数据挖掘和数据分析 文章目录 引言一、正规方程的定义二、正规方程的原理三、使用 Scikit-Learn 实现基于正规方程的闭式解线性回归3.1 工具3.…