Я пытаюсь найти способ перенаправить пользователя на выбранную страницу, если они были вынуждены снова войти в систему после таймаута сеанса.Перенаправление PHP на выбранную страницу После входа в систему
Прямо сейчас, после входа пользователя в систему, они перенаправляются на index.php. Но если пользователь получил ссылку в электронном письме на другой раздел моего сайта, и они не вошли в систему весь день, их, очевидно, просят войти в систему, но в конечном итоге на index.php вместо страницы, для которой была ссылка. ,
Вот отрывок из моего кода на странице входа в систему:
if (mysql_num_rows($result_set) == 1) {
// username/password authenticated
// and only 1 match
$found_user = mysql_fetch_array($result_set);
$_SESSION['user_id'] = $found_user['id'];
$_SESSION['username'] = $found_user['username'];
$_SESSION['last_activity'] = time();
$_SESSION['time_out'] = 7200; // 2 hours
redirect_to("index.php");
Любые идеи, было бы полезно.
Я хочу поблагодарить всех, кто ответил на мой вопрос. Решение было комбинацией нескольких предложений, которые я получил здесь. Я хотел бы поделиться с вами тем, как я решил это:
Часть причины, по которой у меня возникли проблемы с сохранением URL-адреса, к которому пользователь попытался перейти, прежде чем принудительно войти в систему, было то, что мои сеансы обрабатываются внешний php-файл, который заботится о подтверждении входа и истечении текущего сеанса. Этот файл требуется для всех страниц моего сайта. HTTP_REFERER не будет работать, потому что он всегда будет установлен на login.php. Вот что я сделал на моем session.php файле:
session_start();
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https')
=== FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
$script = $_SERVER['SCRIPT_NAME'];
$params = $_SERVER['QUERY_STRING'];
$currentUrl = $protocol . '://' . $host . $script . '?' . $params;
if ($currentUrl != "http://domain.com/login.php?") {
$expiryTime = time()+(60*5); // 5 mins
setcookie('referer',$currentUrl,$expiryTime,'/');
}
По существу, я сохранил ссылающаяся URL в куки, что истекает через 5 минут, давая достаточно времени пользователя для входа в систему. Затем, на login.php, я сделал это:
if(isset($_COOKIE['referer'])) {
redirect_to($_COOKIE['referer']);
} else {
redirect_to('index.php');
}
И, БИНГО! Работает каждый раз.
Просто сохраните страницу, с которой они первоначально пытались перейти, и перенаправляя ее. – Brad
Предложение Брэда - стандартная практика. –
Добавьте скрытый ввод в форму входа со значением $ _SERVER ['HTTP_REFERER'], добавьте параметр GET в URL-адрес входа с URL-адресом страницы, из которого они пришли, добавьте URL-адрес переменной $ _SESSION ... Затем перенаправляйтесь на этот URL-адрес. .. Некоторые идеи ... – kgarrigan