У меня есть защищенная страница, которая показывает данные только для входа в систему, как только пользователь нажимает кнопку выхода из системы, она уничтожает данные сеанса и перенаправляет их на другую страницу. header('Location: login.php');
Теперь, как только страница будет перенаправлена на login.php, я могу легко вернуться на страницу, которая была защищена, и может видеть всю информацию там и может оставаться на странице, пока я не обновляю браузер или не закрываю его.
На таких сайтах, как Gmail и многие другие, после входа в систему вы не можете вернуться на страницу назад. Как это можно реализовать? Благодарю.
Изменить: Извините, если его неясно, на защищенной странице есть несколько строк кода сверху, чтобы проверить, установлен ли сеанс или нет. если сеанс не установлен, он должен перенаправить на другую страницу. но проблема в том, что он не проверяет сеанс, если я нажимаю кнопку «Назад» в браузере.
Это может быть вызвано настройками кэширования по умолчанию вашего браузера / веб-сервера.
Всякий раз, когда пользователь посещает защищенную страницу, попробуйте отправить заголовки, чтобы предотвратить кеширование страницы:
header('Cache-Control: no-cache, must-revalidate'); header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
Обычно это приводит к тому, что любые нажатия кнопки «назад» вызывают полную перезагрузку страницы, а не загрузку ее из кеша браузера.
Поместите это вверху защищенной страницы:
//Probably caused by back button... Check if logged-in... if(!$_SESSION["usernameWhatever"]) { //Do not show protected data, redirect to login... header('Location: login.php'); } //Show protected data...
Это в основном проверяет, если пользователь вошел в систему, если нет, перенаправляет на страницу входа …
Чтобы отключить кеширование страницы, поместите ее в head
тег своей страницы:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
Эта проблема разрешения кода
<?php echo("<script>location.href = './login.php';</script>"); ?>