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 相关文章推荐
经典的PHPer为什么被认为是草根?
Apr 02 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
PHP 进程锁定问题分析研究
Nov 24 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
php 字符串替换的方法
Jan 10 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
深入分析PHP引用(&amp;)
Sep 04 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
php修改数组键名的方法示例
Apr 15 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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之第九天
2006/10/09 PHP
虚拟主机中对PHP的特殊设置
2006/10/09 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
python结合API实现即时天气信息
2016/01/19 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python 内置函数filter
2017/06/01 Python
python 2.7.14安装图文教程
2018/04/08 Python
python3中rank函数的用法
2019/11/27 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
写出一个方法实现冒泡排序
2016/07/08 面试题
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
《凡卡》教学反思
2014/04/09 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
班主任开场白
2015/06/01 职场文书
创业计划书之校园超市
2019/09/12 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python