没有用......我添加了以下内容: 您的询问已经发送!
'; header('Location:index.php');死 (); }
index.php code
<?php
if (isset($_SESSION['success'])) {
echo($_SESSION['success']);
unset($_SESSION['success']);
}
?>
&GT;
答案 0 :(得分:1)
重定向后,您的页面无法再显示任何内容。
无论您要显示什么消息,现在都必须驻留在他们发送到的页面上,在您的情况下为index.php
。
PS 同样适用于相反的情况:一旦您向浏览器发送了任何信息(通过echo
,print_r
,var_dump
或其他任何信息方式)你不能再重定向它们了。
答案 1 :(得分:0)
首先,请始终if
语句块。你会避免太多的痛苦。
if ($sent) {
header('Location: index.php');
}
其次,通过更改标题,您将用户重定向到其他页面。执行当前脚本停止,然后执行index.php
,因此永远不会执行您的print语句。
如果要显示消息,则需要以跨请求的方式存储消息。一种方法是在表单提交脚本时使用$_SESSION
超全局(see here for more info),然后在index.php中显示$_SESSION
中存储的内容。这样的事情可能有效:(警告:在浏览器中编码。使用风险自负。)
//in your form processing code
if ($sent) {
$_SESSION['success'] = '<p class="error">Your inquiry has been sent!</p>';
header('Location: index.php');
}
//in index.php
//render your page
if (isset($_SESSION['success']) {
echo($_SESSION['success']);
unset($_SESSION['success']);
}
答案 2 :(得分:0)
试试这个::
if($sent)
{
header('Location: index.php?e=inquiry_sent');
exit();
}
请务必在发送表单后显示消息:
if (isset($_GET['e']))
{
if ($_GET['e'] == "inquiry_sent")
{
print '<p class="error">Your inquiry has been sent!</p>';
}
}