Перенаправление на старую страницу при выходе из PHP - PullRequest
2 голосов
/ 18 августа 2011

Я занимаюсь разработкой CMS.У меня есть три сценария и 2 переменные сеанса

 $_SESSION['logged']
 $_SESSION['redirect'] 

«auth.inc.php» - запускать каждый раз, когда пользователь запрашивает страницу.Он проверяет, установлено ли значение $ _SESSION ['logged'] и равно ли оно 1. Если оно не перенаправляет главную страницу, используя

header(location:index.php)

, и ссылка на ссылку на страницу сохраняется в $ _SESSION ['redirect'].Если установлено значение $ _SESSION ['logged'], время бездействия меньше требуемого значения, которое он перенаправляет на запрашиваемую страницу, в противном случае он перенаправляет на logout.php

"index.php" - проверяет имя пользователя и пароль,Я успешно установил

$_SESSION['logged']=1

Если установлено значение $ _SESSION ['redirect'], оно перенаправляет на эту страницу в противном случае на страницу по умолчанию

"logout.php" - Сбрасывает и уничтожает сеанс с

session_unset();
session_destroy();

Но я хочу, чтобы, если пользователь вышел из системы из-за истечения времени ожидания сеанса, после входа он должен быть перенаправлен на старую страницу.Поскольку я сбрасывал сеанс, $ _SESSION ['redirect'] был потерян.Поэтому вместо использования session_unset () я только сбрасываю $ _SESSION ['logged']

unset($_SESSION['logged']);
session_destroy();

, но все же я не могу получить $ _SESSION ['redirect'] после session_destroy ().Переменная все еще не установлена.Как мне перенаправить на старую страницу после выхода из системы из-за истечения сеанса

Ответы [ 3 ]

3 голосов
/ 18 августа 2011

session_destroy () фактически уничтожит данные для текущего сеанса. Чтобы использовать любое заданное вами значение, вам нужно снова использовать session_start ().

Кроме того, если срок сеанса истекает, ничто из того, что вы установили в качестве файла cookie сеанса, не будет действительным.

Лучшее, что вы можете сделать, это сохранить свою последнюю страницу или что-то еще в базе данных, поскольку вы сказали, что пользователи могут войти в систему. Затем получите это значение при входе в систему и перенаправьте на него.

Удачи!

1 голос
/ 18 августа 2011

Ну, ваша первая проблема в том, что вы все еще уничтожаете $ _SESSION ['redirect'] при вызове session_destroy (). То, что вы могли бы сделать, это либо жестко закодировать URL-адрес по умолчанию в систему, чтобы вы могли уничтожить сеанс и все еще перенаправить. Другой вариант - удалить команду session_destroy () до тех пор, пока вы не будете перенаправлены .... т.е. на странице перенаправления проверьте, не была ли предыдущая страница (реферер) logout.php, если она была уничтожена, иначе не выполняйте

0 голосов
/ 18 августа 2011

@ Марк Таулер: Извините, я не могу оставить комментарий. Что я хочу сказать, так это то, что не все страницы поддержки браузеров, такие как IE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...