如何使用PHP避免Page Reload Resend-Data消息

时间:2009-08-17 22:05:32

标签: php

我对PHP比较陌生,所以如果答案很简单,我很抱歉。洛尔

我写了一个简单的联系我们电子邮件表格(实际上是一个WordPress页面模板文件)。所有代码都在一个文件中。

用户提交表单并发送电子邮件后,该文件会生成一条感谢信息。

如果用户重新加载“谢谢”页面,系统会提示他们“重新发送表单数据”,这就是我提出这个问题的原因。

我的问题:如何避免重新发送表单数据的提示,并将所有代码(包括Thank You数据)保存在一个文件中?

编辑:我见过人们使用标题(位置:),但如果我想将所有代码保存在一个文件中,我认为这不会起作用。

6 个答案:

答案 0 :(得分:10)

您可以重定向到其他查询。

header("Location: ?page=thankyou");

然后,您甚至不需要检查POST数据是否已发送。如果页面等于谢谢,只需显示感谢页面。

答案 1 :(得分:3)

这对我有用,它可以放在html文件中的任何地方,而不仅仅是以header()函数开头:

<?php
if (!empty($_POST)){
?>
    <script type="text/javascript">
        window.location = window.location.href;
    </script>
<?php } ?>

我将它放入prevent_resend.php中,然后在postdata处理完成后将其包含在内。

// ... save data from $_POST to DB
include('prevent_resend.php');
// ... do some other stuff

答案 2 :(得分:0)

您可以使用javascript发布表单并显示感谢信息。这样浏览器永远不会离开页面。

答案 3 :(得分:0)

即使有标题('Location:xxx');您仍然可以将其重定向到同一页面,并设置url参数或会话变量以区分应显示的内容。

答案 4 :(得分:0)

虽然我质疑您要求将所有代码放在一个文件中(为什么不能将它分开,并使用require_once来包含共享库代码?),header('Location:')技术仍然完全有效。只需:

header('Location: http://www.example.com/path/to/my-one-file-of-code.php?thankyou=1');

然后,在您的文件中,您可以:

if (isset($_GET['thankyou']) && $_GET['thankyou']) {
    // Do whatever it is you do to thank the visitor.
}

答案 5 :(得分:0)

这对我有用:

header("Location: #");