需求:1、一个账号只能一个人登陆。2、系统无操作,30分钟后自动退出
框架:TP3.2
loginController
$checkstr = md5(time().rand(1000, 9999));
C('default_cache_time') = 30*60;
cookie('current_adminid', $admin_item['adminid'], C('default_cache_time'));
//账号可能是中文,使用urlencode
cookie('current_admin_account', urlencode($admin_item['account']));
cookie('current_admin_group', urlencode($admin_item['groupsn']));
cookie('current_admin_checkstr', $checkstr);
S('admin_login_checkstr_'.$admin_item['adminid'], $checkstr);
AdminBasicAction
protected function _initialize(){
parent::_initialize();
$menus= null;
//限时登录,因为cookie('current_adminid')只保存30分钟,所以30分钟后,点击系统自动跳到登录页
if(!cookie('current_adminid')){
$this->redirect("Admin/LoginMgr/login");
return;
}
//一个账号只能在一个地方登录
$checkstr_in_cache = S('admin_login_checkstr_'.cookie('current_adminid'));
$checkstr_in_cookie = cookie('current_admin_checkstr');
if ($checkstr_in_cache != $checkstr_in_cookie){
$this->error("账号在其他地方登陆了", U("Admin/LoginMgr/login"));
return;
}
//没到30分钟,重写cookie,相当于续命30分钟
cookie('current_adminid', cookie('current_adminid'), C('default_cache_time'));