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

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

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
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, т.е. если число отрицательное, значит время хранения просрочено, поэтому значение будет удалено.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы