Класс сеанса CodeIgniter, не работающий в Chrome

Я создал систему входа в проект codeigniter, которая отлично работает в Firefox, но не работает в Chrome, извлекает данные и устанавливает для сеанса, но когда этот код перенаправляет управление на admin / dashboard, мы снова проверяем данные сеанса. Если данные сеанса не существуют, тогда код перенаправляет пользователя на повторный вход ………… Мой код ниже, и я не знаю, что не так с этим сеансом / cookies в codeigniter.?

$data = array( 'user_id' => $user->id, 'name' => $user->name, 'user_type' => $user->type, 'username' => $user->username, 'is_logged_in' => true ); $this->session->set_userdata($data); //echo "user ".$this->session->userdata("username"); exit; redirect("admin/dashboard", "location"); 

У меня есть поиск много, но никто не работает в этой ситуации, как изменение « cookie_domain » в файле конфигурации, но ничего не произошло ….

Я также столкнулся с этой ситуацией и исправил ее, увеличив срок действия сессии до одного дня.

ОБНОВИТЬ

Почему это работает, продлевая срок действия сеанса?

Эта проблема возникает из-за различий между часовыми поясами пользователя и местоположением веб-сервера, например, я живу в Пакистане, что на 10 часов превышает часовой пояс США, а мой сервер находится в США. Я запрашиваю эту страницу в 17/10/2012 14:00 во время Пакистана. Время в США – 17/10/2012 4:00, так как веб-сервер находится в США, а срок действия сеанса установлен в 2 часа, и cookie, отправленный сервером, истекает в 17/10/2012 6:00. Теперь браузер взаимодействует с вашим местным ПК, и он получает время 17/10/2012 14:00, поэтому он удаляет файл cookie или ваш файл cookie, всегда обновляемый по вашему запросу. Поэтому лучше всего установить истечение сеанса до 1 дня, потому что самая большая разница в часовом поясе составляет 17 часов между новой Зеландой и США (я не уверен, что разница может быть неправильной). Таким образом, ваш файл cookie, по крайней мере, останется в живых в течение 7 часов

просто чтобы добавить свой опыт, я использую Codeigniter 2.1.4,

Проблема: сеансы в Chrome продолжались не более пары минут или выходили из системы при выполнении запросов ajax. Я попробовал несколько подходов: (изменено имя sess_cookie_name, более длительное время sess_expiration).

Я только что обнаружил, что параметр sess_encrypt_cookie для FALSE исправил проблему выхода из хрома.

$config['sess_encrypt_cookie'] = FALSE;

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

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

Надеюсь, поможет!

Я изменил параметр sess_match_useragent на false в config.php

 $config['sess_match_useragent'] = FALSE; 

И проблема с Google Chrome была решена.

Вы проверяли, что вы храните сеанс в течение более длительного времени, и он не будет уничтожен раньше. Возможно, это связано с настройками хрома для принятия данных сеанса и файлов cookie, поскольку в кодеригенере нет такого кода, который будет работать в Firefox, и это не будет работать на chrome. Также убедитесь, что вы загружаете свою «сессионную» библиотеку.

идеальный ответ Шайана Хусайни. У меня была та же проблема, и я решил ее, изменив

 $config['sess_expiration'] = 8600; 

который составляет секунды в 24 часа, это были секунды за 2 часа

 $config['sess_expiration'] = 7200; 

Я живу в Пакистане и использую сервер США, так что эта проблема всплывает.

Спасибо, Шаян, это была большая помощь.

Я столкнулся с той же проблемой и, наконец, смог ее решить, обновив таблицу базы данных сеансов структурой sql из последней версии Codeigniter в это время, версия 2.1.4.

  CREATE TABLE IF NOT EXISTS `ci_sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(45) DEFAULT '0' NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id), KEY `last_activity_idx` (`last_activity`) ); 

Также обратите внимание, что если у вас есть несколько баз данных, настроенных в config / database.php, таблица сеансов использует таблицу сеансов базы данных конфигурации по умолчанию.

Решенный, CodeIgniter имеет некоторые проблемы, если указанный домен для файлов cookie является localhost, я установил поддельный домен с структурой имени реального домена в файл hosts, и он работает.

Я знаю, что это поздний ответ, но если вы ищете хорошее решение здесь: используйте этот код как код выхода из системы:

 $this->session->sess_destroy(); 

Это обеспечит удаление сеанса «ci_session», что является основной причиной, по которой вы не можете сохранить новый сеанс, надеясь, что это поможет

Interesting Posts
Давайте будем гением компьютера.