Intereting Posts
Как я могу получить доступ к глубокому объекту, названному как переменная (точечная нотация) в php? Как получить доступ к переменной защиты в классе Laravel Как перейти от шифрования sha256 к bcrypt для php? jQuery mobile: открытая панель не запускается после навигации по страницам php для многих elseif-заявлений более высокая производительность Как создать или изменить класс PHP во время выполнения? Невозможно назначить роли пользователям, использующим базу данных (пул ролей пуст) MySQL вставляет дубликаты ключевых обновлений Почему глобальное значение null в функции? Аудио-элемент HTML5 с динамическим источником PHP действует странно в моей программе PHP Преобразование в int Как обновить базу данных (d2) на основе информации другой базы данных (d1) Symfony2 и Twig – проверьте, существует ли актив Оберните CSV-значения, сгенерированные PHP fputcsv (), с помощью ""

предотвратить кнопку возврата после выхода из системы

Я имею страницу выхода php. когда пользователь нажимает ссылку на выход. См. эту страницу и перенаправляйте на страницу индекса. но при нажатии кнопки «Назад» я вижу страницу previouse с пользовательскими данными. конечно, когда я обновляю страницу, я не вижу страницы и данные previouse. я проверил другой код (drupal) после выхода из системы и нажмите кнопку «Назад». Я не вижу страницу previouse и не вижу страницу входа в систему. Где моя проблема. как это исправить?

СОБЫТИЯ:

if (isset($_GET['req']) && $_GET['req'] == 'logout') { session_start(); session_destroy(); header("Location: index.php"); exit(); } 

благодаря

Solutions Collecting From Web of "предотвратить кнопку возврата после выхода из системы"

Код правильный. На самом деле вам не нужно мешать людям щелкнуть по кнопке «Назад». Если вы действительно думаете, что это важно, вы можете сохранить файл cookie или что-то еще в logout.php, и главная страница проверяет с AJAX, установлен ли этот файл cookie. И если это, вы можете перезагрузить страницу с помощью JS (и, конечно же, отключить файл cookie). Но действительно безопасного пути не существует.

Я думаю, что это главным образом проблема с клиентской стороной и из-за заголовков кеша браузера.

что такое исправление?

На мой взгляд, вам нужно правильно установить заголовки кеша для статического содержимого и нестатического содержимого

Статическое содержимое (css / javascript / images): прочитайте это

Для самой страницы php: header("Cache-Control", "no-store, no-cache, must-revalidate");

должен сделать трюк

Вы, по сути, спрашиваете, как очистить историю браузера пользователя и кеш страницы, к которой они имели доступ, но больше не делают этого. Когда вы регистрируете пользователя, вы удаляете их возможность повторно загружать страницу, и очень мало (если что-либо) вы можете сделать, что может помешать браузеру показывать им то, что они когда-то позволяли загружать ( это устаревшие данные). Важная часть заключается в том, что при перезагрузке они не получают новых данных – вы не можете стереть кеш для того, что они уже загрузили.

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

Использование использует $_GET но не проверяет что-либо форму $_SESSION

Попробуй это

 session_start (); if (isset ( $_GET ['req'] ) && $_GET ['req'] == 'logout') { $_SESSION ['auth'] = false ; session_destroy (); } if (! isset ( $_SESSION ['auth'] ) || $_SESSION ['auth'] == false) { header ( "Location: index.php" ); exit (); } 

Убедитесь, что на ваших основных страницах у вас есть что-то вроде этого

 session_start (); if(/** login Condition **/) { $_SESSION ['auth'] = true ; } if (! isset ( $_SESSION ['auth'] ) || $_SESSION ['auth'] == false) { header ( "Location: index.php" ); exit (); } 

благодаря

🙂

Вот одно простое и быстрое решение. В тег формы входа добавьте target = "_ blank", который отображает содержимое в другом окне. Затем после выхода из системы просто закройте это окно и проблема с кнопкой «Назад» (браузер Safari) будет решена. Даже попытка использовать историю не отображает страницу и вместо этого перенаправляется на страницу входа. Это нормально для браузеров Safari, но для других, таких как Firefox session_destroy (); заботится об этом.

 <? session_start(); if(!isset($_SESSION['username']) && !isset($_SESSION['password'])){ header("Location:../index.php"); exit; } else{ session_destroy(); } ?> 

вставьте это на каждую страницу или где выходите

 <?php session_start(); session_unset(); session_destroy(); header("Location:../index.php"); exit; 

user_logout.php

добавьте это в свой код, это не позволит пользователю нажать кнопку «Назад».

  ignore_user_abort(true);