Есть самописная система. Многие годы всё работало как часы. Работало так долго, что мы уже забыли как оно там всё внутри работает, и души не чаяли. А тут вдруг (причина неизвестна) - то ли версию php обновили, то ли что-то переписали в системе, и перестал отрабатывать.... ВЫХОД.
В Файерфокс приходится 3 раза жать на выход, чтобы юзер разлогинился. В Хроме вообще не разлогинивается, даже если закрыть все вкладки и перезагрузить браузер.
Код логаута:
function close_user_session(){
if ( session_id() ) {
$q = "DELETE FROM sessions WHERE id_session = '".session_id()."'";
$del = mysql_query($q);
}
setcookie(session_name(), session_id(), time()-60*60*60*24);
// и уничтожаем сессию
session_destroy();
}
Также пробовали варианты (изменений нет):
function close_user_session(){
// Если есть активная сессия, удаляем куки сессии,
setcookie(session_name(), session_id(), time()-60*60*60*24);
// и уничтожаем сессию
session_unset();
session_destroy();
}
или украденный у modx evo
setcookie(session_name(), '', 0);
session_destroy();
Пожалуйста, подскажите в какую сторону копать, чтобы решить проблему.
По отладке происходит сейчас вот что:
print_r( $_COOKIE);
/* $_COOKIE
Array
(
[PHPSESSID] => oec8e0puoh0vvb4j8pkkmiets4
)
*/
/* $_SESSION
Array
(
[authorized] => 1
[user_id] => 143
)
*/
print_r( $_SESSION);
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', 0);
}
//// now destroy the session
session_destroy();
print_r( $_COOKIE);
/* $_COOKIE
Array
(
[PHPSESSID] => oec8e0puoh0vvb4j8pkkmiets4
)
*/
/* $_SESSION
Array
(
[authorized] => 1
[user_id] => 143
)
*/
print_r( $_SESSION);
Будто дестроя и не происходит
Код:
setcookie(session_name(), session_id(), time()-60*60*60*24);
даёт тот же результат что и листингом выше.
Сама функция дестроя выводит:
WARNING - session_destroy(): Session object destruction failed
Строка 187 в файле blablabla\functions.php
Кстати, всё еще зависит от браузера:
Махтон - всё ок отрабатывает. Никаких косяков.
Файерфокс - логаут происходит после 3х-4х нажатий на "выход".
Гуглохром - даже если закрыть вкладки, закрыть браузер, всё равно сессия не рвётся. Вообще. Никогда. Только чистка истории помогает.