我如何记住php中的URL以在身份验证后将其提供给用户。这个想法是用户将请求URL但未经身份验证。在这种情况下,我将他转发到登录页面,但保存该URL的最佳做法是,一旦经过身份验证,我就可以将其提供给他。我想过将它保存在会话变量中,但不确定实现。对此有最佳实践吗?
答案 0 :(得分:4)
将其放在表单中的隐藏字段中,或将其保存到会话变量中。
实施例
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
}
?>
答案 1 :(得分:2)
当用户未经身份验证前往ProtectedPage.php
时,应自动将其重定向到LoginView.php
(附加上一页的网址)。然后,他们可以继续登录,LoginAction.php
页面会将其重定向回ProtectedPage.php
<?php
if (!$authenticated) {
header("Location: /LoginView.php?r=ProtectedPage.php");
}
?>
<form action="LoginAction.php" method="post">
<input type="hidden" id="r" value="<?php echo $_GET['r'] ?>" />
...
</form>
<?php
... Authenticate the user ...
if (!empty($_POST['r'])) { header("Location: {$_POST['r']}"); }
else { header("Location: /"); }
?>