为何我退出登录后还显示请不要重复登录?session没清空?不科学啊
Base.php控制器:
<?php
namespace app\admin\common;
use think\Controller;
use think\Session;
class Base extends Controller{
// Base.php控制器主要完成三项工作:
// 1.创建登录标志常量,
// 2.对未登录进行处理,
// 3.对已登录进行处理,
protected function _initialize(){
parent::_initialize();
// 在公共控制器的初始化方法中,创建一个常量来判断用户是否登录或已登录
define('USER_ID',Session::get('user_id'));
}
// 判断用户是否登录,在后台入口调用
protected function isLogin(){
// 如果登录常量为空,表示没有登录
if(is_null('USER_ID')){
$this->error('未登录,无权访问...','login/index');
}
}
// 如果用户已经登录,将不再登录
protected function alreadyLogin(){
//如果登录常量为空,表示没有登录
if(!is_null('USER_ID')){
$this->error('请不要重复登录...','index/index');
}
}
}
?>
if(is_null('USER_ID')){
}
if(!is_null('USER_ID')){
}
两个'USER_ID'单引号去掉
is_null 是判断变量是不是 null 类型的
你换成 empty() 就行
<?php
namespace appadmincontroller;
use appadmincommonBase;
use thinkRequest;
use appadminmodelAdmin;
use thinkSession;
class Login extends Base
{
// 渲染登录界面
public function index()
{
$this->alreadyLogin();
return $this->view->fetch('Login');
}
// 验证用户身份
public function check(Request $request)
{
//设置返回的初始值
$status=0;
// 获取表单提交的数据,并保持在变量中
$data=$request->param();
$userName=$data['username'];
$password=md5($data['password']);
// 在admin表中进行查询:以用户为条件
$map=['username'=>$userName];
$admin=Admin::get($map);
// 将用户名与密码分开验证
if(is_null($admin)){
// 设置返回信息
$message='用户名不正确';
}else if($admin->password!=$password){
$message='密码不正确';
}else{
$status=1;
$message='验证通过,请登录后台';
$admin->setInc('login_count');
$admin->save(['last_time'=>time()]);
// session::set(name:'user_id',value:$userName);
// session::set(name:'user_info',value:$data);
session::set('user_id',$userName);
session::set('user_info',$data);
}
return ['status'=>$status,'message'=>$message];
}
// 退出登录
public function logout()
{
// session(null);
Session::delete('user_id');
Session::delete('user_info');
$this->success('注册成功,正在返回...','login/index');
//
}
public function delete($id)
{
//
}
}