Come passare il valore dell'URL in jQuery ajax in WordPress

6 giu 2017, 11:09:03
Visualizzazioni: 19.6K
Voti: 2

Sono nuovo in WordPress. Ho un codice jQuery come questo... nel mio file header.php.

jQuery(document).ready(function(){
   jQuery("#wp-submit").click(function(){  
      username=jQuery("#userName").val();
      password=jQuery("#passWord").val();
      jQuery.ajax({
       type: "POST",
       url: "<?php echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>",
      data: "name="+username+"&pwd="+password,
       success: function(html){    
      if(html=='true')    {
       jQuery("div#result").css('display', 'inline', 'important');
       jQuery("div#result").html("Accesso riuscito");
       console.log('true');
      }
      else{
       jQuery("div#result").css('display', 'inline', 'important');
       jQuery("div#result").html("Username o password errati");
      }

       } });
    return false;
  });
});

e qui c'è il codice php nello stesso file (header.php):

   <?php 
      $uName = $_POST['name'];
      $pWord = md5($_POST['pwd']);
      $results= $wpdb->get_results("select * from wp_users where user_email='".$uName."' and user_pass='".$pWord."'");
      if(count($results)==1)
      {
       echo 'true'; 
      }

      else {
        echo 'false';
      }

Non riesco a inviare la richiesta al server, ottengo un errore 404.

Cosa sto sbagliando?

3
Commenti

Ciao. Stai cercando di accedere al tuo sito web utilizzando www.example.com?name=Jay&pws=kapoor? Prova ad aggiungere una barra in avanti: www.example.com/?name=Jay&pws=kapoor. Questo potrebbe salvarti da un errore 404.

Johansson Johansson
6 giu 2017 11:39:11

Se ricevi un errore 404, sei in grado di inviare una richiesta al server. Ma apparentemente è una richiesta non valida.

cjbj cjbj
6 giu 2017 11:54:13

la mia domanda era come collegare un file php.. voglio dire quale URL dovrei fornire nell'URL ajax

Jay Kapoor Jay Kapoor
6 giu 2017 12:36:14
Tutte le risposte alla domanda 1
4

L'URL Ajax dovrebbe essere impostato su wp-admin/admin-ajax.php poiché le richieste Ajax devono essere gestite tramite wp-admin/admin-ajax in WordPress. Se ajaxurl non è definito, puoi ottenerlo definendo l'attributo HTML data-url come data-url="<?php echo get_admin_url().'admin-ajax.php'?>".

jQuery(document).ready(function($){
   $("#wp-submit").on('click',function(e){
      e.preventDefault();
      username = $("#userName").val();
      password = $("#passWord").val();
      ajaxurl  = $(this).data('url');
      $.ajax({

      type: "POST",
      url: ajaxurl,
      data : {

            name     : username,
            password : password,
            action   : 'check_user_login'

        },
       success: function(response){    
         if(response =='true')    {
             $("div#result").css('display', 'inline', 'important');
             $("div#result").html("Accesso Riuscito");
             console.log('true');
         }else{
            $("div#result").css('display', 'inline', 'important');
            $("div#result").html("Nome utente o password errati");
         }

       } 
    });
  });
});

Ora crea la tua funzione Ajax come segue

function user_login(){


   //fai le tue operazioni qui
    global $wpdb;
    $username=$_POST['name']; 
    $password=$_POST['password']; 
    $hash = md5($password);
    $query = $wpdb->prepare( "SELECT * FROM `wp_users` WHERE `user_email` = %s AND `user_pass` = %s", $username, $hash );
    $result = $wpdb->get_results($query);
     if (count($result)==1) { echo 'true';
     echo '<span>Accesso Riuscito</span>'; exit(); 
    } else if(count($result) < 1) {
     echo 'false'; exit(); }
}

Ora la funzione Ajax dovrebbe essere agganciata agli hook wp_ajax_* e wp_ajax_nopriv_*. Qui, * è il tuo valore di azione, cioè data.action, quindi diventa

 add_action('wp_ajax_nopriv_check_user_login','user_login');
 add_action('wp_ajax_check_user_login','user_login');
6 giu 2017 12:34:28
Commenti

Prova ad inserire questo codice nel tuo file functions.php ini_set('display_errors', 1); e controlla la console per vedere se viene visualizzato qualche messaggio di errore. È tutto per oggi. Buona fortuna :)

Bikash Waiba Bikash Waiba
6 giu 2017 14:26:10

penso che la tua query SQL dovrebbe avere user_login invece di user_email dato che stai prendendo l'input dell'username e non l'email, se stai usando la tabella predefinita wp_users di WordPress

Bikash Waiba Bikash Waiba
6 giu 2017 14:45:19

puoi dirmi come confrontare la password cifrata di WordPress.

Jay Kapoor Jay Kapoor
7 giu 2017 07:06:49

Vai a questo [link]https://codex.wordpress.org/Function_Reference/wp_hash_password qui, vai all'esempio per vedere come deve essere utilizzato. Spero che funzioni per te. Non so cosa stai facendo ma puoi utilizzare il sistema di login integrato invece di creare il tuo sistema di login.

Bikash Waiba Bikash Waiba
7 giu 2017 08:25:20