入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

[thinkPHP5项目实战_23]管理员登录信息展示、登出和登录状态检测

创建时间:2017-10-30 投稿人: 浏览次数:1196
1.管理员登录信息展示和修改

登录成功后需要在头部展示登录的管理员的名称信息,并且点击修改能跳转到修改页面进行操作

登录成功后,需要将用户的信息写入服务器的session中,从session中获取用户名和id

thinkPHP5的session使用方法:https://www.kancloud.cn/manual/thinkphp5/126166

在登录的model中成功后写入session:

<?php 
namespace appadminmodel;

use thinkModel;

class Login extends Model
{
	//登录数据处理函数
	//获取控制器传过来的登录名和密码,根据登录名在数据库中获取密码
	//若密码一样则给控制器返回1,若密码存在但是不一样返回2,或密码不存在,返回3
	public function login($username,$password){
		$admin = 	hinkDB::name("admin")->where("username","=",$username)->find();
		if($admin){
			if($admin["password"] === md5($password)){
				//将登录id和名称存入session
                	hinkSession::set("id",$admin["id"]);
                	hinkSession::set("username",$admin["username"]);
				return 1;
			}else{
				return 2;
			}
		}else{
			return 3;
		}
	}
}

?>

在头部获取session中对应的值展示出来;

点击修改跳转到修改的控制器并将存在session中用户存的值传到对应控制器中

        <div id="navbar" class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#">管理员<?php echo session("username");?></a></li>
                <li><a href="{:url("Admin/edit",array("id"=>session("id")))}">修改密码</a></li>
                <li><a href="{:url("Login/logout")}">退出</a></li>
            </ul>
        </div>

2.登出

点击登录,则清空用户的session信息,并跳转到登录页面

在登录控制器中添加登出操作方法:

    public function logout(){
        session(null);//退出清空session
        return $this->success("退出成功",url("login"));//跳转到登录页面
    }
}

3.登录状态监测

用户打开等登出外的任何页面都需要对用户是否登录进行监测,因此每个页面对应的控制器操作方法执行之前都要执行一次登录检测

thinkPHP5提供了控制器初始化方法_initialize,在该控制器的方法调用之前首先执行https://www.kancloud.cn/manual/thinkphp5/118049

新建Basic控制器

<?php
namespace appadmincontroller;
use thinkController;
class Basic extends Controller
{
    //定义控制器初始化方法_initialize,在该控制器的方法调用之前首先执行。
    public function _initialize()
    {
        if(!session("id")){
            return $this->error("请先登录系统",url("Login/login"));
        }
    }


}
然后将后台模块中出登录控制器之外的所有控制器都继承该控制器的操作方法

比如Admin控制器继承

namespace appadmincontroller;
class Admin extends Basic

继承了Basic控制器再的其他控制器无需引入thinkController



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。