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

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

Похожие вопросы