![](/img/trans.png)
[英]how to redirect the user to the previous link after login using facebook
[英]Redirect user to previous link after login
问题很简单。 我有一个PHP网站,每当用户通过需要登录的链接进入时,我希望将用户重定向到登录页面,然后,在他完成登录后,我希望将他重定向到他尝试访问时要访问的链接。进入网站。
就是这样...
只需传递您要返回的网址即可。 以stackoverflow为例。 这是我访问的网址
我单击“登录”,然后发送到
如果他们想在我登录后把我发回去,那么可以
$returnurl = make_everything_safe($_GET['returnurl']);
header("Location: $returnurl")
一种简单的方法是将当前页面的URL存储在cookie中,然后在登录用户时测试cookie是否存在,如果存在,则重定向到该cookie中的url。
// Set your cookie before redirecting to the login page
$current_page = 'http://' . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI];
$_COOKIE['redirect_to'] = $current_page;
用户登录后
if(isset($_COOKIE['redirect_to']))
{
$url = $_COOKIE['redirect_to'];
unset($_COOKIE['redirect_to']);
header('location:' . $url);
}
您得到的其他答案也可以正常工作,但这是使用更简单的PHP的更深入的答案。 没有设置cookie或会话变量,我会考虑采取其他措施; 例如,您必须确保在下一页上开始会话。
我要做的是运行一个脚本,以捕获他们尝试访问的页面。 您必须将其放置在访问者可以访问的每个页面上,然后确保传递此值。 这是一个很好的例子:
// Function to get the full URL even on SSL connections
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL; // Here the full URL is returned
}
此代码来自Web备忘单 ,其中包含您可能需要使用的更多脚本。 有些甚至比这短。
接下来是继续传递此值。 简单urlencode返回值(这样就很安全),并执行以下操作:
// This sends them to your login script and
// adds the page they were heading to in the url to access with $_GET[];
header ("Location: $yourLoginPageUrl?sendBackTo=$returnedPageUrl");
现在您可以做两件事。 不安全的做法是不执行任何操作,让他们登录,然后在登录脚本上使用$ _GET ['sendBackTo']简单访问该值; 由于URL在提交表单时具有其中的值,因此自从其引用页面以来,URL应该仍然可以访问。 不过不推荐。 明智的做法是在登录表单上使用隐藏的文本字段,然后将URL回显到该位置即可。 成功登录后,将其发送给它。
您仍然需要处理没有记录的URL的捕获登录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.