登录功能设计(php+mysql)

news2024/11/7 5:28:16

一   登录功能

        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.coloradmin.cn/o/2234793.html

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

相关文章

【物联网技术】ESP8266 WIFI模块STA、AP、STA+AP、TCP/UDP透传工作模式介绍与AT指令介绍

前言:本文对ESP8266 WIFI模块STA、AP、STA+AP、TCP/UDP透传工作模式进行介绍;以及AT指令介绍,包括基础AT指令,WIFI功能AT指令、TCP/IP相关AT指令、常用AT指令实例进行介绍。 ESP8266 WIFI模块的接线及固件烧写可参考我的这篇博客:正点原子ATK-ESP8266 WIFI模块接线及固件…

【前端】JavaScript 方法速查大全-函数、正则、格式化、转换、进制、 XSS 转义(四)

&#x1f525; 前言 在现代前端开发中&#xff0c;JavaScript 是不可或缺的语言。无论是处理数据、操作 DOM&#xff0c;还是进行复杂的逻辑运算&#xff0c;掌握 JavaScript 的各种方法都是每位开发者的必修课。本文将为您提供一个全面、系统的 JavaScript 方法参考&#xff…

关于路由笔记

路由 定义&#xff1a; 在计算机网络中&#xff0c;路由是将数据包从源节点传输到目标节点的过程。这个过程涉及到网络中的多个设备&#xff0c;如路由器、交换机等&#xff0c;其中路由器起着关键的决策作用。 工作原理示例&#xff1a; 假设你在一个公司的局域网内&#…

25.停车场管理系统(基于web的Java项目)

目录 1.系统的受众说明 2.相关技术与方法 3.系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 需求分析 3.2.1 系统功能描述 3.2.2 用例图分析 4. 系统设计 4.1 系统类分析 5. 系统详细设计与实现 5.1 用户登录 5.2 系统信…

【含开题报告+文档+源码】基于SpringBoot+Vue智能居民健康检测系统设计与实现

开题报告 随着社会发展和人民生活水平的提高&#xff0c;人们对健康生活的要求越来越高。而广大居民由于条件限制&#xff0c;存在着健康管理服务不足的问题。本文基于JavaWeb技术&#xff0c;设计并实现了一种居民健康检测系统。首先&#xff0c;本文对该平台的需求进行了分析…

SCNU习题 总结与复习

1. P1:构建最大二叉树 【分治】 重点 构树函数需要注意的点&#xff1b; 前序遍历需要注意&#xff0c;本题的输出有点特点。若一个结点无左子&#xff0c;无右子就不再下去遍历&#xff1b; 其他情况都要下去遍历&#xff1b; 2. P2 寻找多数【分治】 没啥&#xff0c;注意…

ssm060基于SSM的高校共享单车管理系统的设计与实现+vue(论文+源码)_kaic

设计题目&#xff1a;高校共享单车管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0…

【算法】(Python)贪心算法

贪心算法&#xff1a; 又称贪婪算法&#xff0c;greedy algorithm。贪心地追求局部最优解&#xff0c;即每一步当前状态下最优选择。试图通过各局部最优解达到最终全局最优解。但不从整体最优上考虑&#xff0c;不一定全局最优解。步骤&#xff1a;从初始状态拆分成一步一步的…

记一次微信云托管搭建Redis服务

背景 最近在做一个微信小程序&#xff0c;规划服务全部部署在云托管上面&#xff0c;本次使用了对象存储、mysql、java服务、Redis服务&#xff08;pc端用的&#xff09;。 由于对部署Redis不理解&#xff0c;查看了官方文档&#xff0c;首先看到的是这个架构图&#xff0c;看…

基于SSM的校园美食交流系统【附源码】

基于SSM的校园美食交流系统 效果如下&#xff1a; 管理员主页面 用户主页面 美食信息页面 美食资讯页面 修改密码页面 论坛中心页面 研究背景 随着高校信息化建设的不断推进&#xff0c;校园生活日益丰富多样&#xff0c;学生对于美食的需求与探索也愈发旺盛。然而&#xff…

Linux—进程学习-01

目录 Linux—进程学习—11.冯诺依曼体系结构2.操作系统2.1操作系统的概念2.2操作系统的目的2.3如何理解管理2.4计算机软硬件体系的理解2.5系统调用和库函数的概念 3.进程3.1进程是什么3.2管理进程3.2.1描述进程-PCB3.2.2组织进程3.2.3总结 3.3查看进程 4.与进程有关的系统调用 …

【电子通识】白皮书、应用手册、用户指南、快速入门指南一般的定义是什么?

一般大厂家的器件或模块,除了给数据表以外,还提供应用手册、技术说明、白皮书等各种文档资料。 如下图所示为ST25 NFC/RFID标签和读卡器的文件资料:其中就有技术说明、白皮书、应用手册等。 如下所示为TI INA228技术文档相关资料: 也有应用手册、用户指南、技术文章…

python opencv灰度变换

灰度变换 灰度变换和二值化的区别&#xff1a; 灰度变换是调整调整图像的灰度动态范围或图像对比度二值化是将图像的每个像素点调至0或255&#xff0c;只呈现白色或黑色 1.灰度化处理 图片的灰度化&#xff1a;将一个像素点的三个颜色变量相等&#xff0c;RGB&#xff0c;此…

toolkit二次开发学习之程序集(ProAsmcomp)和装配体组件路径对象(ProAsmcomppath)

程序集ProAsmcomp可以理解为装配体组件对象。 对象ProAssembly是ProSolid的一个实例&#xff0c;并共享相同的声明。因此&#xff0c;ProAssembly对象可以作为适用于装配体的任何ProSolid和ProMdl函数的输入。特别是&#xff0c;因为你可以使用函数ProSolidFeatVisit()来遍历特…

WPF中如何简单的使用CommunityToolkit.Mvvm创建一个项目并进行 增删改查

目录 开始前准备的数据库dbblog如下&#xff1a; 第一步&#xff1a;创建项目后下载四个NuGet程序包 第二步&#xff1a;删除原本的MainWindow.XAML文件 并创建如下的目录结构 然后在View文件夹下面创建Login.XAML和Main.XAML 并且在App.XAML中将启动项改为Login.X…

【51蛋骗鸡一共八个灯 按顺序依次12。34。56。78。两个灯同时亮灭的代码】2022-1-19

缘由proteus流水灯-嵌入式-CSDN问答 仿真51单片机流水灯代码-编程语言-CSDN问答 protues仿真单片机控制led流水灯-嵌入式-CSDN问答 #include<reg52.h>//头文件 void main() //主函数 {unsigned char y23;unsigned int ys0;while(1){if(!ys){P0y2;if(!(y2*4))y23…

数据结构:跳表实现(C++)

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言跳表跳表的优化思路skiplist&#xff0c;平衡搜索树&#xff0c;哈希表的对比 实现思路SkiplistNodesearch 搜索add 增加earse 删除 整体…

ssm基于Web的汽车客运订票系统的设计与实现+vue

系统包含&#xff1a;源码论文 所用技术&#xff1a;SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习&#xff0c;获取源码看文章最下面 需要定制看文章最下面 目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容…

SSM中maven

一&#xff1a;maven的分模块开发 maven分模块就是在多人操作一个项目时将maven模块导入依赖&#xff0c;注意仓库里面没有资源坐标&#xff0c;需要使用install操作下载。 二&#xff1a;maven的依赖管理 pom文件中直接写的依赖叫做直接依赖&#xff0c;直接依赖中用到的依…

如何找到养生生活视频素材?推荐几个优秀网站

今天&#xff0c;我们来聊一个实用的话题&#xff0c;那就是如何找到优质的养生视频素材。作为自媒体创作者&#xff0c;高质量的视频素材对内容制作至关重要。不论你是刚入行的新手&#xff0c;还是已经积累了一定粉丝的大V&#xff0c;找到合适的养生视频素材都能帮助你更好地…