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

#php #session #redirect #logout #isset

#php #сессия #перенаправление #Выход #isset

Вопрос:

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

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

  <?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;
}
?>
  

Ответ №1:

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

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

Комментарии:

1. Спасибо! Какие-либо советы по перенаправлению на любую другую страницу?

2. @Christopher: Я не могу получить вопрос:-(

3. Я пытаюсь вызвать перенаправление на каждой странице, где установлена Session!

Ответ №2:

В ответ о том, как это сделать на любой другой странице:

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

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

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

Комментарии:

1. Спасибо, это полезно, но видите ли вы, где в моем коде мой не работает?

2. @Christopher: var_dump($_SESSION);

3. Я бы попробовал то, что сказал zerkms, и перенаправил безоговорочно. Удалите isset на странице выхода из системы.

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

5. Я просто проделал долгий путь -.- все же хотелось бы узнать более эффективный способ сделать это.