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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
PHP获取网址的顶级域名函数代码
Sep 24 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php建立Ftp连接的方法
Mar 07 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
laravel框架如何设置公共头和公共尾
Oct 22 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 PHP
基于PHP实现短信验证码发送次数限制
Jul 11 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
php中文字符截取防乱码
2008/03/28 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
js的三种继承方式详解
2017/01/21 Javascript
setTimeout学习小结
2017/02/08 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
如何让你的JS代码更好看易读
2017/12/01 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Jupyter加载文件的实现方法
2020/04/14 Python
Python中logger日志模块详解
2020/08/04 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
DataReader和DataSet的异同
2014/12/31 面试题
数控技术与应用毕业生自荐信
2013/09/24 职场文书
师范生实习个人的自我评价
2013/09/28 职场文书
仓库主管的岗位职责
2013/12/04 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
户籍证明格式
2014/09/15 职场文书
自荐信范文
2019/05/20 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python