#php #strtotime #setcookie
#php #strtotime #setcookie
Вопрос:
Сегодня, 18.05.2011, если я сделаю
echo date("H:i m/d/Y", strtotime("tomorrow"));
я получаю 00:00 19.05.2011, как и должно быть, но если я использую ту же функцию в setcookie, например:
setcookie("wls_yesterday_review", 'completed', strtotime('tomorrow'),'/','myhost.com');
Срок действия моего файла cookie истечет 18.05.2011 в 09:00 вечера
Я не уверен, что я делаю не так, но я тестировал разные способы и в разное время, и я всегда получаю один и тот же результат
я хочу, чтобы срок действия cookie истек в 00: 00 следующего дня. Если сегодня 05/18 10:00 утра, я хочу, чтобы срок его действия истек 19.05 00:00
Спасибо, ребята
Комментарии:
1. Временная метка указана в UTC. Как вы проверяете время истечения срока действия cookie? Является ли ваш местный часовой пояс UTC-3?
2. Я проверил это с помощью плагина для chrome или Firefox, сейчас не могу вспомнить. Да, im utc -3. Я закончил использовать javascript для решения этой проблемы
Ответ №1:
setcookie("TestCookie", $value, time() 3600); /* expire in 1 hour */
setcookie("TestCookie", $value, time() 3600*24); /* expire in 1 day */
Комментарии:
1. Это не объясняет разницу в значениях, отмеченных в вопросе.
2. Я знаю это, но я хочу, чтобы срок действия cookie истек в 00: 00 следующего дня. Если сегодня 05/18 10:00 утра, я хочу, чтобы срок его действия истек 19.05 00:00
Ответ №2:
функция strtotime() возвращает временную метку в случае успеха, но вам нужно числовое значение, возможно, целое число, в функции setcookie(). Вы должны вычислить секунды до конца сегодняшнего дня и добавить их в time() 3600*24
(time() 3600*24) (mktime(24,0,0)-time());
где mktime(24,0,0)-time()
— количество секунд до конца дня.
setcookie("TestCookie", $value, (time() 3600*24) (mktime(24,0,0)-time()));
Надеюсь, это поможет.
Комментарии:
1. Я понимаю вашу функцию, но я все еще получаю день истечения срока действия: четверг, 19 мая 2011, 9:00: 11 вечера