как удалить все файлы cookie моего сайта в php

Мне интересно, могу ли я удалить файлы cookie моего веб-сайта, когда пользователь нажимает на выход из системы, потому что я использовал это как функцию для удаления файлов cookie, но он не работает должным образом:

setcookie("user",false); 

Есть ли способ удалить файлы cookie одного домена в PHP?

PHP setcookie ()

Взятый с этой страницы, это отключит все файлы cookie для вашего домена:

 // unset cookies if (isset($_SERVER['HTTP_COOKIE'])) { $cookies = explode(';', $_SERVER['HTTP_COOKIE']); foreach($cookies as $cookie) { $parts = explode('=', $cookie); $name = trim($parts[0]); setcookie($name, '', time()-1000); setcookie($name, '', time()-1000, '/'); } } 

http://www.php.net/manual/en/function.setcookie.php#73484

 $past = time() - 3600; foreach ( $_COOKIE as $key => $value ) { setcookie( $key, $value, $past, '/' ); } 

Тем не менее, даже лучше запомнить (или хранить его где-нибудь), какие файлы cookie устанавливаются с вашим приложением в домене и удалять все это напрямую.
Таким образом, вы можете быть уверены, что все значения будут правильно удалены.

Я согласен с некоторыми из приведенных выше ответов. Я бы просто рекомендовал заменить «time () – 1000» на «1». Значение «1» означает 1 января 1970 года, что гарантирует истечение 100%. Следовательно:

 setcookie($name, '', 1); setcookie($name, '', 1, '/'); 

убедитесь, что вы вызываете функцию setcookie, прежде чем какой-либо выход произойдет на вашем сайте.

также, если ваши пользователи выходят из системы, вы также должны удалить / аннулировать свои переменные сеанса.

Когда вы меняете имя своего Cookies, вы также можете удалить все файлы cookie, но сохранить его:

 if (isset($_COOKIE)) { foreach($_COOKIE as $name => $value) { if ($name != "preservecookie") // Name of the cookie you want to preserve { setcookie($name, '', 1); // Better use 1 to avoid time problems, like timezones setcookie($name, '', 1, '/'); } } } 

Также на основе этого PHP-ответа

Вы должны знать о различных инструментах отслеживания, таких как Google Analytics, также использовать файлы cookie в своем домене, и вы не хотите их удалять, если вы хотите иметь правильные данные в GA.

Единственное решение, с которым я мог работать, – установить существующие файлы cookie на null. Я не могу удалить файлы cookie с клиента.

Поэтому для регистрации пользователя я использую следующее:

 setcookie("username", null, time()+$this->seconds, "/", $this->domain, 0); setcookie("password", null, time()+$this->seconds, "/", $this->domain, 0); 

Конечно, это не удаляет ВСЕ файлы cookie.

Все предыдущие ответы упускают из виду, что setcookie можно было использовать с явным доменом. Кроме того, файл cookie может быть установлен на более высокий субдомен, например, если вы foo.bar.tar.com домене foo.bar.tar.com , на foo.bar.tar.com может быть установлен файл cookie. Поэтому вы хотите отключить файлы cookie для всех доменов, которые могли бы удалить файл cookie:

 $host = explode('.', $_SERVER['HTTP_HOST']); while ($host) { $domain = '.' . implode('.', $host); foreach ($_COOKIE as $name => $value) { setcookie($name, '', 1, '/', $domain); } array_shift($host); } 

Используйте функцию очистки файлов cookie:

 function clearCookies($clearSession = false) { $past = time() - 3600; if ($clearSession === false) $sessionId = session_id(); foreach ($_COOKIE as $key => $value) { if ($clearSession !== false || $value !== $sessionId) setcookie($key, $value, $past, '/'); } } 

Если вы передадите значение true оно очистит данные session , в противном случае данные сеанса сохранятся.