@michellie

Как правильно сделать logout?

Все работает хорошо, но...
куки удаляются только для корневой папки сайта, если потом зайти в подпапку проекта, куки снова записываются для всех страниц.

<?php
include_once 'includes/functions.php';
sec_session_start();
 
// Unset all session values 
$_SESSION = array();
 
// get session parameters 
$params = session_get_cookie_params();
 
// Delete the actual cookie. 
setcookie(session_name(),
        '', time() - 42000, 
        $params["path"], 
        $params["domain"], 
        $params["secure"], 
        $params["httponly"]);
 
// Destroy session 
session_destroy();
Setcookie("user_id",$_SESSION['user_id'],time()-3600000);
Setcookie("username",$_SESSION['username'],time()-3600000);
Setcookie("login_string",$_SESSION['login_string'],time()-3600000);
header("Location: ".$_SERVER['HTTP_REFERER']);
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ответы на вопрос 2
Exploding
@Exploding
wtf?
Что-то тут явно перемудрено... и куки и сессии...
куки снова записываются для всех страниц

У вас там для каждой страницы свои куки генерятся?


//...
session_destroy();
Setcookie("user_id",$_SESSION['user_id'],time()-3600000);
//...


Как это может работать?

Если бы sec_session_start() не была кастомной функцией, я бы поменял местами первые две строки кода, т.к. если отключен контроль ошибок...

Вместо Setcookie, может лучше как рекомендуют $_COOKIE?

Я бы хранил в куках только идентификатор пользователя, а все параметры - на сервере.
Ну и разделил бы данные в сессии на "разделы" типа, который нужно/можно чистить, и который должен "оставаться статичным", чтобы потом не было session_destroy и т.п. "контрольных выстрелов".
Ответ написан
Комментировать
@michellie Автор вопроса
У вас там для каждой страницы свои куки генерятся?

Нет, вот пример проблемы:

сессия и куки записываются на всех страницах
сайт/....

сессия и куки удаляются на страницах при переходе с
сайт/....

сессия и куки НЕ удаляются на страницах при переходе с
сайт/.../... и далее

если удалить куки и сессию с
сайт/....
и зайти на
сайт/.../... и далее
сессия и куки снова появятся на всех страницах
сайт/.... и далее
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы