Я задаюсь вопросом, могу ли я удалить cookie всего своего веб-сайта, когда пользователь нажимает на выход из системы, потому что я использовал это в качестве функции для удаления cookie, но это не работа правильно:
setcookie("user",false);
Существует ли способ удалить cookie одного домена в PHP?
Взято с этой страницы, это отключит все файлы 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 установлены вашим приложением в домене, и удалить их напрямую.
Таким образом вы можете быть уверены, что удалили все значения правильно.
убедитесь, что вы вызовите функцию setcookie до того, как какой-либо вывод произойдет на вашем сайте.
также, если ваши пользователи выходят из системы, вы также должны удалить / сделать недействительными их переменные сеанса.
Вы должны знать, что различные инструменты отслеживания, такие как Google Analytics, также используют файлы cookie в вашем домене, и вы не хотите их удалять, если хотите, чтобы верные данные в GA.
Единственное решение, с которым я мог работать, - это обнулить существующие файлы cookie. Мне не удалось удалить файлы cookie с клиента.
Итак, для выхода пользователя из системы я использую следующее:
setcookie("username", null, time()+$this->seconds, "/", $this->domain, 0);
setcookie("password", null, time()+$this->seconds, "/", $this->domain, 0);
Конечно, это не удаляет ВСЕ файлы cookie.