Как я могу получить адрес, на который собирался пользователь, чтобы я мог перенаправить его после входа в систему? - PullRequest
0 голосов
/ 30 апреля 2011

Я направляю пользователей на страницу моего сайта из электронной почты (возможно, почтового клиента).Когда они попадают на сайт, им предоставляется экран входа в систему, и адрес, по которому они направлялись, теряется.

Как мне получить полный адрес, который они пытались посетить, чтобы я мог перенаправить их на него после входа в систему?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2011

Прежде всего, я мало что знаю о Symfony, поэтому я дам вам знать, что я делаю в PHP.

В зависимости от приложения я использую несколько методов.

Вариант 1: Я отправляю пользователя на страницу, на которую он должен войти, например, mydomain.com/landing.php и установите переменную SESSION с URL-адресом перед перенаправлением на форму входа. После успешного входа в систему существует функция header, которая будет перенаправлять на исходную страницу, где вошедший в систему пользователь теперь может взаимодействовать со страницей.

Вариант 2: Я создаю функцию входа в систему и там, где нет входа в систему SESSION или COOKIE форма вызывается, после отправки формы с использованием action="<? echo $_SERVER['PHP_SELF']; ?> Я устанавливаю переменную POST и перед вызовом любого тега HTML у меня есть что-то вроде

if(isset($_POST['run_login'])) {
    include('my_login_handler.php');
}

Это заботится о входе в систему и не требует перенаправления на целевую страницу, так как она обрабатывается в строке.

Вариант 3: Подобно варианту 2, я создаю функцию входа в систему здесь, здесь нет логина SESSION или COOKIE, но на этот раз я POST данных в my_login_handler.php вместо включения Это. После успешной аутентификации на сайте я вызываю header('Location: '.$_SERVER['HTTP_REFERER']);, который будет перенаправлять на ссылающуюся страницу, означая, что мне не нужно устанавливать какие-либо специальные переменные COOKIES или SESSION для обработки, чтобы перенаправить обратно на целевую страницу.

Правильный вариант, независимо от того, находится он здесь или нет, будет зависеть от вашего приложения и того, что вы можете / нужно делать. Так что поиграйте с различными предложениями и посмотрите, что лучше всего работает в приложении, над которым вы сейчас работаете.

Удачи!

0 голосов
/ 30 апреля 2011

Вам нужно захватить адрес, когда вы перенаправляете его на страницу входа в систему (т.е. когда вы проверяете, вошли ли они в систему), я бы рекомендовал сохранить его в сеансе. Например, очень быстрый способ - перенаправить на /login.php?from=store.php, однако это не лучший способ, поскольку $_GET['from'] может быть взломан для перенаправления пользователя куда-то еще, поэтому я использую $_SESSION для хранения этого значения.

...