Получить печенье, срок действия которого не истекает, пока страница открыта, но последний 1 час, когда она закрыта - PullRequest
2 голосов
/ 16 февраля 2010

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

Кто-нибудь может подсказать, как я могу установить время истечения cookie для продолжительности сеанса?

Для справки, это код, который я использую для установки файла cookie (который я забрал из другого нашего проекта и который, в свою очередь, мог быть удален с этого сайта!

function setCookie(value)
{
    var today = new Date();
    today.setTime(today.getTime());
    var expires = 30 * 1000 * 60;

    var c_name = 'CompareFundIds';
    var exdate = new Date(today.getTime() + (expires));
    document.cookie = c_name + "=" + value + ";expires=" + exdate.toGMTString();
}

Ответы [ 4 ]

2 голосов
/ 16 февраля 2010

Ваш заголовок и текст, кажется, устанавливают два разных требования:

  1. cookie должны оставаться в силе, пока браузер не закроется, а затем исчезнет
  2. cookie должны оставаться в силе, пока браузер не закроется, затем оставаться в силе еще час, а затем исчезнуть

1) будет работать, если вы вообще не установили значение «expires» для cookie:

// Set cookie until browser is closed
document.cookie = c_name + "=" + value;

2) будет работать, если вы позволите функции setCookie запускаться повторно, пока страница открыта, скажем каждую минуту:

// Set cookie every minute
var value = ...;
window.setInterval(function () {
    setCookie(value);
}, 60 * 1000);

Когда браузер закрыт, cookie никогда не будет старше 1 минуты и, следовательно, будет действовать еще один час.

1 голос
/ 16 февраля 2010

Кто-нибудь может подсказать, как я могу установить время истечения cookie для продолжительности сеанса?

Насколько я знаю, это невозможно.

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

0 голосов
/ 16 февраля 2010

Разве это невозможно сделать, используя события onUnload / onClose javascript?В идеале, вы могли бы установить некоторое поведение при загрузке страницы, а затем другое при загрузке страницы.Конечно, onClose поддерживается не всеми браузерами, но я вижу, что jQuery поддерживает метод onunload.

Ссылки:

0 голосов
/ 16 февраля 2010

Возможно, вы могли бы использовать Ajax для вызова PHP-файла, чтобы сохранить сеансы на стороне сервера?

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