Помощь с временем окончания сеанса Codeigniter - PullRequest
0 голосов
/ 16 ноября 2010

Я хотел бы динамически установить время истечения сеанса в Codeigniter.Я загружаю сессионный класс.У меня есть вид, который содержит флажок для пользователей, чтобы щелкнуть (помните меня).Прямо сейчас, если они установят флажок или нет, срок действия останется прежним: /


    // Config.php
    $config['sess_expiration']      = 7200;

    // Controller
    if ($this->input->post('remember_me') == 'TRUE')
    {
    $this->session->remember_me();
    }

    $newdata = array(
    'failed_login'  => 0,
    'user_name'  => $this->input->post('user_name'),
        'logged_in' => TRUE
    );

    $this->session->set_userdata($newdata);

    // MY_Session.php
    class MY_Session extends CI_Session {

    function remember_me()
    {
        $this->sess_expiration = 172800;
    }

    }

Ответы [ 3 ]

3 голосов
/ 16 ноября 2010

Если вам нужно реализовать функцию «Запомнить меня» - значит, вы запустили ее неправильно.

Вам нужно создать еще одну таблицу базы данных с полями user_id | token.

Затем, после того как пользователь вошел в систему (с установленным флажком «запомнить меня») - сгенерируйте случайный токен и вставьте новую строку с текущим user_id и этим токеном. Также - установите remember cookie с тем же значением токена.

Теперь, если пользователь заходит на ваш сайт, не прошедший проверку подлинности и имеющий какой-либо токен, вы всегда можете найти этот токен и аутентифицировать пользователя (каждый токен уникален и строго связан с конкретным user_id).

0 голосов
/ 19 июля 2013
$data = array(
    'username' => $this->input->post('username'),
    'ADMIN_is_logged_in' => true
);

$this->session->sess_expiration = '14400';// expires in 4 hours
$this->session->set_userdata($data);// set session
0 голосов
/ 25 января 2013

Вот мое решение, с которым я играл.

Вы можете редактировать функцию внутри domain.com/system/libraries/Session.php

.
function _set_cookie($cookie_data = NULL)

Комментарий из

// $expire = ($this->sess_expire_on_close === TRUE) ? 0 : $this->sess_expiration + time();

Затем Добавить

    if(isset($this->userdata['rememberme'])){
        // If they want to stay connected
        if( $this->userdata['rememberme'] == 1) {
            $expire = 0;
        } else {
            $expire = time() + $this->sess_expiration;
        }
    } else {
        $expire = time() + $this->sess_expiration;
    }

Пожалуйста, дайте мне знать, если это поможет, или измените мой код, чтобы выручить меня. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...