我目前正在开发一个简单的身份验证系统,而且我正在使用PHP Sessions。
在我的每个页面的标题中,我有一些PHP做了3件事:
如果会话上次使用的时间超过30分钟,则会被销毁
如果会话上次使用时间超过5分钟,则会重新生成
如果ips在同一会话中不相同,则会被销毁
然而,它似乎并不适合IP。
当我使用isset检查它是否已初始化时,它给出了错误Undefined Index
。
session_start();
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// last request was more than 30 minutes ago
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
if (!isset($_SESSION['CREATED'])) {
$_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 900) {
// session started more than 30 minutes ago
session_regenerate_id(true); // change session ID for the current session and invalidate old session ID
$_SESSION['CREATED'] = time(); // update creation time
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
//GET CHECK IP
if (!isset($_SESSION['ADDR'])) {
if ($_SESSION['ADDR'] != get_client_ip()){
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
}else {
$_SESSION['ADDR'] = get_client_ip();
}
echo "<pre>".print_r($_SESSION)."</pre>";
答案 0 :(得分:1)
您试图说明$_SESSION['ADDR']
是否设置了不。删除否定运算符!
。
if (isset($_SESSION['ADDR'])) {
// code here
}