Как перенаправить обратно после входа в PHP - PullRequest
1 голос
/ 27 января 2010

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

Как этого можно добиться в php?

Ответы [ 2 ]

5 голосов
/ 27 января 2010

Допустим, «целевая страница» называется «a.php»; Вот возможный способ сделать то, что вы описываете:

  • Вы сначала звоните a.php из вашего браузера
    • a.php обнаруживает, что вы не вошли в систему
    • он перенаправляет вас на index.php, с параметром в URL, говорящем index.php, вы должны быть перенаправлены на a.php при входе в систему
    • перенаправление выполняется с использованием функции header с заголовком Location, который указывает на что-то вроде http://yoursite.com/index.php?destination=a.php
  • На index.php вы имеете дело с механизмом входа в систему.
    • т.е. форма со скрытым полем, в которой хранится $_GET['destination'] (естественно, экранированный)
    • Эта форма отправляет сообщения либо на index.php (т. Е. На себя) , либо на другую страницу; не имеет большого значения.
  • При публикации формы входа в систему:
    • Вы проверяете учетные данные
    • если логин + пароль в порядке:
      • если в данных формы есть поле destination, вы перенаправляете пользователя на соответствующую страницу
      • иначе вы перенаправляете пользователя на страницу по умолчанию.
      • Конечно, может быть интересно проверить содержимое поля destination, чтобы убедиться, что вы принимаете перенаправление только на «действительную» страницу (определение «действительное» может измениться - но может хотя бы означать «страница на вашем сайте»)
1 голос
/ 13 февраля 2012

Вы также можете попробовать ...

start_session();
$_SESSION[destination] = strip_tags($_GET[destination]);

.. в отличие от вызова переменной как скрытого поля. Затем выполните проверки на POST (какие функции проверки вам нужны), например,

if ($_SESSION[destination] !='' || empty($_SESSION[destination]) && !is_numeric($_SESSION[destination])){

header('Location:'.$_SESSION[destination]);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...