顶号功能的基本实现原理
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); } }