Задать вопрос

Какой вариант удаления кук используете вы, и почему?

Доброго дня.
Есть три стула способа. По результату действия они равноценны.

setcookie('name', 'value', time() + 3600, '/'); // установили куку для всего сайта

// удаляем
// согласно докам, если значение установить в false,
// а остальные параметры в точности с предыдущим вызовом, 
//кука будет удалена с клиентской машины
setcookie('name', false, time() + 3600, '/'); 

// в качестве значения ставим пустую строку
// (или что угодно, но обычно обнуляем значение),
// и вручную переводим срок действия куки в прошлое
setcookie('name', '', time() - 3600, '/'); 

// просто устанавливаем -1 в качестве срока действия. 
// Я так понимаю, что в текущем контексте -1 равнозначно time() - 1? 
// в доках написано, что expire реагирует установкой времени истечения до истечения сессии
//  только на 0, false или null
setcookie('name', '', -1, '/');


Есть ли фундаментальная разница, подводные камни? Согласно докам, внутренне куке присваивается значение 'deleted', а срок действия переносится на год в прошлое. Стало быть, если вручную присваивать ей deleted и переносить на год в прошлое, мы избежим преобразований внутри php? Однако, будет ли такое явное преобразование быстрее, чем нативное на уровне виртуальной машины?

UPD. > Я так понимаю, что в текущем контексте -1 равнозначно time() - 1?
Это было неверное предположение, поскольку параметр принимает секунды до эпохи Unix, -1 - одна секунда до времени Unix. Что внутренне конвертируется машиной в 01-Thu-1970 02:59:59 (согласно докам, внутри дата всегда конвертируется).

Спасибо.
  • Вопрос задан
  • 184 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
alsopub
@alsopub
Все три способа лично у меня выдали следующее:
X-Powered-By: PHP/5.2.12
Set-Cookie: name1=deleted; expires=Mon, 25-May-2015 11:54:33 GMT; path=/
Set-Cookie: name2=deleted; expires=Mon, 25-May-2015 11:54:33 GMT; path=/
Set-Cookie: name3=deleted; expires=Mon, 25-May-2015 11:54:33 GMT; path=/

То есть совершенно одинаковый вывод.

Странно что вы хотите тут что-то оптимизировать по скорости, разве что если вычисление даты и времени производится по звездам и солнечным часам.
Ответ написан
@entermix
setcookie('name', '', -1, '/'); // просто устанавливаем false или -1 в качестве срока действия. Я так понимаю, что -1 равнозначно time() - 1?

-1 это время хранения cookies, т.е. если число отрицательное, значит время хранения просрочено, поэтому значение будет удалено.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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