表单提交重定向问题

时间:2011-09-13 03:37:47

标签: php html

没有用......我添加了以下内容:     您的询问已经发送!

';     header('Location:index.php');死 ();     }

index.php code

<?php
if (isset($_SESSION['success'])) {
echo($_SESSION['success']);
unset($_SESSION['success']);
}
?> 

&GT;

3 个答案:

答案 0 :(得分:1)

重定向后,您的页面无法再显示任何内容。

无论您要显示什么消息,现在都必须驻留在他们发送到的页面上,在您的情况下为index.php

PS 同样适用于相反的情况:一旦您向浏览器发送了任何信息(通过echoprint_rvar_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>';
    }
}