избегать возвращаться после выхода - PullRequest
1 голос
/ 04 ноября 2011

я нашел эти вопросы, где у ОП та же проблема, что и у меня.

1 2

Однако я не могурешить мою проблему.Пользователь нажимает кнопку выхода из системы, затем страница перенаправляется на index.php, но кнопка возврата в браузере перенаправляет страницу на предыдущий контент (защищенный входом в систему).

После обновления все работает хорошо, назадкнопка перестает работать -> пользователь перенаправляется на форму авторизации.

php file

<?php
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
header ("Pragma: no-cache");

if(empty($_COOKIE['first_name'])) {
    header("Location:index.php");
    exit();
}

if(isset($_GET['logout'])) {
    setcookie ("first_name", "", time() - 3600);
    unset($_COOKIE);
    header("Location:index.php");
    exit();
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>   
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
</head>
<body>

    <a href="?logout">logout</a>

</body>
</html>

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Даже если пользователь может нажать кнопку «Назад» и см. предыдущую страницу, которая была защищена входом в систему, это не означает, что пользователь снова вошел в систему.Они ничего не могут сделать - это просто статическая копия страницы, которую они ранее просматривали.

Это нормальное поведение, когда пользователь может нажать кнопку «Назад» и просмотреть предыдущие страницы, и сайты не должны пытаться взломатьэтот.Это функция браузера.

В большинстве случаев безопасно разрешить нормальную работу кнопки «Назад», даже когда пользователь вошел в систему. Если нажать кнопку «Назад», когда пользователь вошел в систему, это может иметь плохие последствия для удобства использованиядля пользователя.Чтобы пользователь не мог вернуться на страницу после выхода из системы, вам необходимо убедиться, что на все страницы, которые он просматривает при входе в систему, нельзя вернуться с помощью кнопки «назад», которая ломает кнопку «Назад» для всего сеанса.

Существуют методы, которые можно использовать, чтобы попытаться отключить кнопку возврата для зарегистрированных сеансов, например, объявив страницу не кэшируемой (и не подлежащей сохранению).Они могут или не могут предложить различные степени защиты от использования кнопки назад.Есть много других вопросов о стекопереработке об отключении кнопки «Назад» - если вы хотите игнорировать совет и попытаться его предотвратить, проверьте его.

0 голосов
/ 04 ноября 2011

вы можете попробовать следующее: создать таблицу сеансов, в которой вы храните идентификатор_сессии.когда пользователь входит в систему, вы создаете идентификатор_ сеанса и сохраняете идентификатор сеанса в $ _SESSION.На каждой странице, которую вы загружаете, сначала вы проверяете, доступен ли session_id в базе данных.если нет, вы идете на страницу входа.в противном случае вы загружаете страницу и во время выхода из системы удаляете session_id из базы данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...