防止不同的用户登录到PHP 7.4中的同一浏览器

问题描述 投票:0回答:1

我的第一个帖子在这里。

我已经建立了一个登录系统(具有密码验证,强度,对数据库的检查,哈希等),并且几乎完整。我已经到了可以防止同一用户重复登录的位置,检查在登录过程中在数据库中创建的两个字段:一个是“ token”中随机生成的令牌,另一个是“ isSignedIn” 0和1。当前,它防止同一用户重复登录,并且还将在下一页操作中将该人引导下。

我的下一个目标是防止两个不同的用户同时登录到同一台计算机上的同一Web浏览器。经过数小时的搜索,我没有找到一个可靠的答案。

这里是我遇到的问题:在测试过程中,使用同一浏览器登录了多个用户:

  1. 我以三个不同的用户身份登录我的门户;这三个都有他们的'token'和'isSignedIn'写入数据库]]

  2. 我注销了一个用户,该用户的token / isSignedIn值为分别删除/更改]]

  3. [当我注销其他两个用户时,其“令牌”和即使“ isSignedIn”仍保留在数据库中注销成功。
  4. 我不知道为什么注销一个用户会阻止其他两个在注销时删除其'token'和'isSignedIn'。它适用于第一个用户,没问题。我假设有某种会话重叠会杀死其他两个。我不能告诉客户简单地说“一次只能在一个浏览器上的一台计算机上只有一个人”,所以我需要一些帮助。

    我想一次只限制一个浏览器上的一个用户,或者阻止第二/第三/第四用户登录同一浏览器。

任何帮助将不胜感激!

谢谢。数据库映像“数据库图片”“>

注销处理器“注销处理器”

我的第一个帖子在这里。我已经建立了一个登录系统(具有密码验证,强度,对数据库的检查,哈希等),并且几乎完整。我已经到了可以防止重复的地方...

  1. 请注意,会话在同一浏览器的所有选项卡之间共享。
  • 当您在第一个用户注销后取消设置并销毁会话时,$ _ SESSION ['email']的值将从其他选项卡中丢失。
  • 当执行SQL语句删除登录名时,它失败,原因如下:更新... WHERE email =''
  • 为了防止一个用户登录同一浏览器,请使用用户会话变量(例如您使用的用户会话变量(isSignedIn),并检查其变量以将用户从登录页面重定向到首页)。将以下代码放在登录页面的顶部:

  • 并注销操作添加:$ isSignedIn = 0;

    php authentication logout multiple-users
    1个回答
    0
    投票
    1. 请注意,会话在同一浏览器的所有选项卡之间共享。
    © www.soinside.com 2019 - 2024. All rights reserved.