spot_img
HomeWordPress教程wordpress建站公司 什么是随机数以及如何在 WordPress 中将其与 Ajax 一起使用?

wordpress建站公司 什么是随机数以及如何在 WordPress 中将其与 Ajax 一起使用? [duplicate]

JasperAI 10000字免费额度试用

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

步骤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' );

第2步: 在 ajxfile.js 中像这样使用 ajax:

$( 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");
                        }
        });
});

});

第 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>

每次有人点击链接时,它都会成功提醒“它正在工作”声明。 现在我想检索该数据并将其添加到用户元中。 但这让我感到困惑。 那个 nonce 是什么东西? 谁能指导我正确的方向?

高质量外链购买

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

什么是随机数?

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

nonce 是一个“使用一次的数字”,有助于保护 URL 和表单免受某些类型的滥用、恶意或其他形式的滥用。 WordPress 随机数不是数字,而是由数字和字母组成的散列。 它们也不是只使用一次,而是有一个有限的“生命周期”,之后它们就会过期。

如何使用它?

  1. 首先我们需要正确使用添加我们的js文件 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 的所有页面上。

  1. 现在我们需要使用 wp_localize_script() 声明我们的变量,在这里我们添加我们的随机数以在函数中使用它。

     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')
         ));
     }
    

我们成功注册并本地化了我们的脚本。

  1. 请务必在您的 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...
             }
         },
     } );
    
  2. 现在我们想将我们的函数与我们的脚本绑定。 所以我用这个

     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 钩子绑定我们的函数。 第二个钩子在用户登录时触发,第一个钩子在用户未登录时触发。

  1. 我们的功能是这样的

     function custom_php_ajax_function() {
         // Check for nonce security      
         if ( ! wp_verify_nonce( $_POST['nonce'], 'ajax-nonce' ) ) {
             die ( 'Busted!');
         }
     }
    

我们的函数将检查 ajax 数据是否正在发送 nonce 隐藏数据与其他参数。 如果没有,那么它将引发错误。 这确实有助于防止 ajax 攻击。 Nonce data 是一个隐藏值,必须需要和其他参数一起发送。

如何检查它是否工作?

  • 消除 'nonce' => wp_create_nonce('ajax-nonce')
    wpdocs_theme_name_scripts() 并点击链接。 它会显示一个错误。
  • 现在从我们的功能中删除安全检查并单击链接。 它会起作用。

这表明如果没有随机数数据,我们的随机数安全检查功能将永远无法工作。 它是隐藏的,所以没有人可以使用它。 如果没有人知道,那么无论他们运行该 ajax 多少次,我们的功能都不会响应他们。

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

WordPress建站服务
5分钟生成10篇英文软文article forge软件试用
siteground guangda
WordPress花园官方账号
WordPress花园隶致力于为广大跨境电商和独立站爱好者提供优质的WordPress教程、Woocommerce教程、Facebook、Twitter、tiktok、Instagram教程和谷歌SEO教程等资料和对应的建站推广服务。关注‘哟派出海’公众号了解最新资讯。粉丝福利:Shopline免费独立站建设14天优惠 商务合作: [email protected]
RELATED ARTICLES
spot_img