思路:可以弄个随机码每次登陆的时候记录到session和数据库里,然后做对比不一样就退出登陆
代码:
public function actionLogin() {
if(isset($_POST['submit'])){
$username=$this->getRequestParam('username');
$password=$this->getRequestParam('password');
$member=new Member();
if($member->login($username,$password)){
$userInfo=getUserInfo();// 获取用户信息
$login_time = time();
//生成随机串
$m_login['token'] =md5($login_time.$userInfo['userid']);
//存到数据库
$ml = new MemberLogin();
$ml->saveData($m_login,'userid=:userid',array(':userid'=>$userInfo['userid']));
//存到session
$_SESSION['login_token'] = $m_login['token'];
}
}
}
//所有的控制器都继承这个控制器
public function beforeAction() {
//获取数据库中存的登录值
$ml = new MemberLogin();
$m_login = $ml->getOne('userid=:userid',array(':userid'=>$userInfo['userid']),'token');
//和session中的值对比,不一样则退出登录
if($_SESSION['login_token']!=$m_login['token']){
Yii::$app->user->logout();
$this->error('您的账号已在别处登录',Yii::$app->urlManager->createUrl('/index/login'),3);
}
}
注意:以上的代码是在yii2框架中实现的,请根据实际应用更改