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模板页面中分页代码的解析
Feb 06 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
php防止sql注入简单分析
Mar 18 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 PHP
PHP实现单例模式建立数据库连接的方法分析
Feb 11 PHP
PHP实现简易图形计算器
Aug 28 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载入页面时编码的方法
2014/07/29 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
js控制当再次点击按钮时的间隔时间
2014/06/03 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
python创建进程fork用法
2015/06/04 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
python三引号输出方法
2019/02/27 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
python安装scipy的步骤解析
2019/09/28 Python
python常用排序算法的实现代码
2019/11/08 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
CSS3中几个新增加的盒模型属性使用教程
2016/03/01 HTML / CSS
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
前台接待员岗位职责
2014/01/02 职场文书
教师档案管理制度
2014/01/23 职场文书
园艺师求职信
2014/03/10 职场文书
社区义诊活动总结
2014/04/30 职场文书
国际贸易实训总结
2015/08/03 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL