2016-02-05 119 views
1

在使用我的托管服务提供商的cPanel时,我切换到另一个网络的互联网连接,当我切换连接后单击我的cPanel上的链接时,出现以下消息:检测登录用户的IP地址更改

您的IP地址已更改。请重新登录。

我想知道如何检测这样的IP地址更改,以提供这样的安全在我的网站用PHP!

+0

山与“安全”的改善,反而会阻碍使用IPv6时,他们换到一个不同的临时IP地址 – Ferrybig

+0

好一点的用户,感谢您指出 – KAD

回答

4

这很简单...登录时,您创建了$_SESSION对象...并只保留ip在该对象$_SESSION['user_ip'],并在身份验证/验证功能(您必须有一个),将该ip与当前$_SERVER['REMOTE_ADDR'])。

如果您不想在没有用户交互的情况下创建它,则需要定期发出一些ajax请求。

PS。我讨厌检查IP的门户。由于大多数供应商(所有GSM供应商,法国电信等)拥有每隔几小时(最多24小时)都会发生变化的动态IPS,因此您无法保持登录状态。

+0

是的,你是对的,也可以有一个缺点...我想到了这样的解决方案,我想知道它是否是最佳的(最佳实践)! – KAD

2

您可以通过以下获得浏览器的IP地址在PHP中:

$ip = $_SERVER['REMOTE_ADDR'] 

如果您存储在用户的会话,您就可以验证自己的IP并没有改变。如果它改变了......用一条警告信息注销它们。

0

您可以使用

$ip = $_SERVER['REMOTE_ADDR'] 

那么您可以在一个if语句抛出。像这样,

if($ip == $_SESSION['username']) { 
echo "User logged in"; 
} else die("IP address has changed, try again later");