用户点击了链接
HTTP :: //www.myapp.com/anypage.php 他没有登录,那么他应该重定向到
http://www.myapp.com/login.php
成功登录后如何将他重定向回http://www.myapp.com/anypage.php
我这样做
if (strpos($_SERVER["HTTP_REFERER"],'myapp.com') !== false && strpos($_SERVER["HTTP_REFERER"],'login') !== false) {
//echo found
//$this->redirect($_SERVER["HTTP_REFERER"]);
}
我知道这个错误,但我找不到其他解决方案,因为我会将HTTP_REFERER读到登录页面
答案 0 :(得分:1)
登录后,您可以将http标头更改为其他位置以创建重定向。
if(Successful Login) {
header("location: success.php");
exit(); //to stop script
}
else { //unsuccessful
header("location: login.php");
exit();
}
只需确保此代码在任何html标记之前,或在使用php回显/打印任何内容之前。
要让脚本重定向到用户在会话到期之前所在的页面,请将上述内容与以下内容结合起来:
下一行代码必须在你检查脚本超时的时候。
获取当前页面并将其存储在会话中:
$_SESSION['page'] = __FILE__;
在我们检查登录是否已过期的脚本部分中,该部分必须在上面的代码行之前,我们可以从“'页面”中删除最后一页的内容。会话中的字段,并将其在查询字符串中传递回登录页面。这意味着如果用户再次成功登录,您可以从查询字符串中提取他们所在的页面并从中重定向。
检查超时
if(user login is timed out) {
$header = "login.php?redirect=".$_SESSION['page']; //won't have been changed to the current page yet.
header("location: ".$header);
}
在login.php或您的登录页面上,检查查询字符串中是否设置了重定向字段。如果是,您可以将其添加为表单中的隐藏字段
if(isset($_GET['redirect'])) {
echo "<input name='redirect' type='hidden' value='".$_GET['redirect']."' />";
}
最后,在验证登录信息的脚本上,您可以查看重定向字段是否存在或设置。
如果你发布了表格,你可以这样做:
//Validate login
if(valid login) {
//check if redirect was set
if(isset($_POST['redirect'])) {
header("location: ".$_POST['redirect']);
exit();
}
else
//go to normal landing page
}