一页上可以有多个现时词吗?

时间:2015-01-31 作者:William Turrell

我有一个带有页面的网站,其中侧边栏中有一个表单,页面主体中有一个表单。提要栏在HTML中位于第一位。

两种形式都有自己的nonce(使用wp_nonce_field) 使用不同的$action和$name参数。$referer字段已打开。

当我提交第二份表格时,我通常会听到“你确定要这样做吗?”消息

如果我删除第一个表单,事情就会正常运行。

我添加了一些调试到wp_verify_nonce (var\\u dump语句和出口;)在一个空的$nonce和第一个表单(即我尚未提交的表单)的$操作之后,它将失败

$\\u POST包含第二个表单的所有内容,如您所料。

有什么想法吗?

1 个回复
SO网友:William Turrell

事实证明,这是我自己代码中一个非常简单的bug。

问题是,我的第一个表单是用一个简单的:

if ( \'POST\' == $_SERVER[\'REQUEST_METHOD\'] ) {
因此,即使在提交其他表单时,它也会被触发wp_verify_nonce() 检查将失败,然后它将调用wp_nonce_ays.

为了修复,我将此添加到条件:

and isset( $_POST[\'sidebar_form_wpnonce\'] ) 
因此,是的,每页可以有多个表单/nonce。

结束