我如何检查用户是否从同一本地网络上的另一台计算机登录了php


how can i check if a user has logged in from another computer on the same local network with php?

我试图建立一个身份验证脚本,我试图得到这一个方法在一起。

我想知道用户是否从他们网络上的另一台计算机登录到他们的帐户。

例如,如果Sally从计算机192.168.0.101登录,那么Bob从他的计算机192.168.0.103登录,我希望Sally注销。

我已经可以通过将用户的系统规格与存储的系统规格相匹配来检查用户是否从另一台计算机登录。例如,检查操作系统、os版本等。

,但如果在同一网络上有两台相同的计算机,这很容易被欺骗。我的脚本不会知道其中的区别。

是否有一种方法可以检测MAC地址或私有IP或通过PHP的效果?

嗯,如果客户端运行的是windows,您可以使用java-script和activex一起获得计算机名称。这在整个域内是唯一的。请确保它可以运行,因为安全。

<HTML>
<HEAD>
<SCRIPT>
function PROCRun() {
   var shell = new ActiveXObject("WScript.Shell");
   var user= shell.ExpandEnvironmentStrings("%UserName%");
   var comp= shell.ExpandEnvironmentStrings("%ComputerName%")
   document.getElementById('userInfo').innerHTML = ('user: ' + user + ' comp: ' + comp);
}
</SCRIPT>
</HEAD>
<BODY ONLOAD='PROCRun();'>
<div id=userInfo>
</div>
</BODY>
</HTML>

我认为你不能检测MAC地址或私有IP的PHP

但是你可以在数据库中创建一个包含当前登录用户

的表

每次用户登录时检查它是否存在于在线表中。

希望这对你有帮助

如果你的用户不阻止cookie,这里有一个解决方案。

把所有用户放到一个你不想同时登录的组中,例如:"网络"。登录成功后,清除以前分配给组的所有登录认证数据,并对新用户进行认证。

场景:Sally登录了,并被分配到"network"组。过了一会儿,Bob登录了,也是在"network"组中。但是等等,网络组中已经有活跃用户了。删除

之前的session/auth数据