tp框架不允许多终端登录处理
public function login(){
$arr['admin']=$_POST['username'];
$arr['password']=md5($_POST['password']);
$admin=M('Admin');
$res=$admin->where($arr)->find();
if($res){
$ac['sid']=getCode(3);
$_SESSION['ac']=$ac['sid'];
$admin->where($arr)->save($ac);
}
$this->redirect("Index/index");
}
每次登录成功时生成一个随机码跟用户信息一起保存在session里,同时把此码保存在数据库中作为登录账号信息的一个字段;
每一次操作都验证session里的随机码与数据库保存的是否相同,不同则说明此账号已经异地登录,弹出提示并推出此账号;
thinkphp的示例:
<?php
class BaseAction extends Action {
public function _initialize(){
$a=M('Admin');
//必须登录
if(empty($_SESSION["admin"]) || empty($_SESSION['ac'])){
$this->redirect('Login/dologin');
}else{
$arr['admin']=$_SESSION["admin"];
$cc=$a->where($arr)->getField('sid');
if($cc!=$_SESSION['ac']){
$this->success('此账号被异地登录,如非本人操作,请及时修改密码',U('Login/logout'),3);
}
}
}
}
?>