当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-29 16:25:28 浏览: 评论:0 

这篇文章主要介绍了thinkphp 5框架实现登陆,登出及session登陆状态检测功能,结合实例形式分析了thinkPHP5登陆判断、跳转及session的相关使用技巧,需要的朋友可以参考下。

本文实例讲述了thinkphp 5框架实现登陆,登出及session登陆状态检测功能。分享给大家供大家参考,具体如下:

1,访问http://localhost/tp5/admin.php时,判断有没有登陆:

想法:写一个父类,继承controller,然后定义一个初始化方法,在控制器调用时就判断是否登陆

  1. <?php 
  2. namespace app\Admin\controller; 
  3. use think\Controller; 
  4. use think\Session; 
  5. class Basic extends Controller 
  6.   //如果你的控制器类继承了\think\Controller类的话,可以定义控制器初始化方法_initialize,在该控制器的方法调用之前首先执行。 
  7.   public function _initialize() 
  8.   { 
  9.     //判断有无admin_username这个session,如果没有,跳转到登陆界面 
  10.     if(!session('admin_username')){ 
  11.       return $this->error('您没有登陆',url('Login/login')); 
  12.     } 
  13.   } 

登陆界面:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.   <meta charset="UTF-8"
  5.   <meta name="viewport" content="width=device-width, initial-scale=1.0"
  6.   <meta http-equiv="X-UA-Compatible" content="ie=edge"
  7.   <title>Document</title> 
  8. </head> 
  9. <body> 
  10.   <h1>登陆</h1> 
  11.   <div> 
  12.     <form class="m-t" role="form" action="{url('Login/login')}" method="post"
  13.       <div class="input-field"
  14.         <input id="admin_username" type="text" name="admin_username" class=" validate" placeholder="请输入用户名" required> 
  15.         <label for="admin_username">用户名</label> 
  16.       </div> 
  17.       <div class="input-field"
  18.         <input id="admin_password" type="password" name="admin_password" placeholder="请输入密码" class="validate" required> 
  19.         <label for="admin_password">密码</label> 
  20.       </div> 
  21.       <button type="submit" class="waves-effect red lighten-1 waves-light btn full-width " style="margin-top:10px; height:40px;">登 录</button> 
  22.     </form> 
  23.   </div> 
  24. </body> 
  25. </html> 

thinkphp登陆 session登陆

登陆控制器:

  1. <?php 
  2. namespace app\Admin\controller; 
  3. use think\Controller; 
  4. use think\Session; 
  5. use think\Request; 
  6. use think\Db; 
  7. class Login extends Controller{ 
  8.   public function login(){ 
  9. //判断是否是post方法发送的数据:如果是则开始登陆 
  10.     if (Request::instance()->isPost()){ 
  11.       $admin_username = input('post.admin_username');//接收前台用户名 
  12.       $admin_password = input('post.admin_password');//接收前台密码 
  13.       if(emptyempty($admin_username) || emptyempty($admin_password)){ 
  14.         $this->error("用户名或者密码不能为空!"); 
  15.       } 
  16.       //从数据库读取数据 
  17.       $admin_info = DB::name('admin'
  18.       ->where('admin_username',$admin_username
  19.       ->find(); 
  20.       if(emptyempty($admin_info)){ 
  21.         $this->error('用户不存在,请重新登陆',url('Login/login')); 
  22.       }else
  23.         if(md5($admin_password)!=$admin_info['admin_password']){ 
  24.           $this->error('密码不正确,请重新登陆',url('Login/login')); 
  25.         }else
  26.           Session::set('admin_username',$admin_username); 
  27.           $this->success("登录成功!",url('Index/index')); 
  28.         } 
  29.       } 
  30.     }else{//如果不是post,则返回登陆界面 
  31.       return view('login'); 
  32.     } 
  33.   } 
  34.   public function logout(){ 
  35.     session(null);//退出清空session 
  36.     return $this->success('退出成功',url('Login/login'));//跳转到登录页面 
  37.   } 

thinkphp登陆 session登陆

如果失败,回到登陆页面;如果登陆成功,跳转到后台首页:

  1. <?php 
  2. namespace app\Admin\controller; 
  3. use think\Controller; 
  4. use think\Session; 
  5. use think\View; 
  6. //后台首页继承自登陆判断页面,每次加载都会先执行判断页面的代码 
  7. class Index extends Basic 
  8.   public function index() 
  9.   { 
  10.     $view = new View(); 
  11.     $data = session('admin_username'); 
  12.     $view->assign('data',$data); 
  13.     //return view('index'); 
  14.     return $view->fetch('index'); 
  15.   } 

后台首页面

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.   <meta charset="UTF-8"
  5.   <meta name="viewport" content="width=device-width, initial-scale=1.0"
  6.   <meta http-equiv="X-UA-Compatible" content="ie=edge"
  7.   <title>Document</title> 
  8. </head> 
  9. <body> 
  10.   <!-- <h1>hello,{$Think.session.admin_username}</h1> --> 
  11.   <h1>hello,{$data}</h1> 
  12.   <a href="{:url('Login/logout')}" rel="external nofollow" >退出登陆</a> 
  13. </body> 
  14. </html>

Tags: thinkphp登陆 session登陆

分享到: