描述
此函数确保用户打算执行给定的操作,这有助于防止点击劫持式攻击。它验证的是意图,而不是授权,因此它不验证用户的能力。应使用current_user_can()
或类似工具执行此操作。
如果nonce值无效,函数将以“Are You Sure?”样式的消息退出。
参数
- $action
-
(int|string) (可选) Nonce 动作
默认值: -1
- $query_arg
-
(string) (可选) 在
$_REQUEST
中检查nonce的键。默认值: '_wpnonce'
返回
(int|false) 如果nonce有效并且在0-12小时之前生成返回1,如果nonce有效并且在12-24小时之前生成返回2。如果nonce无效,则为False。
说明
- 在没有 $action 参数的情况下使用该函数已经过时了,从3.2版本开始,如果 WP_DEBUG 被设置为 true,该函数将以适当的信息 die("你应该通过使用第一个参数来指定一个要验证的nonce动作。" 这是默认的)。
- 从2.0.1开始,只有在没有指定
$action
参数(或设置为默认的-1)的情况下才会检查引用,作为不使用 nonce 的向后兼容性。对于不可靠的引用,nonce 更受欢迎,在指定了$action
后,该函数的行为与 wp_verify_nonce() 相同,只是在调用 wp_nonce_ays() 后,如果 nonce 无效或未被发送,则会 die。
源码
更新日志
版本 | 描述 |
---|---|
2.5.0 | 添加了$query_arg 参数 |
1.2.0 | 开始引入 |
使用示例
插件选项页面中的用法
下面是一个示例,说明如何在插件的选项页面中使用它。使用wp_nonce_field()函数将nonce添加到表单:
<form method="post"> <!-- some inputs here ... --> <?php wp_nonce_field( 'name_of_my_action','name_of_nonce_field' ); ?> </form>
然后,在表单提交到的页面中,您可以验证表单是否已提交,如果表单已成功提交,则更新值:
<?php // if this fails, check_admin_referer() will automatically print a "failed" page and die. if ( ! empty( $_POST ) && check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' ) ) { // process form data, e.g. update fields } // Display the form
注意 – 过时用法
如果未验证管理引用,则脚本将终止。
<?php check_admin_referer(); ?>