У меня есть веб-приложение, в котором я могу выйти из системы.При выходе из системы сеанс нарушен, т.е.удалено с помощью sess_destroy () в system> library> Session.php.
, но всякий раз, когда пользователь выходит из системы, токен, соответствующий пользователю, удаляется, но вместо этого новый токен создается в таблице сеанса без каких-либо пользовательских данных.
Ниже приведен поток, через который он проходит, когда я снова перенаправляю пользователя на страницу входа, поток выглядит следующим образом:
logout -> __construct () на странице входа -> __construct () в CI_Controller -> initialize() в Loader.php -> _ci_autoloader () в Loader.php -> $ autoload ['library'] в autoload.php -> __construct () в Session.php ->
if ( ! $this->sess_read()) {
$this->sess_create();
} else {
$this->sess_update();
}
, затем вsess_read (),
$session = $this->CI->input->cookie($this->sess_cookie_name);
// No cookie? Goodbye cruel world!...
if ($session === FALSE)
{
log_message('debug', 'A session cookie was not found.');
return FALSE;
}
, следовательно, другой он идет в sess_create () и создает другой сеанс,
$this->userdata = array(
'session_id' => md5(uniqid($sessid, TRUE)),
'ip_address' => $this->CI->input->ip_address(),
'user_agent' => substr($this->CI->input->user_agent(), 0, 120),
'last_activity' => $this->now,
'user_data' => ''
);
, когда сеансы создаются, он назначается cookie, когдасеанс уничтожен, cookie удален.но как только новая страница загружается и вместе с ней загружается библиотека сеансов, она вставляет новую строку в таблицу сеансов.
, которая увеличивает размер базы данных, я был бы благодарен сообществу за предложение по этому вопросу.также кто-нибудь еще сталкивается с той же проблемой?
ps Я использую CI2 * 1020 *
сессия Destry,
function sess_destroy()
{
// Kill the session DB row
if ($this->sess_use_database === TRUE && isset($this->userdata['session_id']))
{
$this->CI->db->where('session_id', $this->userdata['session_id']);
$this->CI->db->delete($this->sess_table_name);
}
// Kill the cookie
setcookie(
$this->sess_cookie_name,
addslashes(serialize(array())),
($this->now - 31500000),
$this->cookie_path,
$this->cookie_domain,
0
);
// Kill session data
$this->userdata = array();
}