Я пытаюсь решить проблему с функцией выхода из системы для веб-приложения.Когда вы вошли в систему, приложение настроило несколько файлов cookie для своего домена.Вот текущая процедура выхода из системы:
- Вы щелкаете ссылку, которая отправляет вас на страницу выхода из системы
- Страница выхода из системы запускает функцию, которая вызывает
session_destroy()
, а также проходит через всефайлы cookie для домена и срок их действия истекает в прошлом (см. код ниже) - Затем страница выхода перенаправляется на страницу входа, которая является прямым HTML.
В концеэтого процесса все остальные файлы cookie сбрасываются, но файл cookie PHPSESSID
все еще существует, имеет то же значение и по-прежнему имеет срок действия в конце сеанса.
Что такоеМне здесь не хватает?
Вот функция выхода из системы, о которой я упоминал выше:
function log_out_current_user() {
// Destroy the session
if (isset($_SESSION)) {
session_destroy();
}
// Expire all of the user's cookies for this domain:
// give them a blank value and set them to expire
// in the past
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, '/');
}
// Explicitly unset this cookie - shouldn't be redundant,
// but it doesn't hurt to try
setcookie('PHPSESSID', '', time()-1000);
}
}