Изменение конфигурации сеанса CodeIgniter на основе выбора пользователя - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь установить флажок "запомнить меня" в моей форме входа в систему.Глядя на документы, я вижу, что я могу изменить настройки конфигурации по умолчанию:

$config['sess_expiration'] = 10; // I set it to 10 seconds for testing

Я пытаюсь продлить это время на неопределенное время или, по крайней мере, намного дольше, если пользователь установит флажок,Я изменяю значение sess_expiration, когда ввод передается через POST, и я вижу, что значение изменяется, но оно все еще истекает после времени по умолчанию, а не после нового времени.

if ( $this->input->post('rememberMe') )
{
    $this->config->set_item('sess_expiration', 0);
}

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

$this->session->set_userdata(
    array('user' => array(
        'userId' => $user->userId,
        'userName' => $user->userName,
        'userLevel' => $user->userLevel,
        'userEmail' => $user->userEmail,
        'userCreated' => $user->userCreated,
        'userUpdated' => $user->userUpdated,
        'userStatus' => $user->userStatus
    ),
    'loggedIn' => $user->userId
));

Я делаю это неправильно?Я трачу слишком много времени на эту проблему, поэтому я продолжу и надеюсь, что кто-то здесь может указать на то, что я делаю плохо.

Спасибо!

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Задумывались ли вы о настройке куки для этого?Я думаю, вам лучше хранить данные у пользователя, поэтому каждый раз, когда они возвращают свои данные cookie, можно искать определенную вами переменную.

if ( $this->input->post('rememberMe') )   
{   
    $this->input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure);
}  

Если вы не хотите использовать переменныевместо этого вы можете передать массив с информацией.После того, как вы это сделаете, выберите имя для файла cookie и задайте имя пользователя в значении $, или как хотите, а затем в контроллере для своей страницы входа найдите файл cookie:

if($this->input->get_cookie('cookie_name'))
{
   //set the username and password for your form
}
else
{
  //No cookie was found. Don't set anything.
}

У меня сегодня нет времени, чтобы проверить это, но это должно сработать для вас.

0 голосов
/ 13 декабря 2011

Сделайте это:

// Change the config setting
$this->config->set_item('sess_expiration',0);

// Force the Session class to recapture global settings by calling it's constructor
$this->session->CI_Session()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...