我对PHP比较陌生,所以如果答案很简单,我很抱歉。洛尔
我写了一个简单的联系我们电子邮件表格(实际上是一个WordPress页面模板文件)。所有代码都在一个文件中。
用户提交表单并发送电子邮件后,该文件会生成一条感谢信息。
如果用户重新加载“谢谢”页面,系统会提示他们“重新发送表单数据”,这就是我提出这个问题的原因。
我的问题:如何避免重新发送表单数据的提示,并将所有代码(包括Thank You数据)保存在一个文件中?
编辑:我见过人们使用标题(位置:),但如果我想将所有代码保存在一个文件中,我认为这不会起作用。答案 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: #");