WP如果用户刷新则插入帖子覆盖新帖子

时间:2011-02-09 作者:Robin I Knight

WP Insert Post是一个非常简单易用的函数。目前,我已将其设置为由用户是否在预订过程中登录触发的事件,以在其自己的页面中批准其预订。我担心的是,如果用户刷新或返回并再次提交页面,他们最终会有2次预订。

所以我希望阻止这种情况发生。我的一个想法是使用在创建新预订页面时创建的会话。然后,该会话在insert post数组中填充字段ID=>。这样就可以在现有帖子中隐藏信息。如果会话没有任何价值,也就是说,尚未进行预订,那么它将依赖于ID的默认值,即wordpress创建。

这行得通吗?如果不行,有人知道可能的方法吗。

非凡的

3 个回复
SO网友:hakre

在wordpress中,您可以使用所谓的nonce:WordPress Nonces (Codex)

在表单中添加nonce,发送时检查nonce是否正确。下次提交表单get时,nonce不再正确,因此如果检查是否正确,可以防止再次将数据重放到系统中。

在这里,您可以找到一个分步描述和示例代码:Improving security in WordPress plugins using Nonces.

SO网友:Peter Rowell

我不确定我是否完全理解你的问题。防止意外重新提交的一种常见方法是让处理帖子的代码在成功完成后重定向到“正常”URL。如果用户点击reload,那么他们得到的只是一个普通页面的重新加载。

SO网友:Robin I Knight

如果有人感兴趣,我会解决的。

步骤1::在预订的接收页面(最后一页)

<?php  
$thispostID = $post->ID; ?>
<?php  session_start();
$_SESSION[\'booking-id\'] = $thispostID; ?>
这将存储由wp insert post创建的页面的ID。如果页面加载花费了很长时间,或者客户端感到厌烦/认为有问题,然后按下后退按钮,那么这段代码位于页面顶部的事实意味着新的帖子ID已被获取。

在创建新预订并让wp insert post功能将其添加到数组的中间页面上。

\'ID\' => $_SESSION[\'booking-id\'],
然后,为了确保会话ID不会影响未来的预订,请在初始预订页面上添加以下内容。

$_SESSION[\'booking-id\'] = \'\';
这样,如果中间页面wordpress没有值,它将默认并创建一个新id。

如果将来有人遇到这样一个模糊的问题,我就是这样解决的。

结束

相关推荐

使用unctions.php在页面上发布帖子

嘿,伙计们,我有一个叫做日记的页面,我想从一个特定的帖子类别中过滤我的所有帖子。我创建了一个函数,但不确定如何执行。我尝试了get\\u post etc,但它抛出了一个格式错误,现在也确定了我应该输入什么。我意识到我可以在主模板标记中执行此操作,但如果可能的话,我宁愿使用函数。function JournalPage() { if(is_page(\"Journal\")) { } } add_filter(\'the_content\',