Я нашел эти вопросы, где у op есть те же проблемы, что и я.
1 2
Однако я не могу решить свою проблему. Пользователь нажимает кнопку выхода, затем страница перенаправляется на index.php, но кнопка «Назад» в браузере перенаправляет страницу на предыдущий контент (защищенный логином).
После обновления все работает хорошо, кнопка «Назад» перестает работать -> пользователь перенаправляется в форму входа.
файл php
<?php header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header ("Last-Modified: " . gmdate("D, d MYH: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>
Несмотря на то, что пользователь может нажать кнопку «Назад» и увидеть предыдущую страницу, которая была защищена логином, не означает, что пользователь снова войдет в систему. Они ничего не могут сделать – это просто статическая копия страницы, которую они ранее просматривали.
Это обычное поведение, при котором пользователь может нажать кнопку «Назад» и увидеть предыдущие страницы, а сайты не должны пытаться сломать это. Это функция браузера.
В большинстве случаев безопасно позволять кнопке «Назад» работать нормально даже во время входа пользователя. Нарушение кнопки «Назад» во время входа пользователя может иметь плохие последствия для пользователя. Чтобы пользователь не возвращался на страницу после выхода из системы, вам нужно убедиться, что все страницы, которые они просматривают во время входа в систему, не могут быть возвращены с помощью кнопки «Назад», которая прерывает кнопку «Назад» для всего сеанса.
Существуют методы, которые вы можете использовать, чтобы попытаться отключить кнопку «Назад» для входа в сеансы, например, объявив страницу необратимой (и неустойчивой). Они могут или не могут предлагать разную степень защиты от использования кнопки «Назад». Есть много других вопросов о stackoverflow об отключении кнопки «Назад» – если вы хотите проигнорировать советы и попытаться предотвратить это, проверьте его.
вы можете попробовать следующее: создать таблицу сеансов, в которой вы храните session_id. когда пользователь входит в систему, вы создаете session_id и сохраняете идентификатор сеанса в $ _SESSION. на каждой загружаемой странице сначала вы проверяете, доступен ли session_id в базе данных. если вы не переходите на страницу ведения журнала. в противном случае вы загружаете страницу, а во время выхода вы удаляете session_id из базы данных.
даже если вы можете использовать подставку, чтобы вернуться назад, никакая операция не будет возможна. вы также можете сделать страницу недоступной для чтения