【php实战项目训练】——thinkPhP的登录与退出功能的实现,让登录退出畅通无阻

本文主要是介绍【php实战项目训练】——thinkPhP的登录与退出功能的实现,让登录退出畅通无阻,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述


👨‍💻个人主页:@开发者-曼亿点

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 曼亿点 原创

👨‍💻 收录于专栏:PHP程序开发


请添加图片描述

请添加图片描述

文章目录

    • 前言
    • 🎶一、登录功能模块
    • 🎶二、退出登录功能模块
        • 结束语🥇


前言

  在 Web 应用程序中,登录和退出功能是基本而重要的功能之一。通过登录功能,用户可以安全地访问其个人信息和应用程序功能,而退出功能则允许用户安全地退出登录状态。ThinkPHP 是一款快速、简单的 PHP 开发框架,提供了丰富的功能和便捷的开发方式,适用于各种规模的 Web 应用程序开发。本教程将指导您如何使用 ThinkPHP 框架实现登录和退出功能,以提高您的 Web 应用程序的安全性和用户体验。

前提条件:

  已经安装了 ThinkPHP 框架,并配置好了开发环境。
  已经建立了数据库,并且拥有用于存储用户信息的表。
步骤概述:

  创建登录页面: 使用 HTML 和 ThinkPHP 的模板引擎创建登录页面,包括用户名和密码输入框以及登录按钮。

  处理登录请求: 在 ThinkPHP 控制器中创建处理登录请求的方法,接收用户提交的用户名和密码,验证其准确性,并创建登录会话。

  实现登录验证: 在数据库中验证用户输入的用户名和密码是否匹配,如果匹配成功,则创建登录会话并将用户重定向到应用程序的主页。

  创建退出功能: 在 ThinkPHP 控制器中创建处理退出请求的方法,清除登录会话并将用户重定向到登录页面。

  保护页面访问: 在需要登录才能访问的页面中添加登录验证逻辑,确保未登录用户无法访问敏感信息。


🎶一、登录功能模块


  为实现登录功能提供了强大的支持。本教程将带领您逐步学习如何在 ThinkPHP 中开发完整的登录功能模块,包括用户身份验证、会话管理和错误处理等方面。
步骤概述:

  创建数据库表: 设计并创建一个用户表,用于存储用户的登录信息,包括用户名、密码等字段。

  创建登录页面: 使用 HTML 和 ThinkPHP 模板引擎创建登录页面,包括用户名和密码输入框以及登录按钮。

  处理登录请求: 在 ThinkPHP 控制器中创建处理登录请求的方法,接收用户提交的用户名和密码,并进行验证。

  实现用户验证: 在数据库中验证用户输入的用户名和密码是否匹配,若匹配成功,则创建登录会话。

  会话管理: 使用 ThinkPHP 提供的 Session 功能来管理用户的登录状态,确保用户在一定时间内保持登录状态。

  错误处理: 在登录过程中,处理用户输入错误、数据库查询失败等可能出现的错误,并给出友好的提示信息。

  安全性考虑: 实现一些安全性考虑,如密码加密存储、防止 SQL 注入等,保障用户信息的安全。

在这里插入图片描述
Login.html页面代码:

  <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /><meta name="renderer" content="webkit|ie-comp|ie-stand"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta http-equiv="Cache-Control" content="no-siteapp" /><meta name="keywords" content=""><meta name="description" content=""><title>首页</title><link rel="stylesheet" href="__STATIC__/common/layui/css/layui.css"><link rel="stylesheet" href="__STATIC__/common/css/sccl.css"></head><body class="login-bg"><div class="login-box"><header><h1>新闻管理系统后台</h1></header><div class="login-main"><form action="" class="layui-form" method="post" id="login_form"><input name="__RequestVerificationToken" type="hidden" value="">                <div class="layui-form-item"><label class="login-icon"><i class="layui-icon"></i></label><input type="text" name="userName" lay-verify="userName" autocomplete="off" placeholder="这里输入登录名" class="layui-input"></div><div class="layui-form-item"><label class="login-icon"><i class="layui-icon"></i></label><input type="password" name="password" lay-verify="password" autocomplete="off" placeholder="这里输入密码" class="layui-input"></div><div class="layui-form-item"><div class="pull-left login-remember"><label>记住帐号?</label><input type="checkbox" name="rememberMe" value="true" lay-skin="switch" title="记住帐号"><div class="layui-unselect layui-form-switch"><i></i></div></div><div class="pull-right"><button class="layui-btn layui-btn-primary" lay-submit="" lay-filter="login"  ><i class="layui-icon"></i> 登录</button></div><div class="clear"></div></div></form>        </div><footer><p>湖南应用技术学院</p></footer></div><script src="__STATIC__/common/layui/layui.js"></script><script>layui.use(['layer', 'form'], function () {var layer = layui.layer,$ = layui.jquery,form = layui.form();form.verify({userName: function (value) {if (value === '')return '请输入用户名';},password: function (value) {if (value === '')return '请输入密码';}});form.on('submit(login)', function (data) {$.post('isLogin',data.field , function (res) {if (!res.success) {layer.msg(res.message,{icon:2});}else{layer.msg(res.message,{icon:1},function(index){layer.close(index);location.href='../index/index';});}}, 'json');return false;});});</script></body></html>

Login.php逻辑代码:

<?
namespace app\admin\controller;
use think\View;
use app\admin\model\Users;
use think\Session;class Login 
{public function login(){//访问界面$view = new View();return $view->fetch('login');}public function isLogin(){$obj=array("success"=>false,"message"=>"登录失败,请确认账号密码");// 接受login.html的账号信息(提交的表单),$userName=trim($_POST['userName']);$password=trim($_POST['password']);$md5pwd=md5($password);//连接数据库,判定数据库中是否有该用户,M模型层$user = new Users();// 查询单个数据$data=$user->where('tel', $userName)->where('pwd', $md5pwd)->find();$view = new View();$isLogin=true;if($data!=NULL){Session::set("id",$data['Id']);Session::set("name",$data['name']);Session::set("email",$data['email']);Session::set("tel",$data['tel']);Session::set("img",$data['img']);$obj=array("success"=>true,"message"=>"登录成功");}echo json_encode($obj);}}
?>

🎶二、退出登录功能模块


  退出功能在 Web 应用程序中同样非常重要,它允许用户安全地结束当前会话并退出登录状态。ThinkPHP 提供了简单而有效的方式来实现退出功能,本教程将指导您如何在 ThinkPHP 中开发完整的退出功能模块,以提高您的应用程序的安全性和用户体验。
步骤概述:

  创建退出处理方法: 在 ThinkPHP 控制器中创建处理退出请求的方法,用于清除当前用户的登录会话。

  清除会话信息: 在退出处理方法中,使用 ThinkPHP 提供的 Session 功能来清除用户的登录会话信息,确保用户安全退出登录状态。

  重定向到登录页面: 在退出处理方法中,将用户重定向到登录页面,以便用户重新登录或者浏览其他内容。

  安全性考虑: 在退出过程中,确保用户的会话信息被安全清除,避免可能存在的安全隐患。

在这里插入图片描述
index.html页面代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /><meta name="renderer" content="webkit|ie-comp|ie-stand"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta http-equiv="Cache-Control" content="no-siteapp" /><meta name="keywords" content="scclui框架"><meta name="description" content="scclui为轻量级的网站后台管理系统模版。"><title>首页</title><link rel="stylesheet" href="__STATIC__/common/css/sccl.css"><link rel="stylesheet" type="text/css" href="__STATIC__/common/skin/qingxin/skin.css" id="layout-skin"/></head><body><div class="layout-admin"><header class="layout-header"><span class="header-logo">系统框架</span> <a class="header-menu-btn" href="javascript:;"><i class="icon-font">&#xe600;</i></a><ul class="header-bar"><li class="header-bar-role"><a href="javascript:;">超级管理员</a></li><li class="header-bar-nav"><a href="javascript:;">{$Think.session.name}<i class="icon-font" style="margin-left:5px;">&#xe60c;</i></a><ul class="header-dropdown-menu"><li><a href="javascript:;">个人信息</a></li><li><a href="javascript:;">切换账户</a></li><li><a href="../login/loginOut">退出</a></li></ul></li><li class="header-bar-nav"> <a href="javascript:;" title="换肤"><i class="icon-font">&#xe608;</i></a><ul class="header-dropdown-menu right dropdown-skin"><li><a href="javascript:;" data-val="qingxin" title="清新">清新</a></li><li><a href="javascript:;" data-val="blue" title="蓝色">蓝色</a></li><li><a href="javascript:;" data-val="molv" title="墨绿">墨绿</a></li></ul></li></ul></header><aside class="layout-side"><ul class="side-menu"></ul></aside><div class="layout-side-arrow"><div class="layout-side-arrow-icon"><i class="icon-font">&#xe60d;</i></div></div><section class="layout-main"><div class="layout-main-tab"><button class="tab-btn btn-left"><i class="icon-font">&#xe60e;</i></button><nav class="tab-nav"><div class="tab-nav-content"><a href="javascript:;" class="content-tab active" data-id="home.html">首页</a></div></nav><button class="tab-btn btn-right"><i class="icon-font">&#xe60f;</i></button></div><div class="layout-main-body"><iframe class="body-iframe" name="iframe0" width="100%" height="99%" src="home.html" frameborder="0" data-id="home.html" seamless></iframe></div></section><div class="layout-footer">@2016 0.1 www.mycodes.net</div></div><script type="text/javascript" src="__STATIC__/common/lib/jquery-1.9.0.min.js"></script><script type="text/javascript" src="__STATIC__/common/js/sccl.js"></script><script type="text/javascript" src="__STATIC__/common/js/sccl-util.js"></script></body>
</html>

login.php页面的逻辑代码:

	public function loginOut(){//清除sessionSession::clear();//通过视图的方法登录到登录页面$view = new View();return $view->fetch('login');}
结束语🥇

以上就是PHP程序设计
持续更新PHP程序设计教程,欢迎大家订阅系列专栏🔥PHP程序开发你们的支持就是曼亿点创作的动力💖💖💖
请添加图片描述

这篇关于【php实战项目训练】——thinkPhP的登录与退出功能的实现,让登录退出畅通无阻的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1030372

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决