2010-09-03 3 views
1

Как указано выше: возможно ли регенерировать сеансы Code Igniter вручную? Я ищу что-то похожее на session_regenerate_id в сеансах PHP, так что я мог бы называть его вручную, когда пользователь прошел эскалацию привилегий.Возможно ли регенерировать сеансы Code Igniter вручную?

Спасибо,

Lemiant

ответ

8

CI автоматически восстанавливает идентификатор сеанса, каждые х секунд, которые вы можете установить в вашей конфигурации.

Вы можете создать новую функцию в session.php так же, как sess_update(), но со следующими удалены из верхней & функция переименована в regenerate_id().

// We only update the session every five minutes by default 
if (($this->userdata['last_activity']+$this->sess_time_to_update) >= $this->now) 
{ 
return; 
} 

Это позволит восстановить идентификатор сеанса, обновить users_activity и сохранить данные пользователей. Просто назовите его $ this-> session-> restoreate_id();

+0

Благодарим за отзыв. – lemiant

1

Я знаю, что это старый пост, но я наткнулся на него, чтобы другие могли тоже.

Вы также можете сделать следующее, так что вам не придется взломать основные файлы на всех (что делает CodeIgniter более легко модифицируется с будущими выпусками):

//Setting this to 0 forces the sess_update method to regenerate on the next call 
$this->session->sess_time_to_update=0; 
//Call the sess_update method to actually regenerate the session ID 
$this->session->sess_update(); 

Кредит на оригинальный ответ на меня ведет вниз этот путь, хотя, спасибо.

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