我有一个名为insert_comment.php的表单,它包含这个函数:
function died($error) { // if something is incorect, send to given url with error msg
header("Location: http://mydomain.com/post/error.php?error=" . urlencode($error));
die();
}
在代码中,$ error_message被发送到函数die,然后函数die将用户重定向到mydomain.com/post/error.php,我从URL获取错误消息:
$error = $_GET["error"];
echo 'some text '. $error .' sometext';
有没有办法使用POST重定向完成同样的事情?我不喜欢在URL中显示整个错误消息,它看起来非常难看。
答案 0 :(得分:3)
尽管使用POST可能会很复杂,但这是错误的策略,而不是POST请求的目的。
正确的策略是放置此信息into the session,然后从那里显示,然后在显示会话密钥时将其删除。
// session_start() must have been called already, before any output:
// Best to do this at the very top of your script
session_start();
function died($error) {
// Place the error into the session
$_SESSION['error'] = $error;
header("Location: http://mydomain.com/post/error.php");
die();
}
// Read the error from the session, and then unset it
session_start();
if (isset($_SESSION['error'])) {
echo "some text {$_SESSION['error']} sometext";
// Remove the error so it doesn't display again.
unset($_SESSION['error']);
}
完全相同的策略可用于在重定向后将其他消息(如操作成功)显示回用户。根据需要在$_SESSION
数组中使用尽可能多的不同键,并在向用户显示消息时取消设置。