2015-04-28 4 views
0

Я видел следующий вопрос и пытался адаптировать часть ответа, но не повезло: «Как отключить кнопку заднего браузера после того, как пользователь выйдет из системы и уничтожит сеанс?»Как убить сеанс после выхода из системы с помощью php

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

Один ответ, если вы видели, и ниже можете ответить на вопрос: Один из подходов, который я видел для намеренного нарушения использования кнопки «Назад», - это передать токен на каждый URL-адрес приложения и внутри каждой формы. Маркер регенерируется на каждой странице, и как только пользователь загружает новую страницу, токены с предыдущих страниц становятся недействительными. Когда пользователь загружает страницу, страница будет отображаться только в том случае, если к ней был передан правильный токен (который был предоставлен всем ссылкам/формам на предыдущей странице). Может ли кто-нибудь дать представление о том, как это сделать?

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

Куда направляется заголовок?

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 



<?php 
session_start(); //starts the session 
if($_SESSION['user']){ //checks if user is logged in 
} 
else{ 
    header("location:login.php"); // redirects if user is not logged in 
} 
$username = $_SESSION['user']; //assigns user value 
$id_exists = false; 
?> 

У меня есть checklogin.php, который проверяет имя пользователя и пароль, введенный с этим хранится в базе данных MySQL. Затем они перенаправляются на файл file1.php. на этой странице есть кнопка выхода. Вышеприведенный код сохраняется на logout.php.

Когда пользователь выходит из системы, я не хочу, чтобы они снова открывали файл, нажимая кнопку «Назад». Благодаря

+4

Отключение кнопки «Назад» НЕ МОЖЕТ, и НЕ ДОЛЖНО быть достигнуто – Epodax

+0

вместо session_destroy, используйте unset ($ _ SESSION ["value1"); снята с охраны ($ _ SESSION [ "значение2"]); ecc – PHPMan

+0

Проверьте это http://stackoverflow.com/questions/16961202/how-can-i-disable-the-back-browser-button-after-user-press-logout-and-destroy-se – Krishna38

ответ

1

Что касается заголовков, вот те, от веб-сервера я регулярно использовать после поиска:

Cache-Control: private, pre-check=0, post-check=0, max-age=0 
Expires: 0 
Pragma: no-cache 

Нажатие кнопки назад после нажатия на ссылку на странице результатов отображается сообщение об ошибке в Firefox. Единственная заметная разница, которую я вижу, - Expire: 0.

+0

спасибо, я попробую, заголовок войдет в файл1.php, правильно?(все мои phps, у которых на них будет кнопка выхода) – Rus84

+0

Обычно вы обычно устанавливаете эти заголовки со страниц, на которые вы не хотите, чтобы посетитель возвращался. Поэтому в этом случае я думаю, что это должно быть, по крайней мере, 'checklogin.php'. В более общем виде: все скрипты, вызываемые атрибутом 'action' формы. –

0

Войти Страница:

<?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"); 
?> 
+0

Это ссылка, которую я пытался использовать. У меня есть страница входа в систему, а затем логин проверки, который я предполагаю, эквивалентен контроллеру входа в систему, а затем также странице выхода. Как только я выйду из системы, я могу нажать кнопку «Назад» и вернуться в базу данных. Вы применили приведенный выше сценарий к работе для вас? – Rus84

Смежные вопросы