当前浏览:首页 / WordPress函数 / check_admin_referer()

check_admin_referer( int|string $action = -1, string $query_arg = '_wpnonce' )

通过验证用户是从另一个具有正确安全nonce的管理页面转来的,以确保其意图

adminmore...

check

referer


描述

此函数确保用户打算执行给定的操作,这有助于防止点击劫持式攻击。它验证的是意图,而不是授权,因此它不验证用户的能力。应使用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开始引入

使用示例

  • 示例1

    插件选项页面中的用法

    下面是一个示例,说明如何在插件的选项页面中使用它。使用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
    
  • 示例2

    注意 – 过时用法

    如果未验证管理引用,则脚本将终止。

    <?php check_admin_referer(); ?>