zoukankan      html  css  js  c++  java
  • 登录的顶号功能实现

    顶号功能的基本实现原理

    1、建议修改PHP/JAVA的配置,使sessionid保存到memcache;

    2、每次登录时,查询表所有该user_id的sessionid;

    3、删除memcache或文件中第2步查到的sessionid,即可注销其他设备上的登录凭证;

    4、每次登录时,记录登录者user_id和session_id;

    对于不设顶号的账户,则无需进行234步骤;

        //顶号功能,登录成功时调用
        protected function do_1login(){
    //        var_dump( $_SESSION );
            if( $_SESSION['padmin']['is_1login'] ){
                $uid = $_SESSION['padmin']['uid'];
                //干掉旧的sessionid
                $old_arr = Model_Adminsession::instance()->fetch_all([['uid','=',$uid]]);
    //            var_dump($old_arr);
                if( PRODUCTION_ENV ){    //生产环境,用的memcache保存sessionid
                    $mem = new Memcache;
                    $ok = $mem->connect('127.0.0.1', 11211);
                    foreach($old_arr as $line){
    //                    var_dump( $line['session'] );
                        $mem->delete( $line['session'] );
                    }unset($line);
                    $mem->close();
                }else{
                    $sess_dir = session_save_path();
    //                var_dump($sess_dir);
                    foreach($old_arr as $line){
                        @unlink( $sess_dir.'/sess_'.$line['session'] );    //删除session缓存
                    }unset($line);
                }
                Model_Adminsession::instance()->delete([['uid','=',$uid]]);
                
                //记录最新的sessionid
                $session = session_id();
                $ok = Model_Adminsession::instance()->insert(['uid'=>$uid, 'session'=>$session]);
    //            var_dump($ok);
            }
        }
  • 相关阅读:
    vue项目使用async await 封装 axios
    vue实现预览功能(包括doc,pdf,图片,视频)
    vue中实现下载文件功能
    vue项目中加入拖放排序功能
    Vue项目中生成二维码
    position跟display、overflow、float这些特性相互叠加后会怎么样?
    localStorage使用注意
    webpack 使用总结
    cookie作用域
    语法糖的理解
  • 原文地址:https://www.cnblogs.com/batsing/p/11341516.html
Copyright © 2011-2022 走看看