2012-04-19 2 views
8

Мне нужно установить cookie, срок действия которого истекает через 1 час, используя функцию PHP setcookie. Часовой пояс на моем сервере установлен на GMT. Как установить дату истечения срока действия cookie, чтобы заставить ее работать в разных часовых поясах браузера?Что такое часовой пояс cookie, хранящийся на стороне клиента?

+1

@DonCallisto у него, возможно, нет ответа, который ему нужен по большинству его вопросов. – noob

+0

Спасибо, ребята, оба комментария полезны. На самом деле у меня нет ответов, которые мне нужны, но хорошо помнить об этом. – Karol

+1

Вы можете найти ['$ cookie-> setExpiryTime ($ expiryTime)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L80) или ['$ cookie-> setMaxAge ($ maxAge) '] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L92) полезно, как показано в [этой автономной библиотеке] (https://github.com/delight-im/PHP-Cookie). – caw

ответ

7

Рядом, как я могу скажите, что не имеет значения, каково время клиента. PHP устанавливает время истечения срока действия на основе временного кода unix. Любые изменения в это время должны находиться на сервере.

Вот отрывок из PHP manual для SetCookie():

истекает:

Время печенья истекает. Это временная метка Unix, так что это количество секунд с эпохи. Другими словами, вы, скорее всего, найдете с функцией time() плюс количество секунд до , которое вы хотите, чтобы оно истекло. Или вы можете использовать mktime(). time() + 60 * 60 * 24 * 30 истечет через 30 дней. Если установлено значение 0 или опущено, cookie истечет в конце сеанса (когда браузер закрывается).

0

Вы можете попробовать с getTimeZone и setTimeZone Посмотрите here

Также strtotime, кажется, отлично подходит для retrive правильный формат даты-времени, то вы можете использовать gmdate для новообращенного это

0

Ну, предположим, вы используете набор файлов cookie.

Может быть, я ошибаюсь, но я думаю:

Вы обеспечиваете истекают параметр как метку времени Unix, и вычислить метку времени, как «в час», так что вы хотите печенье истекает через час. Поэтому не нужно учитывать часовой пояс, поскольку временная метка unix однозначна.

Тогда задача браузера перевести метку времени UNIX в дате на основе настройки баузеров (локали, язык и так далее)

5

функции РНР SetCookie() принимает целое число, соответствующего значение временной метки Unix. Если ваш файл cookie должен иметь 1 час времени для жизни, вы можете просто использовать time() + 3600 для этого значения. Затем PHP создаст файл cookie с истечением времени, например «expires = Fri, 3 Aug 2001 20:47:11 UTC». Он находится в UTC (GMT), поэтому вам не нужно беспокоиться о часовом поясе клиентского браузера.

Смежные вопросы