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