防止联系人表单插件上的表单重新提交

时间:2016-11-22 作者:dtx

我已经为客户构建了一个“获取报价”插件;基本上是一个带有一些额外字段和一些数学的联系表单。

此表单嵌入在登录页中,提交后会替换为一个图形,上面写着“谢谢,我们很快就会联系到报价”。

为此,我使用以下结构:

<div>
  <?php if( !isset( $submission_message ) || $submission_message == \'\' ): ?>
    <?php include(\'form.php\'); ?>
  <?php endif; ?>
  <?php if( isset( $submission_message ) || $submission_message != \'\' ): ?>
    <div>
      <h1>Thank You!</h1><br/>
      <p><?php echo $submission_message; ?></p>
    </div>
  <?php endif; ?>
</div>
我认为通过include语句引入联系人表单会关闭表单重新提交问题,但事实并非如此。

我做了一些研究,发现我必须实现post/redirect/get模式,但我希望避免完全重定向,即避免将用户发送到完全不同的页面。相反,我想隐藏表单并显示“谢谢”消息。

我已经在其他网站上看到了这一点,但不知道如何在这里继续。

1 个回复
SO网友:jgraup

您可以设置wp_nonce_field 充当一次性令牌。那么你可以wp_verify_nonce 以确保请求的操作与令牌匹配。

更理想的方法是使用AJAX solution 并使用javascript提交+响应。这将允许您留在页面上并显示/隐藏所需的元素,而无需服务器重新呈现页面。

相关推荐

使用WPForms提交表单时触发操作

我的一位客户使用WPForms插件创建前端表单。提交表单时,条目进入de数据库(在单独的表wp\\u wpform\\u entries或类似的表中,全部由插件处理)。但他们也希望以JSON格式将所有数据发布到另一个网站。是否有办法知道表单已提交,或者使用add_filter(\'wp_insert_post)?