if (isset($_SESSION['last_ip']) === false) {
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
上面的代碼意味着,如果會話「last_ip」尚未創建,它會被創建和用戶當前的IP的存儲值。
if ($_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
上面的代碼表明,如果「last_ip」的會話值不等於您當前的IP,它會釋放所有會話變量(session_unset)和破壞註冊到會話(session_destroy)的所有數據。
讓我們來描述真實場景。
例如我首先訪問您的網站 代碼塊存儲我當前的IP。現在我的互聯網斷開連接 ,我重新連接到我的isp,它啓用了dhcp並給了我新的ip給 。因此,如果再次訪問您的網站,第二塊代碼會檢查我是否擁有不同的IP,因此它會將我註銷。
也編輯你的第二塊代碼,以便如果會話「last_ip」尚未創建,它不會拋出PHP通知。
if (isset($_SESSION['last_ip']) && $_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
如果會話中刪除,將用戶能夠從新的IP獲取新的會話,如果他們登錄 – 2013-04-09 10:05:40
是的,他們會的。 – Halcyon 2013-04-09 10:05:58
我有添加session_regenerate_id(true);那麼這兩個如何一起工作呢? – 2013-04-09 10:07:45