помните меня функциональность в codeigniter - PullRequest
2 голосов
/ 15 марта 2012

Я реализовал функцию запомнить меня как этот вопрос

Как создать флажок "запомнить меня" с использованием библиотеки сеансов Codeigniter?

первый ответ.Я создал cookie со случайным числовым кодом в качестве значения, и он был сохранен в БД (таблица пользователя).При входе в систему проверяется код БД со значением cookie. Он отлично работает на моем локальном сервере.Но на живом сервере, у которого есть поддомен URL, есть проблема. Также я проверил это с другим сервером с IP-адресом как URL.Там тоже не работает.В обоих случаях файл cookie создан, но не может прочитать файл cookie.Пожалуйста, помогите мне.

файл cookie установлен

$auto_login_hash_code = uniqid();
$domain = $_SERVER['SERVER_NAME'];
$cookie = array(
            'name' => 'rememberMe',
            'value' => $auto_login_hash_code,
            'expire' => 31536000,
            'domain' => $domain,
            'path' => '/'
);
$this->input->set_cookie($cookie);

и файл cookie

    if (get_cookie('rememberMe')) {
$hashcode = $this->CI->input->cookie('rememberMe');
$this->CI->load->model('loginmodel', '', true);
$username = $this->CI->loginmodel->get_username_by_hashcode($hashcode);//in this function setting session variables
    }

Спасибо заранее iijb

Ответы [ 2 ]

1 голос
/ 16 марта 2012

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

 $this->load->library('rememberme');  
            $cookie_user = $this->rememberme->verifyCookie();
            if ($cookie_user) 
            {
                $this->load->view('search_view');
            }

else
        {
            // If checkbox is checked it return true either false
            $checked = (isset($_POST['Checkbox1']))?true:false;  

            if($checked== true)

            {
                    //$this->load->view('tested');
                    $this->load->library('rememberme');  
                    $this->rememberme->setCookie($this->input->post('loginemil'));
                    //$this->rememberme->setCookie('set cookie here');

            }
else{
dont set anything
}
}
0 голосов
/ 18 декабря 2013

Также это можно сделать, отредактировав / расширив системную библиотеку сеансов.

Первое: В функции входа пользователя добавьте запомнить меня check-

    if($remember)
    {
        $data['new_expiration'] = 60*60*24*30;//30 days
        $this->session->sess_expiration = $data['new_expiration'];
    }
    $this->session->set_userdata($data);

Второе: Редактировать системную библиотеку сеансов [Я не уверен, будет ли работать расширение сеанса или нет] Перейти к этой строке в sess_read() метод

if (($session['last_activity'] + $this->sess_expiration) < $this->now)

Перед этой строкой добавить следующий код

if(isset($session['new_expiration'])){
   $this->sess_expiration = $session['new_expiration'];
}

Это прекрасно работает для меня.

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