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新手NOTICE错误常见解决方法
Dec 07 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
Jul 25 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
PHP SplObjectStorage使用实例
May 12 PHP
php中Snoopy类用法实例
Jun 19 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP实现本地图片转base64格式并上传
May 29 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获取mysql版本的几种方法小结
2008/03/25 PHP
php的hash算法介绍
2014/02/13 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
JS Array对象入门分析
2008/10/30 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
javascript instanceof,typeof的区别
2010/03/24 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
2016/01/07 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
python简单文本处理的方法
2015/07/10 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
一文了解python 3 字符串格式化 F-string 用法
2020/03/04 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
护士辞职信范文
2014/01/19 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2014年设计师工作总结
2014/11/25 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers