Сессия платформы зенда истекает преждевременно

Иначе я наткнулся на, только для полноты: добавьте некоторую разметку HTML, которая не изменяет вывод между * и/.

  /**
   * *<b/>/
   */

По сравнению с решением для Escape HTML, это кажется чем-то вроде ужасного взлома, но это также приводит к правильному результату в выводе HTML.

13
задан BartoszKP 24 January 2014 в 01:53
поделиться

4 ответа

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

3
ответ дан 1 December 2019 в 23:47
поделиться

Существуют ли на сервере другие приложения PHP?

Предполагая, что вы используете стандартный файловый обработчик сеансов, PHP будет хранить все сеансы в одном месте (обычно / tmp).

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

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

Попробуйте создать каталог, например / tmp / myAppPhpSessions (или любой другой), и добавить:

ini_set('session.save_path','/tmp/myAppPhpSessions');
ini_set('session.gc_maxlifetime', 864000);

в самом верху вашего файла начальной загрузки.

Убедитесь, что session.auto_start выключен в php.ini

0
ответ дан 1 December 2019 в 23:47
поделиться

Я думаю, вы используете ZF 1.8 или выше, так что вы можете поместить в файл config.ini

resources.session.save_path = APPLICATION_PATH "/../data/session" resources.session.remember_me_seconds = 864000

, и эти настройки будут загружены автоматически снова только в ZF 1.8 или выше, если вам не нужно было загружать эти конфигурации вручную надеюсь, это вам поможет :)

1
ответ дан 1 December 2019 в 23:47
поделиться

Попробуйте позвонить, запомни меня перед началом сеанса:

Zend_Session::rememberMe(864000);
Zend_Session::start();

В противном случае, я полагаю, будет использоваться значение по умолчанию Remember_me_seconds . См. 49.4.4. RememberMe (integer $ seconds)

Кроме того, кто-нибудь знает, как я могу сделать это так, что сеанс никогда не истекает? Я пробовал установить второй на 0 и -1, но это вызывает ошибку.

Не думаю, что это возможно. Сеанс контролируется тем, существует ли cookie на компьютере пользователя. Эти файлы cookie могут быть удалены даже пользователями, если они очистят свой кеш. Я думаю, что лучшее, что вы можете сделать, это установить очень большое число. Скажем, 12 месяцев.

1
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: