我可以看到wp\\u nonce\\u字段在隐藏字段中生成一个值。
<input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" />
但据我所知,wp\\u verify\\u nonce没有使用该值,但我可能错了。
看起来它正在使用会话令牌进行验证。
$expected = substr( wp_hash( $i . \'|\' . $action . \'|\' . $uid . \'|\' . $token, \'nonce\'), -12, 10 );
if ( hash_equals( $expected, $nonce ) )
{ return 1; }
那么在隐藏字段中有值属性有什么意义呢?
最合适的回答,由SO网友:gmazzap 整理而成
TL;DR简而言之,wp_verify_nonce()
uses 该值是因为它期望该值作为其第一个参数。
wp_verify_nonce()
参数
wp_verify_nonce()
接收2个参数:
$nonce
$action
隐藏字段中的值(
\'cabfd9e42d\'
在您的示例中)表示
$nonce
.
第一个参数是nonce,它来自于请求,wp_verify_nonce()
必须这样使用:
// here I assume that the form is submitted using \'post\' as method
$verify = wp_verify_nonce($_POST[\'message-send\']);
所以第一个参数传递给
wp_verify_nonce()
正好是隐藏字段中存在的值。
第二个参数:thewp_create_nonce()
方法
关于第二个参数,它取决于如何构建nonce值。
E、 g.如果您这样做了:
<?php $nonce = wp_create_nonce( \'custom-action\' ); ?>
<input type="hidden" name="message-send" value="<?php echo $nonce ?>" />
然后,您需要执行以下操作:
$verify = wp_verify_nonce( $_POST[\'message-send\'], \'custom-action\' );
第二个参数是
wp_create_nonce()
.
第二个参数:thewp_nonce_field()
方法
如果使用
wp_nonce_field()
例如:
wp_nonce_field( \'another_action\', \'message-send\' );
然后需要验证nonce,如下所示:
$verify = wp_verify_nonce( $_POST[\'message-send\'], \'another_action\' );
所以,这次,动作是作为第一个参数传递给
wp_nonce_field()
.
重述以通过wp_verify_nonce()
验证您需要向函数传递两个参数,一个是nonce hidden字段中的值,另一个是action,这取决于nonce值的构建方式。