在PHP中登录后重定向

时间:2011-01-25 04:50:40

标签: php

我有这样的场景。当管理员从客户端收到有关带有指向PHP表单页面的URL链接的订单的邮件时,只能通过管理员登录访问。如果管理员未登录,则URL将重定向到登录页面。管理员成功登录后,我需要将他重定向到他在电子邮件中收到的URL。

任何人都可以告诉我该怎么做。我读了一些关于HTTP_REFERER的内容,但它没有正常工作,好像管理员没有登录,它直接重定向到login.php

请帮我解决问题

由于

3 个答案:

答案 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