我目前正在使用wordpress 3.5并创建自己的页面模板。我在该模板中有自己的表单,当我单击提交按钮时,它已成功将数据保存到我的数据库中。不幸的是,当我在浏览器上单击F5或刷新按钮时,它会提示一个警告,如果我继续,将会提交双表格提交。
通常我通过使用“提交后重定向到同一页面”技术来防止这种情况。但是我不能使用标题(“location:”)来重定向,因为它会生成错误:警告:无法修改标题信息 - 已经由发送的标题。可能在其他wordpress文件上有回声阻止重定向。
有谁知道如何解决这个问题?或者有没有人知道其他技术来防止重定向旁边的双重表单提交?
答案 0 :(得分:1)
我总是使用Javascript完成此操作:
<?php if(isset($_POST['submit_flag'])){ ?>
<script type='text/javascript'>
window.location='URL';
</script>
<?php } ?>
但是现在我考虑一下,你可以轻松地在主题的某个地方创建另一个PHP页面,主题的其余部分不包括它来处理表单数据并重新指向表单。
我也有98%的人确信你可以通过简单地要求“wp-blog-header.php”来包含$ wpdb而不发送标题。
答案 1 :(得分:0)
模板文件中除了输出外没有输出。那会是什么?查看您网站的源代码,它只是您告诉Wordpress创建的内容。
所以这是第一个:您可以在首先调用的模板文件顶部使用标题(“Location:”)。通常是header.php。
其次,您可以(并且通常应该)使用钩子来处理表单。例如:
add_action( 'init', function() {
// Handle stuff
} );
但也许有一个不同的钩子(我不记得任何最佳做法)。这里和那里的教程会给你建议。在这种情况下,您肯定会在有任何输出之前调用header(“Location:”)。你的主题还没有涉及。