Запоминание URL до завершения аутентификации - PullRequest
1 голос
/ 31 октября 2009

Как я помню URL в php, чтобы предоставить его пользователю после аутентификации. Идея состоит в том, что пользователь будет запрашивать URL, но пока не аутентифицирован. В этом случае я пересылаю его на страницу входа, но лучше всего сохранить этот URL-адрес, чтобы я мог предоставить его ему после проверки подлинности. Я думал о сохранении его в переменных сеанса, но не уверен насчет реализации. Есть ли лучшие практики для этого?

Ответы [ 2 ]

4 голосов
/ 31 октября 2009

Поместите его в скрытое поле формы или сохраните в переменной сеанса.

Пример

login.php? L = account.php (где l - страница, на которую следует перейти после входа в систему).

<form action="action/login.php" method="post">
<input type="hidden" value="<?php echo $_GET['l'] ? $_GET['l'] : 'index.php'; ?>" name="redirect" />
...
</form>

Действие / login.php

<?php

  ... do some checking here...

  if($loggedin){

    redirect($_POST['redirect']);
    // redirect() a wrapper function for header("Location: $url");

  }else{

    redirect('login.php?l='.$_POST['redirect']);
    // go back to login page

  }

?>
2 голосов
/ 31 октября 2009

Когда пользователь переходит на ProtectedPage.php без аутентификации, он должен автоматически перенаправить его на LoginView.php (с вложенным URL предыдущей страницы). Затем они могут перейти к входу в систему, и страница LoginAction.php перенаправит их обратно на ProtectedPage.php

ProtectedPage.php

<?php
    if (!$authenticated) {
        header("Location: /LoginView.php?r=ProtectedPage.php");
    }
?>

LoginView.php

<form action="LoginAction.php" method="post">
<input type="hidden" id="r" value="<?php echo $_GET['r'] ?>" />
...
</form>

LoginAction.php

<?php
    ... Authenticate the user ...

    if (!empty($_POST['r'])) { header("Location: {$_POST['r']}"); }
    else { header("Location: /"); }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...