php 一个账号禁止多浏览器多用户登录
思路:可以弄个随机码每次登陆的时候记录到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框架中实现的,请根据实际应用更改
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 数据库SQL去重,保留一条数据
- 下一篇: 二维数组、字符串、循环的处理
