#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. Я просто проделал долгий путь -.- все же хотелось бы узнать более эффективный способ сделать это.