Koi_jp
@Koi_jp

Как на 100% удалить cookie на стороне клиента?

говорят делать вот так:
setcookie("user_id", "", time() - (365*24*60*60) );
	setcookie("username", "", time() - (365*24*60*60) );
	header("Location: " . "http://localhost/studyphp/index.php");
	exit();

но это ни к чему не приводит. при направлении в index.php. index.php проверяет cookie и если задано ID пользователя он перенаправляет в личный кабинет. Так вот, после "удаления" cookie вместо того, что бы попасть на страницу авторизации пользователь попадает в личный кабинет. Не знаю как их удалить. И еще можете подсказать как просматривать cookie в firefox?
  • Вопрос задан
  • 6890 просмотров
Пригласить эксперта
Ответы на вопрос 3
nowm
@nowm
Мне кажется, что хранить user_id в куках — не очень хорошая идея. Пользователю в этой ситуации ничего не помешает на своей стороне поставить себе user_id администратора и делать всё, что может делать администратор.

Лучше всего хранить идентификатор пользователя в сессии ($_SESSION['user_id']), так как пользователь напрямую не сможет этот идентификатор изменить (перехватить сессию будет сложнее, чем заменить user_id в куках). А всякие пользовательские данные, вроде user_name лучше хранить в БД и вытаскивать, когда требуется. В куках, опять же, которые полностью во власти пользователя, это лучше не хранить.

И потом, когда вам понадобится разлогинить пользователя, просто уничтожаете сессию и всё.

session_destroy();

Куку с идентификатором сессии можно даже не уничтожать с помощью setcookie, так как после уничтожения сессии неважно, что там хранится в куке. Когда будете создавать новую сессию, кука просто заменится кукой с идентификатором новой сессии.

В Firefox можно просматривать куки с помощью расширения Firebug. Все куки для текущей страницы находятся на вкладке «Cookies» панели Firebug, которая открывается нажатием клавиши F12.
Ответ написан
SToRm1k
@SToRm1k
if ($_COOKIE['user_id'] AND $_COOKIE['username']) {
	setcookie ('user_id', '', time() - 365*24*60*60, '/');
	setcookie ('username', '', time() - 365*24*60*60, '/');
}
header('Location: /index.php');
exit;
Ответ написан
Комментировать
@Nc_Soft
if (isset($_COOKIE['user_id'])) {
    unset($_COOKIE['user_id']);
    setcookie('user_id', null, -1, '/');
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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