在PHP中登录后重定向回

在PHP中登录后重定向回,php,Php,我有这样一个场景。当管理员收到来自客户端的关于订单的邮件时,该邮件带有指向PHP表单页面的URL链接,只有管理员登录才能访问该页面。如果管理员未登录,url将重定向到登录页面。管理员成功登录后,我需要将他重定向到他在电子邮件中收到的URL 谁能告诉我怎么做吗。我读了一些关于HTTP_REFERER的文章,但是它没有正常工作,好像管理员没有登录一样,它直接重定向到login.php 请帮我解决这个问题 谢谢在重定向到login.php之前,存储此人试图访问的页面的URL。您可以将其存储在会话变量或

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

谁能告诉我怎么做吗。我读了一些关于HTTP_REFERER的文章,但是它没有正常工作,好像管理员没有登录一样,它直接重定向到login.php

请帮我解决这个问题


谢谢

在重定向到login.php之前,存储此人试图访问的页面的URL。您可以将其存储在会话变量或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']);

在重定向到login.php之前,存储此人试图访问的页面的URL。您可以将其存储在会话变量或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']);

您的登录页面可以有一个隐藏的输入:

<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />

上面是伪代码,顺便说一句,您的登录页面可以有一个隐藏的输入:

<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" />

以上是伪代码,顺便说一句,请尝试在这里给出一些示例:

原始页面.php

if(!is_admin) {
    $_SESSION["originatingpage"] = $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
    header('Location: http://'.$_SERVER["HTTP_HOST"].'/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
  } 
}
login.php

if(!is_admin) {
    $_SESSION["originatingpage"] = $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
    header('Location: http://'.$_SERVER["HTTP_HOST"].'/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
  } 
}

请尝试在这里给出一些示例:

原始页面.php

if(!is_admin) {
    $_SESSION["originatingpage"] = $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
    header('Location: http://'.$_SERVER["HTTP_HOST"].'/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
  } 
}
login.php

if(!is_admin) {
    $_SESSION["originatingpage"] = $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
    header('Location: http://'.$_SERVER["HTTP_HOST"].'/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
  } 
}

URL包含动态值,如ID。它可以随时更改,您能告诉我如何在登录前将URL存储在会话中吗?php callIt应该注意,我在回答中没有做特别出色的工作,
位置
标题应该是完全限定的(这意味着
http://host.com
除了扩展的
/path/to/script.php?args之外URL包含动态值,如ID。它可以随时更改,您能告诉我如何在登录前将URL存储在会话中吗。php callIt应该注意,
位置
标题应该是完全限定的,而不是我在回答中做了特别出色的工作(这意味着
http://host.com
除了扩展的
/path/to/script.php?args之外