本篇文章给大家带来的内容是关于php实现用户登录与注销的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
之前虽然写过登录的功能,但是注销还没有认真的看过。特此记录
当点击登录时,把用户账号信息以变量的形式存在定义的作用域(session)。session代表一次会话,只要你不关闭当前浏览器他的值就会存在,默认20分钟左右。
// BisAccount变量名, $ret用户账号信息 ,赋值bis作用域 session(‘BisAccount’, $ret, ‘bis’); // 删除 bis作用域 session( null,‘bis’); //取值 在bis作用域,名为BisAccount的值 session(‘BisAccount’, ‘’, ‘bis’);
Login
// 如果是post请求,即从登录页面过来的数据 则判断用户名和密码是否正确
账号密码与随机生成的数字拼接,使用MD5加密
// 如果不是post,判断session中是否有登录信息
有 跳转到登录后的页面
没有 跳转到登录页面
class Login extends Controller{ //登录 public function index() { if (request()->isPost()) { $data = input('post.'); $ret = model('BisAccount')->get(['username'=>$data['username']]); if(empty($ret) || $ret->status != 1){ $this->error('该用户不存在或者未审核通过'); } $pass = $data['password']; $ran = $ret['code']; if(md5($pass."".$ran) != $ret['password']){ $this->error('密码错误'); } model('BisAccount')->updateById(['last_login_time'=>time()],$ret->id); //session保存用户信息 赋值bis作用域 session('BisAccount', $ret, 'bis'); return $this->success('登录成功',url('Index/index')); } else { $account = session('BisAccount','','bis'); if(!empty($account) && $account->id){ return $this->redirect(url('index/index')); } return $this->fetch(); } } //注销 public function logout(){ session( null,'bis'); $this->redirect(url('login/index')); }}
登录后的页面
Base
判断session中是否有BisAccount
有,说明登录状态
没有,重定向到登录页面
class Base extends Controller{ public $account; public function _initialize() { // 判定用户是否登录 $isLogin = $this->isLogin(); if(!$isLogin) { return $this->redirect(url('login/index')); } } //判定是否登录 public function isLogin() { // 获取sesssion $user = $this->getLoginUser(); if($user && $user->id) { return true; } return false; } public function getLoginUser() { if(!$this->account) { $this->account = session('BisAccount', '', 'bis'); } return $this->account; }}
Index
主页 继承自 Base 。如果账号注销后,再次访问index/index,则会走Base中_initialize初始化方法,
判断bis作用域中是否有BisAccount从而跳转到登录页面,而不会访问到登录后的页面。
登录后,访问index/index 与 login/index 返回相同的页面。
class Index extends Base{ public function index() { return $this->fetch(''); } }
tip: 如果存入的Session名称为A,取Session时也要取A
//存 session(‘BisAccount’, $ret, ‘bis’); //取 session(‘BisAccount’, ‘’, ‘bis’);
都是BisAccount
以上是php实现用户登录与注销的代码示例的详细内容。更多信息请关注PHP中文网其他相关文章!

phpientifiesauser'ssessionusessessionSessionCookiesAndSessionIds.1)whiwSession_start()被称为,phpgeneratesainiquesesesessionIdStoredInacookInAcookInamedInAcienamedphpsessidontheuser'sbrowser'sbrowser.2)thisIdAllowSphptptpptpptpptpptortoreTessessionDataAfromtheserverMtheserver。

PHP会话的安全可以通过以下措施实现:1.使用session_regenerate_id()在用户登录或重要操作时重新生成会话ID。2.通过HTTPS协议加密传输会话ID。3.使用session_save_path()指定安全目录存储会话数据,并正确设置权限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用会话构建高效购物车系统的步骤包括:1)理解会话的定义与作用,会话是服务器端的存储机制,用于跨请求维护用户状态;2)实现基本的会话管理,如添加商品到购物车;3)扩展到高级用法,支持商品数量管理和删除;4)优化性能和安全性,通过持久化会话数据和使用安全的会话标识符。

本文讨论了PHP中的crypt()和password_hash()之间的差异,以进行密码哈希,重点介绍其实施,安全性和对现代Web应用程序的适用性。

文章讨论了通过输入验证,输出编码以及使用OWASP ESAPI和HTML净化器之类的工具来防止PHP中的跨站点脚本(XSS)。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

WebStorm Mac版
好用的JavaScript开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。