登录功能设计(php+mysql)

一   登录功能

        1. 创建一个登录页面(login.php),包含一个表单,用户输入用户名和密码。
        2. 在表单的提交事件中,使用PHP代码处理用户输入的用户名和密码。
        3. 首先,连接MySQL数据库。然后,使用查询语句检查用户输入的用户名和密码是否匹配数据库中的记录。
        4. 如果匹配成功,将用户ID和用户名存储在会话变量中,表示用户已登录。
        5. 重定向用户到另一个页面,比如主页(home.php)。

        示例代码:

// login.php
<?php
session_start();// 处理表单提交事件
if ($_SERVER['REQUEST_METHOD'] == 'POST') {// 获取用户输入的用户名和密码$username = $_POST['username'];$password = $_POST['password'];// 连接MySQL数据库$conn = mysqli_connect('数据库主机', '用户名', '密码', '数据库名');// 查询用户名和密码是否匹配$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";$result = mysqli_query($conn, $query);if (mysqli_num_rows($result) > 0) {// 匹配成功,将用户ID和用户名存储在会话变量中$row = mysqli_fetch_assoc($result);$_SESSION['user_id'] = $row['id'];$_SESSION['username'] = $row['username'];// 重定向用户到主页header('Location: home.php');exit();} else {// 匹配失败,显示错误消息echo '用户名或密码错误';}// 关闭数据库连接mysqli_close($conn);
}
?><!-- 登录页面表单 -->
<form method="POST" action=""><input type="text" name="username" placeholder="用户名" required><input type="password" name="password" placeholder="密码" required><button type="submit">登录</button>
</form>
```

二、 退出功能

        1. 创建一个退出页面(logout.php)。
        2. 在该页面的代码中,删除当前会话中的用户ID和用户名。
        3. 重定向用户到另一个页面,比如登录页面(login.php)。

        示例代码:

// logout.php
<?php
session_start();// 删除会话中的用户ID和用户名
unset($_SESSION['user_id']);
unset($_SESSION['username']);// 重定向用户到登录页面
header('Location: login.php');
exit();
?>

三   客户身份确定

这里是指一个网站或应用程序的功能,包括登录、退出等,可以通过权限控制来实现。

1. 创建一个数据库表,用于存储用户信息和权限等级。表结构如下:

CREATE TABLE users (id INT(11) AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,password VARCHAR(255) NOT NULL,role ENUM('admin', 'user') NOT NULL DEFAULT 'user'
);

2. 在登录功能的代码中,查询出用户的权限等级。

示例代码:

// login.php
if (mysqli_num_rows($result) > 0) {$row = mysqli_fetch_assoc($result);$_SESSION['user_id'] = $row['id'];$_SESSION['username'] = $row['username'];// 获取用户的权限等级$role = $row['role'];// 根据用户权限等级重定向到不同的页面if ($role == 'admin') {header('Location: admin.php');exit();} else {header('Location: user.php');exit();}
}

3. 创建不同的页面(如admin.php和user.php),根据用户的权限等级来显示不同的内容或功能。

示例代码:

// admin.php
<?php
session_start();// 检查用户是否登录
if (!isset($_SESSION['user_id'])) {header('Location: login.php');exit();
}// 检查用户的权限等级
if ($_SESSION['role'] != 'admin') {header('Location: user.php');exit();
}// 显示管理员功能
echo '欢迎管理员' . $_SESSION['username'];// 其他管理员功能代码...?>// user.php<?php
session_start();// 检查用户是否登录
if (!isset($_SESSION['user_id'])) {header('Location: login.php');exit();
}// 检查用户的权限等级
if ($_SESSION['role'] != 'user') {header('Location: admin.php');exit();
}// 显示普通用户功能
echo '欢迎用户' . $_SESSION['username'];// 其他用户功能代码...?>

以上是一个简单的实现思路和示例代码,其中的数据库连接、查询和权限控制等可能还需要根据具体需求进行修改和完善。

四、 跳蚤市场登录模块 

1.  效果

效果如下所示:

2. 登录

完整代码如下:

<?php 
session_start(); //启动会话
include "conn.php"; //引入数据库文件 
//获取数据   
if(isset($_POST['nickname']) && isset($_POST['pwd'])){//客户身份确定$nickname=$_POST['nickname'];$pwd=$_POST['pwd'];$sql="select * from custom where nickname='".$nickname."'";$result=$conn->query($sql);if($result->num_rows==0){echo "<script>alert('抱歉,你还不是我们的会员!请先注册')</script>";echo "<script>location.href='register.php'</script>";} else {$row=$result->fetch_array();if($pwd==$row['password']){$_SESSION['nickname']=$row['nickname'];$_SESSION['id']=$row['custom_id'];$_SESSION['sex']=$row['sex'];echo "<script>location.href='index.php'</script>";} else {echo  "<script>alert('密码有误!');</script>";echo "<script>location.href='login.php'</script>";}}//关闭数据库连接$conn->close();
}
?>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>我的登录页面</title>
<script>function login(){var nickname=document.loginform.nickname.value;var pwd=document.loginform.pwd.value;if(nickname==''){alert('请输入呢称!');return false;}if(pwd==''){alert('请输入密码!');return false;}return true;}
</script>
<style>a { color:#00f;text-decoration: none;font-size:14px;}img {border-width: 0px 0px 0px 0px;}#middle {position: relative;background-color: #cccccc;}#fm {position: absolute;top:100px;left:150px;}#fm h1{color:red;}#fm p{color:blue;}#logintable {background-color: #ffffff;margin-right:40px;}#logintable h1{color:red;}.input_label{color:blue;font-size:20px;font-weight: bold;padding-left:40px;}.input{border:solid 1px blue;font-size:16px;height:30px;width:240px;}.button{background-color: blue;color:white;font-size:18px;font-weight:bold;height:30px;width:240px;border-width:0px;}
</style>
</head>
<body>
<div align="center">
<iframe src='top.html' style='border:none;width:1020px; margin-bottom:-10px;'>
</iframe>
</div><div align="center">
<!--登录表单-->
<table width='1000' height='500' id='middle'><tr><td><div id='fm'><h1>省钱、省力、省时间</h1><p>限时抢购、特惠热卖、配送上门、满百包邮</p><img src='image\login.png' width='160' height='160' ></div><table  width='430' height='360' align='right' id='logintable'><form name='loginform' action='' method='post' onsubmit="return login()"><caption><h1>跳蚤市场用户登录</h1></caption><tr height='20'><td colspan="3"></td></tr><tr><td><span class='input_label'>呢称</span></td><td colspan='2'><input type='text' name='nickname'  class='input'></td></tr><tr><td><span class='input_label'>密码</span></td><td colspan='2'><input type='password' name='pwd' class='input'></td></tr><tr><td colspan='3' align='center'><input type='submit' value='登录' class='button'></td></tr><tr align='center'><td width="20%"><a href="index.php">首页</a></td><td><a href="logout.php">退出</a></td><td><a href="register.php">注册</a></td></tr></form></table></td>	</tr>
</table>	
</div><div align="center"><iframe src='bottom.html' style='border:none;width:1020px; margin-bottom:-10px;'>
</div>
</body>
</html>

3.  头部

top.html 代码 如下所示:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>网站头部</title>
</head>
<style>#top{position: relative;background-color:#ccc;height:100px;}#title_1{position:absolute;top:10px;left:200px;color:red;font-size:48px;}#title_2{position:absolute;top:10px;left:400px;color:red;font-size:64px;}#title_3{position:absolute;top:10px;left:600px;color:red;font-size:48px;}#title_4{position:absolute;top:10px;left:800px;color:red;font-size:64px;}#login_reg{height:100px;text-align: right;}a { font-size:16px;text-decoration:none; padding-right:20px;}</style>
<body>
<div id='top'><div id='login_reg'><a href='login.php' target='_parent'>登录</a>&nbsp;&nbsp;&nbsp;<a href='register.php' target='_parent'>注册</a></div><span id='title_1'>跳</span><span id='title_2'>蚤</span><span id='title_3'>市</span><span id='title_4'>场</span><table width='980' align='center' border='0'><tr align="center"><td><a href="index.php" target='_parent'>首页</a></td><td><a href="publish_sell.php" target='_parent'>发布出售信息</a></td><td><a href="publish_buy.php" target='_parent'>发布求购信息</a></td><td><a href="product.php" target='_parent'>商品管理</a></td><td><a href="shopping_cart.php" target='_parent'>我的购物车</a></td></tr></table>
</div>
</body>
</html>

4 .  底部

bottom.html 代码如下所:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>网站底部</title>
<style>#bottom{background-color:#ccc;padding:20px;color:blue;font-size:16px;}.footer-a{padding-left:30px;}
</style>
</head>
<body>
<div id='bottom'><div align='center' id=''><span class='footer-a'>我要投诉</span><span class='footer-a'>|</span><span class='footer-a'>联系我们</span><span class='footer-a'>|</span><span class='footer-a'>版权所有</span></div><p align='center'>制作者:***,制作日期:2023年11月15日</p>	
</div></body>
</html>

5.  退出

logout.php 代码如下:

<?php 
session_start();
session_destroy();
echo "<script>location.href='index.php'</script>";
?>

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

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

相关文章

ReactPress 是什么?

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 ReactPress 是什么&#xff1f; ReactPress 是使用React开发的开源发布平台&#xff0c;用户可以在支持React和MySQL数据库的服务器上架设属于自己的博客、网站。也可以把 ReactP…

ai外呼机器人的作用有哪些?

ai外呼机器人具有极高的工作效率。日拨打成千上万通不是问题&#xff0c;同时&#xff0c;机器人还可以快速筛选潜在客户&#xff0c;将更多精力集中在有价值的客户身上&#xff0c;进一步提升营销效果。183-3601-7550 ai外呼机器人的作用&#xff1a; 1、搭建系统&#xff0c…

福禄克DTX,DSX系列内置标准以及生成的测试报告如何解读?

今日,接到一些朋友的询问?虽然使用了很长一段时间的FLUKE DSX-5000或者DSX-8000,但是对于测试标准和测试生成的报告一知半解,借此咱们一块屡屡清楚。 1,经常有的朋友拿到设备后,第一时间就问,咱们福禄克内置的标准的多少?我线的参数(被测的铜缆)达到多少db,才能算过…

我与Linux的爱恋:磁盘的存储管理

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 文章目录 磁盘的存储管理 磁盘的存储管理 在我们日常生活中&#xff0c;我们要打开很多文件(要打开这个文件需要先找到这个文件->要在磁盘中先找到->通过文件路径文件…

git原理与上传

言&#xff1a; git是一个软件&#xff0c;gitee/github是一个网站&#xff0c;这里有什么联系吗&#xff1f;我们身为一个程序员不可能不知道github&#xff0c;但是毕竟这是外国的网站&#xff0c;我们不翻墙的情况下&#xff0c;是无法访问的(或者就是太慢了&#xff0c;或…

Python基础学习_01

目录 1、注释 2、数字和数学计算 3、变量 4、字符串 5、打印 6、本节总结 1、注释 • 什么是注释&#xff1f; 1&#xff09;注释就是用自然语言向代码阅读者说明代码的功能和意义 • 注释 1&#xff09;单行注释使用 # 为开头&#xff1b;并且不能换行…

操作系统学习笔记-3.2虚拟内存

文章目录 虚拟内存请求分页管理方式页面置换算法最佳置换算法工作原理OPT 算法的示例最佳置换算法的优点和缺点 先进先出置换算法最近最久未使用时钟置换算法时钟置换算法的工作原理&#xff1a;算法的步骤&#xff1a; 改进型时钟置换算法改进型时钟置换算法的特点&#xff1a…

vue3 封装aixos

1. Vue3 封装 aixos 并且 使用 aixos 请求数据 npm install axios # 或者 yarn add axios 2. Vue3 封装 aixos 并且 使用 aixos 请求数据 封装 axios可以帮助我们更好地管理 HTTP 请求&#xff0c;例如添加统一的基础URL、请求头、拦截器等功能。 下面是封装 axios的一个示…

量子计算机能解决哪些问题?

经典与量子难度对比 在深入示例之前&#xff0c;我们首先讨论一下如何研究和分类各种问题的难度。有些问题可以在经典计算机上轻松解决&#xff0c;我们不需要量子计算机来解决它们。另一方面&#xff0c;有些问题非常困难&#xff0c;需要量子计算机来解决。一个著名的例子是寻…

中电金信:院长寄语|关于源启AI+行动的思考

中国电子首席科学家 中电金信研究院院长 况文川 自2022年8月19日发布以来&#xff0c;源启已经走上了她第三年的征途。今天&#xff0c;源启已经成为公司战略的支点&#xff0c;中电金信正致力于用“源启底座”“源启咨询”“源启应用重构”三位一体的方式来赋能千行百业数智化…

海康私有化视频平台EasyCVR视频分析设备平台流媒体协议RTMP、HTTP-FLV、HLS的简单对比

在当今的数字化世界中&#xff0c;视频流协议的选择对于确保流畅、高效的视频传输至关重要。随着互联网技术的快速发展&#xff0c;直播和视频点播服务已经成为人们日常生活中不可或缺的一部分。无论是安防监控、在线教育、远程会议还是娱乐直播&#xff0c;用户对于视频流的实…

详解使用python读写csv,以及将csv数据写入数据库

csv文件 csv介绍 CSV&#xff0c;也即Comma-Separated Values&#xff0c;是一种用于存储表格数据的纯文本文件格式&#xff0c;其中每一行代表一条记录&#xff0c;记录中的各个字段由逗号分隔。 姓名,年龄,性别 张三,25,男 李四,28,男 王五,22,男 六六,29,女 子柒,28,女 对…

OpenMVS OpenMVG 笔记

OpenMVS & OpenMVG 笔记 OpenMVS 和 OpenMVG 都是计算机视觉中用于三维重建的开源库。两者都可以实现从图像集合中计算出相机位姿和三维点云&#xff0c;但它们的重点略有不同。 OpenMVG 主要关注于从输入图像集合中提取稠密的特征匹配&#xff0c;通过这些匹配计算相机的…

Golang--文件操作

1、文件 文件&#xff1a;文件用于保存数据&#xff0c;是数据源的一种 os包下的File结构体封装了对文件的操作&#xff08;记得包os包&#xff09; 2、File结构体--打开文件和关闭文件 2.1 打开文件 打开文件&#xff0c;用于读取&#xff08;函数&#xff09;&#xff1a; 传…

dcdc3节锂电池串联9-12V升压32V 3A/5A 音响供电恒压芯片 SL4010

SL4010&#xff1a;高效能9-12V至32V升压解决方案&#xff0c;为高端音响系统注入澎湃动力 在追求极致音质与持久续航的音频世界里&#xff0c;SL4010 DC-DC升压转换器以其卓越的性能和可靠性&#xff0c;成为高端音响系统的理想供电伙伴。专为3节锂电池串联&#xff08;9-12V…

onnx-web + yolov8n 在视频流里做推理

顺着我上一篇文章 使用onnxruntime-web 运行yolov8-nano推理 继续说&#xff0c;有朋友在问能不能接入 视频流动&#xff0c;实时去识别物品。 首先使用 getUserMedia 获取摄像头视频流 getUserMedia API 可以访问设备的摄像头和麦克风。你可以使用这个 API 获取视频流&#…

力扣题库——136.只出现一次的数字

代码实现&#xff1a; class Solution { public:int singleNumber(vector<int>& nums) {int result0;for(int num:nums){result^num;}return result;} }; 结果&#xff1a; 思路&#xff1a;这里让0和数组元素不断异或&#xff0c;因为0与一个数异或的结果是它本身…

EasyPOI使用详解

EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档&#xff1a;http://easypoi.mydoc.io/#categor…

JAVA设计模式之【建造者模式】

1 定义 建造者模式&#xff08;Builder Pattern&#xff09;使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 2 类图 产品类&#xff08;Product&#xff09;&#xff1a;表示被创建的复杂…

智能化健身房管理:Spring Boot与Vue的创新解决方案

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…