一号优惠经验分享网
51福利网的各种薅羊毛福利经验笔记

PHP 会员同一账号,限制只在同一台电脑设备上单点登录,新登录后原登录会自动退出

比如a账号在a电脑或a浏览器上登录后,如果a账号又在b电脑登录,则a电脑上会自动检测并退出登录.
思路是点击登录后,把session或时间值保存在数据库或txt文本中,并同时保存在每个用户的浏览器中,如果账号在另一处登录,则更新数据库或txt中的sessionid值.
这时,只要实时比对浏览器中保存的session与数据库中的是否一致即可.
比如保存在会员id.txt中为例.
日志为 login_log/13.txt,里面保存sessionid的值.
其中13表示会员id ,另外,浏览器的session中保存用户的uid 比如13

 /**这是一个完整的代码,请根据自己网站修改**/
public function login() {
 if (is_login()) {
          $this->redirect('index/index');
        }
        $request = \think\Request::instance();
        //var_dump($request->isPost());exit;
        if ($request->isPost()) {
            $data = input('param.');
            $user = $data['username'];
            $pwd = $data['password'];
            $has = db('user')->where('username', $user)->find();
            (empty($has) || $has['password'] != md5($pwd)) && $this->error("用户名或密码错误");


    file_put_contents('login_log/'.$has['id'].'.txt',session_id());
                 session('uid', $has['id']);

            $this->success("登录成功", "index/index");
        } else {
            return view();
        }
    }

判断是否登录的函数为

51福利网
function is_login(){
    $session_id=file_get_contents('login_log/'.session('uid').'.txt');

    if($session_id==session_id()){
        return session('uid');
    }else{
        return 0;
    }

}


在需要检测是否是登录状态的页面加上

if (!is_login()) {
             $this->success("请重新登录", "publics/login");
        }

注意请根据自己网站修改;

比如我有一个网站,

①有登录页面login.php . 之前有关于会员id的session:$_SESSION[‘sea_user_id’]

②登录成功后跳转到会员中心页面huiyuan.php

③有文章详情页面,neirong.php

我是如下修改的,(

在登录页面login.php写text文件写入登录时候的session_id() 直接在适合位置如下代码

	file_put_contents('data/cache/login_log/'.$_SESSION['sea_user_id'].'.txt',session_id());

  //$_SESSION['sea_user_id']是用户的id
 //比如用户id是2的用户保存session_id()地址是data/cache/login_log/2.txt

在文章页面neirong.php加入判断

$session_id1=file_get_contents('../data/cache/login_log/'.$_SESSION['sea_user_id'].'.txt');

    if($session_id1!=session_id()){
      showMsg("您已经在其他地方登录,请重新登录","../login.php"); exit();
    }

这样只要a账号在另一次登录后,原来的设备上只要访问文章内容页就需要他重新登录


更多的参考文章知识:

①PHP的 file_put_contents() 函数,直接百度看教程或者https://www.runoob.com/php/func-filesystem-file-put-contents.html

②php中的session_id详解 https://www.cnblogs.com/imnzq/p/6859011.html

打赏
一号优惠 · 51福利网薅羊毛福利具有时效性,如已失效,请留言
文章名称:《PHP 会员同一账号,限制只在同一台电脑设备上单点登录,新登录后原登录会自动退出》-一号优惠 · 51福利网
免责申明:本站所有活动信息均来自网络,如有失效,不实或侵权,请联系我们删除。谢谢

评论 抢沙发

一号优惠经验分享网最新最全薅羊毛,现金红包线报网

一号优惠经验分享网提供每日最新内部优惠,薅羊毛活动,现金红包领取,免费福利和网赚福利手机赚钱线报,打造中国最受欢迎的网赚信息发布平台!51福利网

51联盟线报群赚钱·合作·帮助

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册