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

14

我正在尝试使用header()函数创建重定向,并且希望显示错误消息。目前,我是通过URL作为参数发送消息,但这使得页面看起来很丑陋。

是否有一种方法可以将该值作为POST变量传递?

感谢任何建议。

谢谢。


也许如果你只是编码参数,GET方法并不那么丑陋 :) - Young
4个回答

25

Dan,你可以在PHP中启动并存储一个会话,然后将消息保存为会话变量。这样可以避免你必须通过HTTP请求传输消息。

操作会话

//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


3
函数用于向用户发送HTTP响应头,因此您不能使用它来创建请求头:(

一种可能性是使用CURL,但我认为这不值得您所做的。


0

假设您可以本地访问显示错误的页面,而不是重定向,您可以将其包含在导致错误的页面中,然后以编程方式显示错误消息。

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

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


这个问题特别关注的是如何将变量传递到另一个页面,而不是关于“如何显示错误”的问题。 - Rusty

0
在模块之间传递变量时,我发现更容易从这些变量构建一个数组,将该数组转换为json并将其存储在具有两个列(一个varchar键和一个文本数据)的数据库表中。json将进入数据列,而键可以是任何你想要的内容。然后在目标模块中,您只需读取它,将json转换回数组,就可以得到您的变量。没有$_POST,没有$_SESSION,没有麻烦,快速简便。当然,这假设您可以访问数据库,尽管您可以使用服务器上的文件。$_POST是无用的,因为它需要一个
,而$_SESSION可能会出问题,并导致意外结果。否则,您几乎必须使用ajax。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接