Как сохранить данные сессии, используя Codeigniter и Tank Auth - PullRequest
5 голосов
/ 17 января 2012

Я использую Codeigniter и Tank Auth для сайта электронной коммерции.Я обнаружил, что если клиент помещает товары в корзину (используя встроенный в корзину класс Codeigniter), а затем регистрирует на сайте сеанс, потерянный вместе с его корзиной (я предполагаю, что вместо этого он генерирует новый сеанс по какой-то причинео том же сеансе).

Кто-нибудь сталкивался с этой проблемой раньше?и есть ли простое решение, которое я упустил.

Спасибо

1 Ответ

3 голосов
/ 24 января 2012

Что касается самого последнего кода, единственное место, где удаляется сеанс дыры, - это функция logout(), Tank_auth.php Строка 118: https://github.com/ilkon/Tank-Auth/blob/master/application/libraries/Tank_auth.php#L118

В примере использования Tank Auth используются logout() в activate() и reset_email() - проверьте ваш код на наличие этих методов. Вы также можете изменить функцию выхода из Tank Auth на что-то вроде этого:

function logout($keep_session = false)
{
    $this->delete_autologin();

    // See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line
    $this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => ''));

    if(!$keep_session)
        $this->ci->session->sess_destroy();
}

... и использовать его так: $ this-> tankauth-> logout (true);

...