2016-02-05 118 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");