不工作…我补充了以下内容:您的询价已发出!
';头(地点:index . php);die ();}index.php code
<?php
if (isset($_SESSION['success'])) {
echo($_SESSION['success']);
unset($_SESSION['success']);
}
?>
?>
一旦你重定向了他们,你的页面就不能再显示任何东西了。
无论您想要显示什么消息,现在都必须驻留在它们被发送到的页面上,在您的示例中是index.php
。
注:同样适用于其他方式:一旦你发送任何信息到浏览器(通过echo
, print_r
, var_dump
或任何其他方式),你不能重定向他们了
首先,请始终,始终,始终将if
语句块用花括号括起来。你会避免很多痛苦。
if ($sent) {
header('Location: index.php');
}
其次,通过更改标题,您将用户重定向到另一个页面。当前脚本停止执行,然后执行index.php
,因此您的print语句永远不会执行。
如果您想要显示一条消息,您需要以一种跨请求持久存储它的方式。一种方法是在表单在脚本中提交时使用$_SESSION
超全局变量(更多信息请参阅此处),然后在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']);
}
试试这个::
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>';
}
}