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
Oct 09 PHP
PHP 和 XML: 使用expat函数(二)
Oct 09 PHP
10 个经典PHP函数
Oct 17 PHP
php实现图片添加水印功能
Feb 13 PHP
php除数取整示例
Apr 24 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
PHP实现留言板功能的详细代码
Mar 25 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
Yii框架日志记录Logging操作示例
Jul 12 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
Apr 06 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
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
js实现搜索栏效果
2018/11/16 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
Python入门篇之文件
2014/10/20 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
python自带的http模块详解
2016/11/06 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python3.7调试的实例方法
2020/07/21 Python
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
财会自我鉴定范文
2013/12/27 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js