2012-06-02 9 views
0

Я спасаю выбор языка пользователя в сессии, как это:Как сохранить язык пользователя

$this->session->set_userdata('language', $language); 

И тогда я устанавливаю язык в зависимости от данных сеанса (и делает английский язык, как язык по умолчанию).

if (!$language = $CI->session->userdata('language')) 
{ 
    $language = "english"; 
} 

$CI->config->set_item('language', $language); 

Работает хорошо, но язык, на котором пользователь работает, длится всего около ок. 2 часа - тогда пользователь должен снова выбрать язык. Поэтому вопрос заключается в том, как продлить время сеанса до истечения срока действия (или заставить его истекать только в том случае, если пользователь очистит данные браузера). Я не могу сохранить выбор пользователя в базе данных, потому что мне нужно также обрабатывать гостей на моем сайте.

Я знаю, что могу продлить время сеанса в конфигурации CI, но я просто хочу, чтобы это произошло только в случае выбора языка, а не для сеансов учетных записей.

ответ

1

Это тот же сеанс, и он либо истекает, либо нет. Вы не можете истечь срока действия аутентификации, но не выбирать язык. CI не упрощает управление несколькими сеансами, что позволило бы хранить аутентификацию в одном короткометражном сеансе и предпочтениях языка в более долговечном режиме. Как бы то ни было, проще было бы просто сохранить языковые предпочтения непосредственно в файле cookie; просто имейте в виду, что вам придется устанавливать cookie снова для каждого запроса, иначе он не будет автоматически обновляться после действия пользователя и истечет, даже если пользователь активно использует этот сайт.

+0

Я тоже думал о печеньях, но не был уверен, что это хорошо для этой цели. Кажется, это единственный путь сейчас. – Cyclone

+0

Ну, вы также можете реализовать всю вторичную сессию самостоятельно, но мне кажется, что это слишком много. Печенье хорошо подходит для этой цели. – lanzz

+0

Хорошо, спасибо за вашу помощь :-). – Cyclone

Смежные вопросы