1

我目前正在使用 wordpress 3.5 并创建自己的页面模板。我在该模板中有自己的表单,当我单击提交按钮时,它已成功将数据保存到我的数据库中。不幸的是,当我在浏览器上单击 F5 或刷新按钮时,它会提示一个警报,提示如果我继续,将会提交双重表单。

通常我通过使用“提交后重定向到同一页面”技术来防止这种情况。但我不能使用 header("location: ") 进行重定向,因为它会生成错误:警告:无法修改标头信息 - 标头已由. 可能在其他 wordpress 文件上存在阻止重定向的回声。

有谁知道如何解决这个问题?或者有没有人知道除了重定向之外的其他技术来防止双重表单提交?

4

2 回答 2

1

我一直用 Javascript 来做这个:

<?php if(isset($_POST['submit_flag'])){ ?>

<script type='text/javascript'>
    window.location='URL';
</script>

<?php } ?>

但是现在我考虑了一下,您可以轻松地在主题的某个位置创建另一个 PHP 页面,该页面不包含在主题的其余部分中,以处理表单数据并重新定向回您的表单。

我也大约 98% 确定您可以包含 $wpdb 而无需发送标头,只需要求“wp-blog-header.php”。

于 2013-01-10T07:05:19.877 回答
0

除了在您的模板文件中没有输出。那会是什么?查看您网站的源代码,它只是您告诉 Wordpress 创建的内容。

所以这是第一个:您可以在首先调用的模板文件的顶部使用 header("Location: ") 。通常是 header.php。

其次,您可以(并且通常应该)使用钩子来处理表单。例如:

add_action( 'init', function() { 
    // Handle stuff
} );

但也许有不同的钩子(我不记得有任何最佳实践)。这里和那里的教程会给你建议。在这种情况下,您肯定会在有任何输出之前调用 header("Location: " )。你的主题甚至还没有涉及。

于 2013-01-10T05:00:19.923 回答