什么是随机数,以及如何在WordPress的AJAX中使用它?

时间:2016-07-08 作者:Ramesh Pardhi

我正在努力学习如何以正确的方式在WordPress中使用Ajax。这是我学到的:

Step 1: 创建Ajax文件并使用wp_enqueue_script.

function wpdocs_theme_name_scripts() {
    wp_enqueue_script( \'script-name\', get_stylesheet_directory_uri() . \'/js/ajxfile.js\', array(), \'1.0.0\', true );
}
add_action( \'wp_enqueue_scripts\', \'wpdocs_theme_name_scripts\' );
Step 2: 在ajxfile中这样使用ajax。js公司:

$( document ).ready(function() {

$(\'#id\').on(\'click\',function (e){       
    alert("Its Working");
    var up = 1;
    var id = $( "#id" ).data( "user_id" );
    $.ajax({
            type: "POST",
                url: "runcode.php",
                data: {up:up, id:id},
                success:
                    function(result){
                alert("result");
                        }
        });
});

});
STEP 3: 在页面中添加HTML:

  <a href="#" id="id" data-user_id="<?php echo $user_id = get_current_user_id(); ?>" 
  data-post_id="<?php echo $post_id = get_the_ID(); ?>">
         <i class="fa fa-thumbs-up" aria-hidden="true"></i>
  </a>
每次有人点击链接时,它都会成功地发出警报“其工作”语句。现在,我想检索该数据并将其添加到user meta中。但这让我很困惑。那个暂时的东西是什么?有人能指引我正确的方向吗?

1 个回复
最合适的回答,由SO网友:Ramesh Pardhi 整理而成

现在我明白了!WordPress真是太棒了。也谢谢你,你的建议对我很有帮助。我试图用我的话来解释它。如果我错了,请纠正我。

What is nonce?

Nonce类似于安全哈希,用于防止攻击和错误。它创建唯一标识符来检查ajax请求是否来自网站。在WordPress中

nonce是一个;“使用一次的编号”;帮助保护URL和表单免受某些类型的恶意或其他滥用。WordPress noncesaren不是数字,而是由数字和字母组成的散列。它们也不是只使用一次,而是有一个有限的;“寿命”;然后他们就开火了。

How to use it?

<首先,我们需要使用wp_enqueue_script(). 类似这样:

 function wpdocs_theme_name_scripts() {
     wp_enqueue_script( \'script-name\', get_stylesheet_directory_uri().
         \'/js/ajxfile.js\', array(), \'1.0.0\', true );
 }
 add_action( \'wp_enqueue_scripts\', \'wpdocs_theme_name_scripts\' );
我们注册ajxfile.js 文件名为script-name. 现在它已加载到wordpress的所有页面。

现在我们需要使用wp_localize_script() 为了声明变量,我们在函数中添加了nonce。

 function wpdocs_theme_name_scripts() {
     wp_enqueue_script( \'script-name\', get_stylesheet_directory_uri() . 
         \'/js/ajxfile.js\', array(), \'1.0.0\', true );
     wp_localize_script(\'script-name\', \'ajax_var\', array(
         \'url\' => admin_url(\'admin-ajax.php\'),
         \'nonce\' => wp_create_nonce(\'ajax-nonce\')
     ));
 }
我们成功注册并本地化了脚本。

确保在ajax调用中传递nonce数据ajxfile.js:

 /* global ajax_var */
 $.ajax( {
     url: ajax_var.url,
     type: \'post\',
     data: {
         action: \'custom_script_name\',
         nonce: ajax_var.nonce,   // pass the nonce here
         moredata: \'whatever\',
     },
     success( data ) {
         if ( data ) {
             // etc...
         }
     },
 } );
现在我们想用脚本绑定函数。所以我用了这个

 add_action(\'wp_ajax_nopriv_custom_script_name\', \'custom_php_ajax_function\');    
 add_action(\'wp_ajax_custom_script_name\', \'custom_php_ajax_function\');
我们正在使用wp_ajax_nopriv_ &;wp_ajax_ 用wordpress挂钩绑定我们的函数。第二个钩子在用户登录时触发,第一个钩子在用户未登录时触发。

我们的功能是

 function custom_php_ajax_function() {
     // Check for nonce security      
     if ( ! wp_verify_nonce( $_POST[\'nonce\'], \'ajax-nonce\' ) ) {
         die ( \'Busted!\');
     }
 }
我们的函数将检查是否正在发送ajax数据nonce 使用其他参数隐藏数据。如果没有,那么它将触发一个错误。这确实有助于防止ajax攻击。Nonce 数据是隐藏值,必须与其他参数一起发送。

How to check if it is working or not?

<移除\'nonce\' => wp_create_nonce(\'ajax-nonce\') 从…起wpdocs_theme_name_scripts() 然后单击链接。它将显示错误

对不起,我的英语不好,解释不好。只是想帮忙。如果我遗漏了什么或做错了什么,请告诉我。

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i