相关疑难解决方法(0)

check_ajax_referer()如何真正起作用?

Smart Wordpress的人说插件开发人员应该在每个AJAX请求中使用一个nonce,这个请求从页面发送回wordpress博客(admin-ajax.php).

这是通过(1)在服务器端生成随机数来完成的

$nonce = wp_create_nonce  ('my-nonce');
Run Code Online (Sandbox Code Playgroud)

...(2)使该随机数可用于发送AJAX请求的Javascript代码.例如,您可以这样做:

function myplg_emit_scriptblock() {
    $nonce = wp_create_nonce('myplg-nonce');
    echo "<script type='text/javascript'>\n" .
        " var WpPlgSettings = {\n" .
        "   ajaxurl : '" . admin_url( 'admin-ajax.php' ) . "',\n" .
        "   nonce : '" . $nonce . "'\n" .
        " };\n" .
        "</script>\n";
}
add_action('wp_print_scripts','myplg_emit_scriptblock');
Run Code Online (Sandbox Code Playgroud)

...然后(3)javascript ajax逻辑引用该全局变量.

    var url = WpPlgSettings.ajaxurl +
        "?action=my-wp-plg-action&" +
        "nonce=" + WpPlgSettings .nonce +
        "docid=" + id;

    $.ajax({type: "GET",
            url: url,
            headers : { "Accept" : 'application/json' },
            dataType: …
Run Code Online (Sandbox Code Playgroud)

ajax wordpress nonce

3
推荐指数
1
解决办法
6063
查看次数

标签 统计

ajax ×1

nonce ×1

wordpress ×1