Intereting Posts
Замените пробелы & nbsp; между тегами PRE exec () работает медленнее в PHP – такая же команда работает намного быстрее в интерактивном режиме Параметры PHP для извлечения данных из массива? Принимая сумму «столбца» в MongoDB Начинаем кэширование данных в PHP Объектно-ориентированные массивы PHP laravel как перейти на другую функцию в том же контроллере Каково использование символа @ в PHP? Точная отчетная ссылка от платежей, сделанных с помощью PayPal в Google Analytics Ошибка загрузки Google App Engine для PHPExcel Почему предупреждение: mysqli_query (): Не удалось получить mysqli? как я могу совместить строковые значения двух массивов попарно с PHP? PHP не имеет функции для XML-безопасного сущностного декодирования? У вас нет xml_entity_decode? как перенаправить в подпапку из корня, переписать ссылку подпапки, чтобы выглядеть как root, а затем добавить некоторые исключения в htaccess? preg_match () Неизвестный модификатор '[' help

Как отключить кнопку заднего браузера после того, как пользователь выйдет из системы и уничтожит сеанс?

У меня возникают проблемы с session_destroy() .
Когда Пользователь нажимает Log out, он должен уничтожить сеанс. Я написал следующий код:

Logout.php

 <?php session_start(); session_destroy(); header("location: LoginViewController.php"); ?> 

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

login.php

 <?php session_start(); $_SESSION['user']= $_GET['username']; echo '"<div style="background:white; text-align:right"> Login as:'.$_SESSION['user'].'</div>"'; echo '<a href="Logout.php" style="text-align:right">Logout</a>'; 

LoginViewController.php

 <?php header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); $Username = $_POST['uname']; $Password = $_POST['pwd']; $User_Type=$_POST['type']; If (!(empty($Username) && empty($Password) && empty($User_Type))){ $model = new UsersModel(); $rowsCount = $model->checkUser($Username,$Password,$User_Type); if ($rowsCount!=0){ header("location:login.php?username=".$_POST['uname'].""); } else { echo '<script type="text/javascript">alert("Enter username and password correctly"); window.location.href="LoginViewController.php";</script>'; } } 

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

Я хочу отключить эту кнопку браузера после выхода из системы.

login.php страница:

 <?php if (isset($_POST['uname'], $_POST['pwd'], $_POST['type'])) { $Username = $_POST['uname']; $Password = $_POST['pwd']; $User_Type=$_POST['type']; if (!(empty($Username) || empty($Password) || empty($User_Type))) { $model = new UsersModel(); $rowsCount = $model->checkUser($Username,$Password,$User_Type); if ($rowsCount!=0) { $_SESSION['user'] = $Username; header("Location:LoginViewController.php"); } else { echo 'Bad user'; } } else { echo 'Please, fill all inputs'; } } else { echo 'Bad form sent'; } ?> <form name="f1" method="POST" action="" > // inputs </form> 

LoginViewController.php:

 <?php header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); if (!isset($_SESSION['user'])) { header('Location: login.php'); exit(); } echo 'You have successfully logged as '.$_SESSION['user'] ?> 

И добавьте заголовки, чтобы заставить браузер повторить проверку страниц:

logout.php:

 <?php session_start(); session_destroy(); $_SESSION = array(); header("location: login.php"); ?> 

Вы должны сделать переадресацию со своего сценария выхода.

Например:

 header("Location: index.php"); 

Вы, если пользователь в следующий раз ударит, снова перейдут на страницу logout.php, где вы снова можете выполнить проверку и перенаправить снова 🙂 Это бесконечный цикл, если пользователь снова пытается.

Это связано с тем, что кеш браузера хранит данные на странице, если вы обновите страницу или перемещаетесь дальше в своей частной области, вам будет предложено ввести страницу входа в систему, и вы не сможете ничего увидеть, считая, что ваш логин система проверки правильно настроена.

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

 header("Cache-Control: private, must-revalidate, max-age=0"); header("Pragma: no-cache"); header("Expires: Fri, 4 Jun 2010 12:00:00 GMT"); 

Вот мой LoginController.php

  <?php header("Cache-Control: private, must-revalidate, max-age=0"); header("Pragma: no-cache"); header("Expires: Fri, 4 Jun 2010 12:00:00 GMT"); 

// Если вы отправляете форму, вставьте данные в базу данных

  $Username = $_POST['uname']; $Password = $_POST['pwd']; $User_Type=$_POST['type']; session_start(); If (!(empty($Username) && empty($Password) && empty($User_Type))) { $model = new UsersModel(); $rowsCount = $model->checkUser($Username,$Password,$User_Type); if ($rowsCount!=0) { $_SESSION['user'] = $Username; header("location:login.php"); } else { echo '<script type="text/javascript">alert("Enter username and password correctly"); window.location.href="LoginViewController.php";</script>'; } } } ?> 

Вот моя страница после входа (login.php) .. и отображает имя пользователя сеанса и выход из системы

  <?php header("Cache-Control: private, must-revalidate, max-age=0"); header("Pragma: no-cache"); header("Expires: Fri, 4 Jun 2010 12:00:00 GMT"); session_start(); if(!isset($_SESSION['user'])) { header('Location: LoginViewController.php'); exit(); } echo '"<div style="background:white; text-align:right"> Login as:'.$_SESSION['user'].' <a href="Logout.php" style="text-align:right">Logout</a></div>"'; ?> 

Вот мой Logout.php

  <?php header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); session_start(); session_destroy(); header("Location: LoginViewController.php"); ?> 
 if (window.history) { window.history.forward(1); } 
 header("Cache-Control: private, must-revalidate, max-age=0"); header("Pragma: no-cache"); header("Expires: Fri, 4 Jun 2010 12:00:00 GMT"); 

Попробуйте этот код на всех страницах, кроме страницы входа в систему и страницы проверки входа.

 session_start(); if (!$_SESSION['sesuname']) { echo "You are not logged in."; exit(); } else { /* All other codes must be here */ }