这是我使用初始化我会话代码:session_regenerate_id(真)复位会话变量
class session {
public static function init() {
session_start();
session_regenerate_id(true);
if (self::get('validSession') !== true) {
//start
session_unset();
session_destroy();
session_start();
self::set('validSession', true);
//end
}
}
public static function set($key, $value) {
$_SESSION[$key] = $value;
}
public static function get($key) {
if (isset($_SESSION[$key]))
return $_SESSION[$key];
else
return false;
}
}
的问题是,//start
和//end
之间的部分被称为所有的时间,这将导致旧的会话被毁坏。当我删除session_regenerate_id(true);
,一切似乎都做工精细,除了会话ID没有变化(这是一个很大的安全漏洞)
你知道丢弃ID *和* DATA是'session_regenerate_id(true)'的目的吗? – mario
http://www.php.net/manual/en/function.session-regenerate-id.php'“session_regenerate_id()会用新的ID替换当前的会话ID,并保留当前的会话信息。”' – Jonan
http://www.php.net/manual/en/function.session-regenerate-id.php ** delete_old_session **是否删除旧的关联会话文件。 – mario