登录功能设计(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>";
?>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue--vueCLI

何为CLI ■ CLI是Command-Line Interface,俗称脚手架. ■ 使用Vue.js开发大型应用时&#xff0c;我们需要考虑代码目录结构、项目结构和部署、热加载、代码单元测试等事情。&#xff08;vue 脚手架的作用&#xff09;&#xff0c; 而通过vue-cli即可&#xff1a;vue-cli 可以…

软件测试工程师面试整理 —— 编程与自动化!

在软件测试领域&#xff0c;编程与自动化是提升测试效率、覆盖率和可靠性的关键因素。掌握编程技术和自动化测试框架&#xff0c;能够帮助测试人员有效地执行大量重复性测试任务&#xff0c;并迅速反馈软件的质量状况。以下是编程与自动化在测试中的主要应用及相关技术介绍&…

宝顶白芽,慢生活的味觉盛宴

在快节奏的生活中&#xff0c;人们愈发向往那种悠然自得、返璞归真的生活方式。白茶&#xff0c;以其独特的韵味和清雅的风格&#xff0c;成为了现代人追求心灵宁静与生活品质的象征。而在众多白茶之中&#xff0c;竹叶青茶业出品的宝顶白芽以其甘甜醇爽的特质&#xff0c;成为…

安卓APP渗透安全测试

1.移动安全测试点分析 1.1主要测试 客户端 数据传输 服务端 l反编译 l二次打包 l组件安全 lWebview漏洞 l数据安全 l界面劫持 l数据备份风险 lDebug调试风险 l安全策略 l数据窃听 l中间人攻击 l信息泄露 l任意修改数据包 lSQL注入 l上传漏洞 l暴力破解 l逻辑漏洞 lXSS…

CentOS 7 安装 ntp,自动校准系统时间

1、安装 ntp yum install ntp 安装好后&#xff0c;ntp 会自动注册成为服务&#xff0c;服务名称为 ntpd 2、查看当前 ntpd 服务的状态 systemctl status ntpd 3、启动 ntpd 服务、查看 ntpd 服务的状态 systemctl start ntpdsystemctl status ntpd 4、设置 ntpd 服务开机启…

ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板

项目简介 在生活品质日益提升的今天&#xff0c;智能家居系统已经走进了千家万户&#xff0c;并逐渐成为现代生活的一部份。与此同时&#xff0c;一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板&#xff0c;已经成为众多家庭的新宠。这种高效、直观的智能化的解决方…

如何用ChatGPT结合Python处理遥感数据

在科技飞速发展的时代&#xff0c;遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究&#xff0c;空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而&#xff0c;对于许多专业人士而言&#xff0c;如何高效地处…

TCP Analysis Flags 之 TCP Keep-Alive

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

使用buildx构建多架构平台镜像

1. 查看buildx插件信息 比较新的docker-ce版本默认已经集成了buildx插件 [rootdocker ~]# docker buildx version github.com/docker/buildx v0.11.2 9872040 [rootdocker ~]#2. 增加多平台镜像构建支持 通过tonistiigi/binfmt:latest初始化一个基于容器的构建环境&#xff…

【Linux】编辑器vim 与 编译器gcc/g++

目录 一、编辑器vim&#xff1a; 1、对vim初步理解&#xff1a; 2、vim的模式&#xff1a; 3、进入与退出&#xff1a; 4、vim命令模式下的指令集&#xff1a; 移动光标&#xff1a; 删除&#xff1a; cv&#xff1a; 撤销&#xff1a; 其他&#xff1a; 5、vim底行模…

面试总结!

OSI七层模型&#xff1a; 什么是OSI七层模型&#xff1f; 我们需要了解互联网的本质是一系列的网络协议&#xff0c;这个协议就叫做OSI协议&#xff08;开放系统互联(Open System Interconnection&#xff09;&#xff09;&#xff0c;它是由ISO&#xff08;国际标准化组织&…

人工智能技术:未来生活的“魔法师”

想象一下&#xff0c;未来的某一天&#xff0c;你醒来时&#xff0c;智能助手已经为你准备好了早餐&#xff0c;你的智能家居系统根据你的心情和日程安排调整了室内的光线和音乐&#xff0c;而你的自动驾驶汽车已经在门口等你。这不是科幻小说&#xff0c;这是人工智能技术为我…

Multi Agents协作机制设计及实践

01 多智能体协作机制的背景概述 在前述博客中&#xff0c;我们利用LangChain、AutoGen等开发框架构建了一个数据多智能体的平台&#xff0c;并使用了LangChain的Multi-Agents框架。然而&#xff0c;在实施过程中&#xff0c;我们发现现有的框架存在一些局限性&#xff0c;这些…

100、Python并发编程:保护临界资源的最简单方式,加锁

引言 前面的文章中已经提到了并发编程中能够带来性能提升的同时&#xff0c;也带来了一些问题&#xff0c;比如对共享资源/临界资源的竞争&#xff0c;可能会导致状态的不一致。最终的结果是虽然性能提升了&#xff0c;但是结果却是错误的…… 所以&#xff0c;并发编程中一个…

PHP电商供应链ERP管理系统小程序源码

&#x1f680;电商供应链大揭秘&#xff01;ERP管理系统如何重塑你的商业版图✨ &#x1f50d; 什么是电商供应链ERP管理系统&#xff1f; 电商供应链ERP管理系统是一款基于FastAdminThinkPHP开发的系统。该系统可满足电商企业管理自身进销存&#xff0c;帮助中小型电商企业管…

python: Parent-child form operations using ttkbootstrap

# encoding: utf-8 # 版權所有 2024 ©塗聚文有限公司 # 許可資訊查看&#xff1a;言語成了邀功的功臣&#xff0c;還需要行爲每日來值班嗎&#xff1f; # 描述&#xff1a; 主、子表單 窗體傳值 Parent-child form operations # Author : geovindu,Geovin Du 塗聚文. …

跳表原理笔记

课程地址 跳表是一种基于随机化的有序数据结构&#xff0c;它提出是为了赋予有序单链表以 O(logn) 的快速查找和插入的能力 创建 首先在头部创建一个 sentinel 节点&#xff0c;然后在 L1 层采用“抛硬币”的方式来决定 L0 层的指针是否增长到 L1 层 例如上图中&#xff0c;L…

医院信息化与智能化系统(17)

医院信息化与智能化系统(17) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应…

selenium操作已开启的浏览器,方便调试

一、谷歌浏览器配置&#xff1a; 在所安装的谷歌下面&#xff0c;执行下面命令&#xff0c;打开谷歌浏览器&#xff0c;用来selenium的操作&#xff1a; 注意事项&#xff1a;端口需要不被占用&#xff0c;--user-data-dir"D:\workspace\chrome-data"这个路径需要有…

深度强化学习:从理论到应用

目录 1.引言 2.什么是强化学习&#xff1f; 3.深度学习和强化学习的结合 4.深度强化学习的主要方法 5.深度强化学习的应用领域 6.深度强化学习的挑战与未来 7.总结 1.引言 深度强化学习&#xff08;Deep Reinforcement Learning&#xff0c;DRL&#xff09;是近年来人工…