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

check_ajax_referer( int|string $action = -1, false|string $query_arg = false, bool $die = true )

验证Ajax请求以防止处理博客外部的请求。

check

referer


参数

$action

(int|string) (可选) Nonce 动作

默认值: -1

$query_arg

(false|string) (可选) 检查在$_REQUEST中的nonce的键(自2.5起)。如果false,$_REQUEST值将预估为 “_ajax_nonce” 和 “_wpnonce”(按该顺序)。

默认值: false

$die

(bool) (可选) 当暂时无法验证时,是否提前die。

默认值: true


返回

(int|false) 如果nonce有效并且在0-12小时之前生成返回1,如果nonce有效并且在12-24小时之前生成返回2。如果nonce无效,则为False。


说明

不应依赖nonce进行身份验证、授权或访问控制。使用current_user_can()保护您的函数,并始终假设nonce可能受到损害。

此函数可通过插件替换。如果插件没有重新定义这些函数,那么将使用它。

如果未指定$query_arg(即默认为false),则函数将在'_ajax_nonce'中查找nonce。如果未设置该参数,则它将假设nonce在'_wpnonce'中,而不管该查询参数是否实际存在。

如果$die设置为true,如果无法验证nonce,则脚本的执行将停止,输出将为'-1'



源码

查看源码 官方文档


更新日志

版本描述
2.0.3开始引入

使用示例

  • 示例1

    示例
    在主文件中,按如下方式设置nonce:

    <?php
    //Set Your Nonce
    $ajax_nonce = wp_create_nonce( "wpdocs-special-string" );
    ?>
    
    <script type="text/javascript">
    jQuery(document).ready(function($){
    	var data = {
    		action: 'wpdocs_action',
    		security: '<?php echo $ajax_nonce; ?>',
    		wpdocs_string: 'Hello World!'
    	};
    	$.post(ajaxurl, data, function(response) {
    		alert("Response: " + response);
    	});
    });
    </script>
    

    在AJAX文件中,检查如下引用:

    /**
     * Check the referrer for the AJAX call.
     */
    function wpdocs_action_function() {
    	check_ajax_referer( 'wpdocs-special-string', 'security' );
    	echo sanitize_text_field( $_POST['wpdocs_string'] );
    	die;
    }
    add_action( 'wp_ajax_wpdocs_action', 'wpdocs_action_function' );