表单提交重定向问题


Form Submission Redirect Issue

不工作…我补充了以下内容:您的询价已发出!

';头(地点: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>';
    }
}