基于ThinkPHP框架下登录登出权限控制(一).

时间:2022-09-24 16:12:20

后台管理员表中 做一个加盐处理 md5双从加密:

function encrypt_password($password){
//加盐
$salt = '98765435678908bnjuiygvbnk8';
return md5( md5($password) . $salt);
}

1, 后台的登录功能:(Login控制器login方法);

 确认form表单完整性,完善name属性和提交地址

               <div class="form-item">
<label class="login-icon">
</label>
<input type="text" id='username' name="username" placeholder="这里输入登录名" required>
</div>
<div class="form-item">
<label class="login-icon">
<i></i>
</label>
<input type="password" id="password" name="password" placeholder="这里输入密码">
</div>

 

修改控制器中的login方法  用来接收表单并处理

public function login(){
//一个方法处理两个逻辑
if(IS_POST){
//post请求 表单提交
//接收参数

$username = I('post.username');
$password = I('post.password');
$code = I('post.code');
//参数检测
if(empty($username) || empty($password) || empty($code) ){
$this -> error('参数不全');
}
//验证码校验
//实例化Verify类

$verify = new \Think\Verify();
//调用check方法进行校验
$check = $verify -> check($code);

if(!$check){
//验证码错误
$this -> error('验证码错误');
}
//根据用户名查询tpshop_manager表
$info = D('Manager') -> where(['username' => $username]) -> find();
// $info = D('Manager') -> where(['username' => $username, 'password' => encrypt_password($password)]) -> find();
//如果查询到用户,则比对密码(将明文加密)

if($info && $info['password'] == encrypt_password($password)){
//用户名存在且密码一致 ,登录成功
//设置登录标识

session('manager_info', $info);
$this -> success('登录成功', U('Admin/Index/index'));
}
else{
//登录失败
$this -> error('用户名或者密码错误');
}
}
else{
//页面展示

//①如果已登录 可以直接跳转到后台首页
//②如果已登录 也可以自动退出重新打开登录页面

if(session('?manager_info')){
// $this -> redirect('Admin/Index/index');
session(null);
}
//临时关闭全局布局
layout(false);
//调用模板
$this -> display();
}
}

登录成功,一定要设置登录标识到session