web-dev-qa-db-fra.com

wp_verify_nonce ne retourne pas true sur le serveur quand il correspond à la nonce

$.ajax({
    type: "POST",
    dataType: "text",
    url: ajaxurl,
    data: {
            action: "more_news",
            nonce: nonce,
            offset: offset
    },
    success : function(data, textStatus, jqXHR){
        console.log( nonce );
        console.log( data );
        console.log( textStatus );
    }
});

La vérification de cette AJAX demande _ nonce fonctionne localement parfaitement. Comme on peut le voir ci-dessous, ma console affiche mon nonce "Awesome", puis "success".

9a91a5fdca
Awesome
success

Sur mon serveur, ma console imprime mon nonce deux fois (me prouvant ainsi qu’ils sont exactement les mêmes), puis le succès.

e2ca4eca80
e2ca4eca80
success

Je suis… confus… c'est le moins qu'on puisse dire. Comment est-ce possible? et comment puis-je le résoudre?

add_action( 'wp_ajax_more_news', 'more_news' );
add_action( 'wp_ajax_nopriv_more_news', 'more_news' );

function more_news(){
    if ( !wp_verify_nonce($_POST['nonce'], 'more_news_nonce') ){
        exit($_POST['nonce']);
    }
    echo 'Awesome';
    die();
}
1
zack

Le deuxième paramètre pour wp_verify_nonce() est l'action. Cette partie ne figure pas dans votre question, mais j'imagine qu'elle devrait s'appeler comme suit:

if ( !wp_verify_nonce($_POST['nonce'], $_POST['action']) ){
2
fuxia

cA devrait etre,

 data: {
        action: "more_news",
        nonce: <?php echo wp_create_nonce( 'saiful_create_nonce' ); ?>,
        offset: offset
},

et wp fonction

function more_news(){
  if ( ! check_ajax_referer( 'saiful_create_nonce', 'nonce' ) ){
    return false;
  }
 echo 'Awesome';
    die();
}
0
Saiful Islam

L'action n'est-elle pas la même que celle que vous avez envoyée?

    data: {
        action: "more_news",
        ...

   function more_news(){
      if ( !wp_verify_nonce($_POST['nonce'], 'more_news_nonce') ){
      ....

Je suppose que ça devrait être

   function more_news(){
      if ( !wp_verify_nonce($_POST['nonce'], 'more_news') ){
      ....
0
giacoder