這是我使用初始化我會話代碼: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