我有这样的场景。当管理员从客户端收到有关带有指向PHP表单页面的URL链接的订单的邮件时,只能通过管理员登录访问。如果管理员未登录,则URL将重定向到登录页面。管理员成功登录后,我需要将他重定向到他在电子邮件中收到的URL。
任何人都可以告诉我该怎么做。我读了一些关于HTTP_REFERER的内容,但它没有正常工作,好像管理员没有登录,它直接重定向到login.php
请帮我解决问题
由于
答案 0 :(得分:3)
在重定向到login.php之前,存储该人尝试访问的网页的网址。您可以将其存储在会话变量或URL中。然后,您的login.php页面将知道用户登录后的发送位置。
例如,在需要登录的页面:
session_start();
$_SESSION['came_from'] = $_SERVER['REQUEST_URI'];
header("Location: login.php");
在login.php中,用户登录后:
session_start();
header("Location: http://" . $_SERVER['HTTP_HOST'] . $_SESSION['came_from']);
答案 1 :(得分:3)
试着在这里举一些例子:
<强> originating_page.php 强>
if(!is_admin) {
$_SESSION["originatingpage"] = $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
header('Location: http://'.$_SERVER["HTTP_HOST"].'/login.php');
}
}
<强>的login.php 强>
if(is_admin_success_login) {
if (isset($_SESSION["originatingpage"])) {
$originatingpage = $_SESSION["originatingpage"];
unset($_SESSION["originatingpage"]);
header('Location: http://'.$originatingpage);
} else {
//do another default action
}
}
答案 2 :(得分:0)
您的登录页面可以隐藏输入:
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />
或者在“原始页面中,您可以将当前的REQUEST_URI作为get变量传递,然后进入相同的表单元素。然后当他们提交表单时,您检查$_REQUEST['redirect_to']
并将其传递出去使用header()
。
...
if (logged in && redirect to is filled in){
header('Location: '.$_REQUEST['redirect_to']);
}
...
上面是伪代码,btw