【发布时间】:2013-12-07 21:04:27
【问题描述】:
今天我了解了 COOKIES 和 SESSION 的区别。
现在我想创建一个登录。主要思想如下:
$ip = $_SERVER['REMOTE_ADDR'];
$session_ip = $_SESSION['PHPSESSID']['ip'];
if ( (session_id() === $_COOKIE['PHPSESSID']) && ($ip === $session_id) ){
return (true);
} else {
return (false);
}
我想检查 IP 是否与用户上次登录时的 IP 相同。
因此,当 SESION 启动时,它将在客户端站点上创建 $_COOKIE['PHPSESSID']。服务器会将 SESSION 存储在服务器上的某个位置,并且可以使用 session_id() 识别 SESSION
基本上应该和这部分说的一样:
session_id() === $_COOKIE['PHPSESSID']
现在,probem 是将 IP 保存到该 SESSION 的部分。
如何访问此 SESSION 以像处理数组一样处理它?通常我会这样做:
$ip = $_SERVER['REMOTE_ADDR'];
$_COOKIE['PHPSESSID']['ip'] = $ip;
所以我只是将 IP 保存到客户端站点$_COOKIE['PHPSESSID'],但是来自服务器站点的 SESSION 呢?我怎样才能在那里存储IP?
非常感谢。
【问题讨论】:
-
你的意思是
$ip === $session_ip而不是$ip === $session_id? -
请记住,有些人的 IP 地址会随着每个请求而变化,例如,如果他们在企业或大学等大型网络中。 IP 锁定可能是个坏主意。
-
它只是为了确保没有滥用。