Cookie и временные зоны

Vorgal

Новичок
Cookie и временные зоны

Думал, что setcookie выставляет куку по GMT, и браузеры думают также, и что временные зоны не влияют.. ан нет...

В общем, ставлю куку так
PHP:
setcookie("cook_name", "cook_value", time()+900, "/", "domen.com");
Но если часовой пояс у клиента не такой, как у сервера, то часто получается, что время истекания куки раньше, чем время установки :))... да даже, если просто время на клиенте отличается от времени на сервере на 15 минут, то работать уже не будет... Как же тут быть?
 

Vorgal

Новичок
нда.. тогда это проблема браузера что ли? но почему если время отличается у клиента и у браузера, то кука становится не видна?
 

Tandemich

Мерфи был оптимистом
нет это проблема перехода на летнее время
я сам решал недавно такую проблему
летнее время в россии на час опережает время нашей зоны по гринвичу
т.е. Иркутск +8 GMT а после перехода на летнее время +9
делай поправку на час
из-за этого куки меньше чем на час умирают не родившись
 

RomikChef

Guest
тут быть очень просто.
Если учесть, что время на клиенте может быть вообще неправильным, то не полагаться на время жизни куки в таких мелких промежутках.
а писать в куку время установки и контролировать самому в скрипте
 

RomikChef

Guest
о господи.
ну что тут объяснять?
если нету куки со временем, то создаешь куку, в которую пишешь текущее время!
если кука есть, то читаешь из нее время и сравниваешь с текущим ,и если оно больше нужного - то делаешь, что тебе надо, тодля ,чего тебе нудно было ограничение.
чего тебе тут не ясно?
 

Yurik

/dev/null
[..skipped..]
сорри, лажанулся. Я думал о атрибуте expires, а ты говорил о значении куки. Все, вопрос закрыт
 

Tandemich

Мерфи был оптимистом
пиши в значение куки серверное время, а время жизни куки не устанавливай, при следующем обращении к скрипту или странице сайта, читай куку, бери из нее значение и сравнивай с текущим серверным временем, разница покажет сколько секунд назад кука установлена
 

zip2003

Guest
А как установить время жизни куки скажем на год?
 

ys

отодвинутый новичок
zip2003

Посчитай cколько в году минут и поставить expire:
time()+кол-ов секунд в году
 
Сверху