@Richswitch
junior

Как сделать редирект на предыдущю страницу php?

Привет!
Не пойму в чем ошибка! Пытаюсь сделать редирект на предыдущую страницу через header.
Есть страница авторизации
$redirect = $_SERVER['HTTP_REFERER'];
...
if( isset($data['do_login']) ) здесь мы получаем данные от пользователя после нажатия кнопки "Войти", далее идет проверка на ошибки и т.д.
...
ЗДЕСЬ ВОТ ПРОБЛЕМА
if( password_verify($data['password'], $user->password) )
				{
					// логиним пользователя здесь
					$_SESSION['logged_user'] = $user;
					header("Location: $redirect");
				} else {
					$errors[] = 'Неверно введен пароль!';
				}

т.е. header() работает если туда записывать сылку "http://..."
Пробовал также с помощью скрипта window.history... тоже не получилось
В чем ошибка?
  • Вопрос задан
  • 1708 просмотров
Пригласить эксперта
Ответы на вопрос 3
larisamoroz
@larisamoroz
Курю маны, втыкаю в код, ваяю, починяю.
Поле referer не всегда передаётся браузером.
Ответ написан
@vyrkmod
Пишу на php. И не стыдно.
Как написали выше, браузер может не передавать referer, соответственно полагаться на $_SERVER['HTTP_REFERER'] не стоит. Логичное решение - записывать последний посещённый url в сессию.
Ответ написан
vesper-bot
@vesper-bot
Любитель файрволлов
Одно из решений, которые я видел, передавать в форме текущий URL вместе с данными пользователя при вводе. Т.е. имеется input type="hidden" с именем prev, скажем, и значением window.location, заполненным джаваскриптом, присобаченным к форме. Естественно, даже спрятанное поле ввода надо проверять на валидность, так как его значение передается клиентом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы