Доброго дня.
Есть три
стула способа. По результату действия они равноценны.
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 (согласно докам, внутри дата всегда конвертируется).
Спасибо.