сеанс / cookie выдает codeigniter 1.7.2 - PullRequest
0 голосов
/ 21 июля 2011

Привет, я заканчиваю проект, и у меня внезапно возникают проблемы с CI .Я использую версию 1.7.2 и использую класс сеанса CI для установки и получения данных сеанса.

Это происходит в Firefox и IE .Что еще более странно, так это приложение , которое корректно работает только в Chrome .Я проверил, что это происходит в более старых сборках приложения, которые ранее не имели проблем.

Вот мой конфиг:

Сеанс

$config['sess_cookie_name']        = 'ciprojectname';
$config['sess_expiration']        = 7200;
$config['sess_encrypt_cookie']    = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']        = 'sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent']    = TRUE;
$config['sess_time_to_update']     = 900; 

Cookies

$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']        = "/"; 

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

Любая помощь будет принята с благодарностью.

Обновление

Я никогда не описывал проблему подробно:

Когда я пытаюсь получить доступ к / controller / method, он перезагрузит текущую страницу и ничего не сделает.Иногда, если я добавлю / controller / method / <- слеш, это отобразит следующую страницу. </p>

1 Ответ

1 голос
/ 21 июля 2011

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

Сначала найдите проблему. Вы должны точно указать, где именно возникает проблема. Некоторые предложения:

  1. Проверьте журнал сервера, чтобы увидеть, как устанавливается дата. Это год 0000. Если все серверы имеют одинаковую версию PHP, то это может быть вашей проблемой. Это известная ошибка для некоторых версий PHP. https://bugs.php.net/bug.php?id=48276

  2. Если нет, получает ли База данных данные сеанса? Если да, то вы можете просматривать данные при перемещении со страницы на страницу, чтобы увидеть, сбрасывается ли сеанс. Если это так, то это, скорее всего, проблема с настройками сервера.

  3. Если нет, проверьте настройки безопасности вашего браузера. После перемещения с локального хоста может возникнуть проблема безопасности.

  4. Если нет, попробуйте изменить значение по умолчанию на $config[‘sess_expiration’] = 43200; Некоторые рекомендуют это сработать при возникновении проблемы с удалением сеансов.

  5. Если нет, замените sess_match_ip на False и попробуйте в Firefox и IE. Это связано с проблемами настройки браузера.

  6. Если проблема все еще не ясна, используйте тест сокращения - минимальный код, необходимый для воссоздания проблемы. Создайте отдельный контроллер с функцией «setsession» и «readsession». Попробуйте перезагрузить страницу в каждом браузере, чтобы увидеть, возобновится ли сеанс. Посмотрите журнал сервера и вашу базу данных. Если это сработает, то, возможно, виновником будут некоторые данные, отправляемые в сеансе, которые не нравятся проблемным браузерам.

Основной проблемой, скорее всего, является одно или несколько из следующих:

A. Недопустимый символ в данных сеанса

B. Настройки времени сервера

C. Настройки безопасности в IE и Firefox (если сервер изменился с localhost)

D. Проблема с ошибкой даты в PHP

Если у вас все еще есть проблемы, возможно, пришло время подумать об использовании собственной библиотеки сеансов: http://codeigniter.com/wiki/Native_session/

Кажется, эта проблема настолько распространена, что кто-то создал пользовательский класс для сеансов CI: http://www.philsbury.co.uk/blog/code-igniter-sessions, возможно, стоит попробовать.

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

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