2014-10-08 3 views
0

я сессия создана так:Выпуск на Разрушая - Завершение сессии на Выходе

<?php 
session_start(); 
include 'conconfig.php'; 
$con = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME); 

$email = $_POST['email']; 
$pass = $_POST['pass']; 

$query = "SELECT * FROM tempusers WHERE user='$email' AND pass='$pass'"; 
$result = mysqli_query($con,$query)or die(mysqli_error()); 
$num_row = mysqli_num_rows($result); 
$row=mysqli_fetch_assoc($result); 
if($num_row >=1) { 
    echo 'true'; 
    $_SESSION['uName'] = $row['uName']; 
    } 
else{ 
    echo 'false'; 
} 
?> 

и в моем logout.php у меня есть

<?php 
    session_start(); 
    session_unset(); 
    unset($_SESSION['uName']); 
    session_destroy(); 
    header("Location:index.php"); 
?> 

, но ни один из session_unset();, unset() и session_destroy();, похоже, не работает, потому что после перехода на страницу я все еще могу использовать кнопку «Назад назад» и вернуться на страницу с ограниченным доступом! кроме header() не меняется страница в index.php, можете ли вы сообщить мне, что я делаю неправильно, и как я могу это исправить?

В принципе, у меня есть Выйти Ссылка на Запретной страницу, которая, как это

<a href="logout.php" >Logout</a> 

Благодарности

Update: Вот код сеанса, который я имею в верхней части запретной страницы

<?php 
session_start(); 
    if(empty($_SESSION['uName'])){ 
    header('Location: login.php'); 
} 
?> 
+1

Если вы вернетесь на страницу, где она находится в БД, и разрешает вам (предполагая, что POST отправлен), IF будет TRUE, а сеанс снова установлен. – James

+0

Спасибо Джеймс, но я не понял, что именно вы имеете в виду? – Suffii

+0

Ваш вопрос не совсем понятен в отношении вашего потока входа, я имел в виду: вы выставляете данные POST в сценарий выше, вы регистрируетесь в качестве правильных учетных данных, задан сеанс, вы переходите на следующую страницу, которая теперь входит в систему, вы выходите из системы, вы выходят из системы, вы нажимаете «назад», данные POST по-прежнему установлены и проверяет данные в БД, снова возвращает TRUE (как это делали ранее данные POST), ваш сеанс создается снова. - Что вы получаете, если в конце файла logout.php вы эхо отзываете свой сеанс (и используйте 'exit()' после эха)? Он все еще установлен? – James

ответ

0

Попробуйте восстановить идентификатор сеанса и уничтожить все данные.

<?php 
    session_start(); 
    session_unset(); 
    session_destroy(); 
    session_write_close(); 
    setcookie(session_name(), '', 0, '/'); 
    session_regenerate_id(true); 
    header("Location:index.php"); 
    exit(); 
?> 
+0

Привет slapyo, спасибо за ответ, но я все равно получаю тот же результат – Suffii

+0

Работает ли перенаправление? Перед открытием PHP-тега или функции session_start() нет пробела? – slapyo

+0

Нет, я просто скопировал все, что вы дали, но все так же! – Suffii

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