Код для пересылки браузера, если пользователь не вошел в систему (проверка, установлена ​​ли переменная сеанса), не запускается

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

Заголовки страниц:

 <?php
    session_start();
    if(!isset($_SESSION['answer']))
    {
        header('Location: /?login');
        exit;
    }?>

Объявление сеанса входа в систему:

 $answer = mssql_fetch_array($res);
    $_SESSION['answer']=$answer[0];

Выйти:

<?php
session_start();
session_destroy();
if(!isset($_SESSION['answer']))
{
    header('Location: /?login');
    exit;
}
?>

person Christopher    schedule 29.04.2011    source источник


Ответы (2)


В ответ на то, как это сделать на каждой второй странице:

Я использую обязательный в начале каждой защищенной страницы php на моем сайте. Я называю это auth.php. Если пользователь не вошел в систему (проверьте через переменную сеанса), auth.php перенаправляет его на страницу входа.

Если у вас есть заголовок, это отличное место для его размещения (если он включен только в защищенный раздел, как у меня).

Моя страница выхода уничтожает сеанс и отправляет их на страницу входа.

person Mikecito    schedule 29.04.2011
comment
Спасибо, это полезно, но вы видите, где в моем коде мой не работает? - person Christopher; 29.04.2011
comment
@ Кристофер: var_dump($_SESSION); - person zerkms; 29.04.2011
comment
Я бы попробовал, что сказал zerkms, и безоговорочно перенаправил. Удалите isset на странице выхода из системы. - person Mikecito; 29.04.2011
comment
@Mikecito Redirect безоговорочно на каждой странице? Это сделало бы так, что независимо от того, вошел ли я в систему, я был бы перенаправлен на вход. Это совершенно противоположно тому, что я хочу. - person Christopher; 29.04.2011
comment
Я просто проделал долгий путь - все же хотел бы узнать более эффективный способ сделать это. - person Christopher; 29.04.2011
comment
О, я понимаю. Вы должны включить isset в свой auth.php ... Я имел в виду просто удалить его со страницы выхода. Извини за это. - person Mikecito; 29.04.2011

session_destroy не сбрасывает глобальные переменные.

Если вам нужно безоговорочно перенаправить сразу после разрушения сеанса - просто удалите isset, он вам не нужен.

person zerkms    schedule 29.04.2011
comment
Спасибо! Какие-нибудь советы по перенаправлению на любую другую страницу? - person Christopher; 29.04.2011
comment
@ Кристофер: Я не могу понять вопрос :-( - person zerkms; 29.04.2011
comment
Я пытаюсь вызвать перенаправление на каждой странице, где установлен Session! - person Christopher; 29.04.2011