我正在尝试使用header()函数来创建重定向。我想显示一条错误消息。目前我通过URL将消息作为参数发送,但这使它看起来很丑陋。
有没有办法将此值作为post变量传递?
任何建议表示赞赏。
感谢。
答案 0 :(得分:21)
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
答案 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。