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


Posted in PHP onOctober 10, 2019

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

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

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

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

登陆界面:

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

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

登陆控制器:

<?php
namespace app\Admin\controller;
use think\Controller;
use think\Session;
use think\Request;
use think\Db;
class Login extends Controller{
  public function login(){
//判断是否是post方法发送的数据:如果是则开始登陆
    if (Request::instance()->isPost()){
      $admin_username = input('post.admin_username');//接收前台用户名
      $admin_password = input('post.admin_password');//接收前台密码
      if(empty($admin_username) || empty($admin_password)){
        $this->error("用户名或者密码不能为空!");
      }
      //从数据库读取数据
      $admin_info = DB::name('admin')
      ->where('admin_username',$admin_username)
      ->find();
      if(empty($admin_info)){
        $this->error('用户不存在,请重新登陆',url('Login/login'));
      }else{
        if(md5($admin_password)!=$admin_info['admin_password']){
          $this->error('密码不正确,请重新登陆',url('Login/login'));
        }else{
          Session::set('admin_username',$admin_username);
          $this->success("登录成功!",url('Index/index'));
        }
      }
    }else{//如果不是post,则返回登陆界面
      return view('login');
    }
  }
  public function logout(){
    session(null);//退出清空session
    return $this->success('退出成功',url('Login/login'));//跳转到登录页面
  }
}

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

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

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

后台首页面:

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

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php 无限极分类
Mar 27 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
PHP+ajax分页实例简析
Dec 07 PHP
PHP错误处理函数
Apr 03 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
php中的explode()函数实例介绍
Jan 18 PHP
PHP sdk文档处理常用代码示例解析
Dec 09 PHP
laravel框架查询数据集转为数组的两种方法
Oct 10 #PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 #PHP
在laravel中使用with实现动态添加where条件
Oct 10 #PHP
Laravel关系模型指定条件查询方法
Oct 10 #PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 #PHP
基于laravel where的高级使用方法
Oct 10 #PHP
laravel 实现设置时区的简单方法
Oct 10 #PHP
You might like
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
域名查询代码公布
2006/10/09 PHP
php的一个登录的类 [推荐]
2007/03/16 PHP
php计算十二星座的函数代码
2012/08/21 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
php时间计算相关问题小结
2016/05/09 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
2020/04/23 PHP
asp 的 分词实现代码
2007/05/24 Javascript
javascript prototype 原型链
2009/03/12 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
Python处理Excel文件实例代码
2017/06/20 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
基于python指定包的安装路径方法
2018/10/27 Python
python输出pdf文档的实例
2020/02/13 Python
python 元组的使用方法
2020/06/09 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
销售主管的自我评价分享
2014/01/03 职场文书
社会实践感言
2014/01/25 职场文书
小浪底导游词
2015/02/12 职场文书
2015年酒店工作总结
2015/04/28 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python