Здравствуйте. При переходе на одну из страниц моего сайта (например site.ru/game
) идет проверка на авторизацию, и если пользователь не авторизован, его перенаправляет на страницу входа (site.ru/login
).
Хочу после авторизации проверять историю переходов пользователя:
if(страница на уровень ранее == "site.ru/login" && страница на 2 уровня ранее == "site.ru/game") {
window.location.href="site.ru/game"; // перенаправляем туда, куда он хотел попасть
}
С помощью js нашел как узнать на один уровень ранее, это document.referrer
, но не нашел как получить страницу на 2 уровня ранее. Хотелось бы без использования сторонних библиотек. Если это нельзя сделать, то возможно с помощью PHP можно это сделать. Понимаю что пользователь может использовать режим инкогнито, где браузер ничего нам не даст, но для меня это не важно.
Используйте параметры HTTP запроса
Пользователь запрашивает страницу site.ru/game
.
Сервер определяет, что пользователь не авторизован, и перенаправляет на страницу входа, добавив в параметры исходную страницу
302
Location: site.ru/login?return_url=game
Браузер обрабатывает ответ 302
, отправляет запрос на site.ru/login?return_url=game
.
Сервер рендерит страницу входа. Далее есть два варианта: ничего не делать или добавить return_url
в <input type="hidden" name="return_url" value="game">
.
Возвращает страницу пользователю.
Пользователь вводит логин и пароль, отправляет POST запрос.
Сервер авторизует пользователя, ищет в параметрах URL или в данных POST (смотря какой вариант мы выбрали) return_url
и осуществляет перенаправление
302
Location: site.ru/game
Юзайте COOKIE , смотрите, идея такова. Что когда пользователь переходит на страницу вашу страницу запускается мини алгоритм кук. Если кука есть значит пользователь пришел из нашего сайта, с определённой страницы. Если нет, то установить ее.
Тоесть открыл пользователь index.php.
1.Если куки нет, поставить ее .
if (isset($_COOKIE['old']) == false){
setcookie('old', $_SERVER['REQUEST_URI']);
}
2. Если кука есть, то мы знаем на какой странице пользователь был!
if (isset($_COOKIE['old']) == false){
setcookie('old', $_SERVER['REQUEST_URI']);
}else {
echo 'Ты пришел из '.$_COOKIE['old'];
}
!!!Warning Делайте setcookie еще до использования echo. Иначе получите падение. Это связано с ограничением самого формата http. Или юзайте буферы (ob_start(); , ob_end_flush());
ob_start - включает буферизацию вывода.
ob_end_flush - очищает (отправляет) буфер вывода и отключает буферизацию вывода.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Даны строки A и BЕсли в A есть повторяющиеся символы, а в B нет повторяю- щихся символов, то упорядочить символы B в алфавитном порядке и удалить...