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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
php session安全问题分析
Jun 24 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
基于PHP创建Cookie数组的详解
Jul 03 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
PHP常用处理静态操作类
Apr 03 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
Zend Framework教程之Zend_Config_Xml用法分析
Mar 23 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
PHP chop()函数讲解
Feb 11 PHP
php实现文章评论系统
Feb 18 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
Jun 25 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+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
JS实现微信摇一摇原理解析
2017/07/22 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
安装Python的教程-Windows
2017/07/22 Python
Python实现一个简单的验证码程序
2017/11/03 Python
Django 多环境配置详解
2019/05/14 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
如何理解python面向对象编程
2020/06/01 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
教师业务学习制度
2014/01/25 职场文书
酒店总经理助理职责
2014/02/12 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
学生会竞聘书范文
2014/03/31 职场文书
网络优化专员求职信
2014/05/04 职场文书
酒店服务员岗位职责
2015/02/09 职场文书
投标单位介绍信
2015/05/05 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python