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文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
May 23 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
destoon找回管理员密码的方法
Jun 21 PHP
php事务处理实例详解
Jul 11 PHP
PHP实现XML与数据格式进行转换类实例
Jul 29 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
php cookie 详解使用实例
Nov 03 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
php向js函数传参的几种方法
2014/08/10 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
JQuery验证工具类搜集整理
2013/01/16 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
2018/10/10 jQuery
openlayers实现地图弹窗
2020/09/25 Javascript
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
简单实现Python爬取网络图片
2018/04/01 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
python各种excel写入方式的速度对比
2020/11/10 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
Three Graces London官网:英国奢侈品牌
2021/03/18 全球购物
会计找工作求职信范文
2013/12/09 职场文书
产品生产计划书
2014/05/07 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
走进毛泽东观后感
2015/06/04 职场文书
课改心得体会范文
2016/01/25 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle