У меня есть проблема, похожая на эта , но немного другая.
У меня это структурировано так:
Страница, на которую пользователь хочет перейти, похожа на displayData.php. Это страница, на которой они должны вернуться. На этой странице проверяется, вошли ли вы в систему и не истек ли сеанс, например:
if ($_SESSION["loggedIn"] != "YES")
{
header ("Location: ".$baseURL."timeout.php");
exit();
}
На timeout.php я проверяю реферер:
<?php
session_start();
$_SESSION['redirect'] = $_SERVER['HTTP_REFERER'];
$_SESSION["errorMessage"] = "Your session has timed out or<br>you have not logged in correctly.";
header ("Location: index.php");
exit();
?>
Проблема возникает после того, как пользователь отправил форму входа и страницу входа, чтобы проверить, есть ли реферер. Однако мы уже определили, что они имеют правильную регистрационную информацию.
if(isset($_SESSION['redirect'])){
header ("Location: ".$_SESSION['redirect']);
}else{
header ("Location: menu.php");
}
Я бы подумал, что логически, когда страница тайм-аута устанавливает переменную с $_SERVER['HTTP_REFERER'];
, она устанавливает ее на страницу, перенаправленную на timeout.php, в данном случае displayData.php. Однако кажется, что вместо этого он устанавливает его в качестве источника ссылки на displayData.php (который может быть чем угодно, но это не то, на что мы хотим отправить пользователя).
Это предполагаемый эффект HTTP_REFERER, чтобы не обновлять, если было перенаправление заголовка? Если это так, это отстой, и мне нужно переписать около 80 файлов, чтобы изменить систему входа в систему / тайм-аут. Я надеюсь, что будет более легкий путь. Мы бы сделали это в системе на основе функций, но в настоящее время мы пытаемся расширить унаследованный код.
Большое спасибо.
Edit:
Чтобы быть немного более ясным здесь.
Подумайте об этом в папке, / admin /. displayData.php - один из многих файлов, доступ к которым можно получить только при входе в систему (поэтому мы не знаем, к какой конкретной странице они пытались получить доступ, когда обнаружили, что они не вошли в систему). Каждая из этих страниц перенаправляется в timeout.php по истечении сеанса (или если сеанса вообще не было), поэтому я хочу, чтобы timeout.php мог определить страницу, к которой ранее обращались без сеанса, а затем сохраните эту информацию, чтобы позже ее можно было использовать для перенаправления пользователя на исходную страницу, которую он запрашивал на нашем сайте.
Причина, по которой я хочу сделать это через файл timeout.php, заключается в том, что существует много файлов, таких как displayData.php, и я не хочу редактировать каждый из них, чтобы улучшить систему, если я этого не сделаю в настоящее время.
Если это все еще недостаточно ясно, дайте мне знать.