如何阻止用户同时从2个位置登录?用户名和密码只能由1个人同时使用。
请用PHP发给我代码。
答案 0 :(得分:2)
if (!$user->hasOpenSession()) {
$user->login();
} else {
$context->forwardToForbidden();
}
答案 1 :(得分:1)
使用IP地址和登录时间在登录时更新users表。清除ip on session timeout或用户是否注销。登录后检查此IP地址以确保其匹配。只检查$_SERVER['remote_addr']
,您不想查看x-forwareded-for,因为它可能是任何。
答案 2 :(得分:0)
在数据库中保留一个跟踪活动会话的字段。我们可以为您提供其他指示,但如果您没有更多的努力和信息,则无法提供代码。
答案 3 :(得分:0)
基于用户登录的IP地址的限制问题是,在某些情况下,它可能是来自同一台计算机/浏览器但具有不同IP地址的同一合法用户。
一种情况(我认为非常罕见)可能是一个HTTP代理池,它会使用不同的IP地址向服务器发出请求(即使实际的用户/浏览器/机器是相同的)。我认为我们可能会看到越来越多的另一种情况是移动设备的情况:移动设备可能会与不同的接入点和网络进行旅行和重新关联,因此从一个IP地址跳转到另一个IP地址。在这种情况下,您必须强制用户每次都重新登录。我不确定这个问题到目前为止有多大,但对于乘坐火车或类似车辆的人来说这可能是可能的(取决于他们如何访问他们的网络)。
我认为更好的解决方案可能包括在用户登录或注销时销毁该用户的任何其他会话/身份验证Cookie(如果他们忘记注销,可能会实施超时)。