牛骨文教育服务平台(让学习变的简单)
博文笔记

php 一个账号禁止多浏览器多用户登录

创建时间:2017-10-16 投稿人: 浏览次数:487

思路:可以弄个随机码每次登陆的时候记录到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框架中实现的,请根据实际应用更改

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。