PHP - 使用header()传递POST变量?

时间:2010-03-15 12:58:06

标签: php post redirect header

我正在尝试使用header()函数来创建重定向。我想显示一条错误消息。目前我通过URL将消息作为参数发送,但这使它看起来很丑陋。

有没有办法将此值作为post变量传递?

任何建议表示赞赏。

感谢。

4 个答案:

答案 0 :(得分:21)

Dan,您可以在PHP中启动并存储会话,然后将该消息另存为会话变量。这使您不必在HTTP请求中传输消息。

操纵Sessions

//Start the session
session_start();

//Dump your POST variables
$_SESSION['POST'] = $_POST;

//Redirect the user to the next page
header("Location: bar.php");

现在,在bar.php内,您可以通过重新启动会话来访问这些POST变量。

//Start the session
session_start();

//Access your POST variables
$temp = $_SESSION['POST'];

//Unset the useless session variable
unset($_SESSION['POST']);

要了解有关会话的更多信息,请查看:http://php.net/manual/en/function.session-start.php

答案 1 :(得分:3)

标头函数用于将HTTP响应标头发送回用户,因此实际上您无法使用它来创建请求标头:(

一种可能性是 use the CURL ,但我认为这不值得您做什么。

答案 2 :(得分:0)

如果您对显示错误的页面具有本地访问权限,则可以将其包含在导致错误的页面中,然后以编程方式显示错误消息,而不是重定向。

if(something_went_wrong()) {
  require_once('errors.php');
  display_error('something really went wrong.');
  }

errors.php文件将包含display_error($message)的定义,该定义显示格式化的消息。

答案 3 :(得分:0)

在模块之间传递变量时,我发现从变量构造数组更容易,将数组转换为json并将其存储在具有两列(varchar键和文本数据)的db表中。 json将输入数据,并且密钥可以是您想要的任何东西。然后,在目标模块中,您只需将其读回,将json转换回数组,瞧,您就有了变量。没有$ _POST,没有$ _SESSION,没有大惊小怪,没有头脑,快速又容易。当然,尽管您可以使用服务器上的文件,但前提是您有权访问数据库。 $ _POST是无用的,因为它需要a,而$ _SESSION可能会胡思乱想并可能导致意外结果。否则,您几乎必须使用ajax。