Cum să transmiți valoarea URL în jQuery ajax în WordPress

6 iun. 2017, 11:09:03
Vizualizări: 19.6K
Voturi: 2

Sunt nou în WordPress. Am un cod jQuery ca acesta... în fișierul meu 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("Autentificare reușită");
       console.log('true');
      }
      else{
       jQuery("div#result").css('display', 'inline', 'important');
       jQuery("div#result").html("Nume de utilizator sau parolă incorectă");
      }

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

și aici este codul php în același fișier (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';
      }

Nu reușesc să trimit cererea către server, primesc eroare 404.

Ce fac greșit?

3
Comentarii

Bună. Încerci să accesezi site-ul tău folosind www.example.com?name=Jay&pws=kapoor? Încearcă să adaugi o bară oblică înainte: www.example.com/?name=Jay&pws=kapoor. Asta te-ar putea salva de la o eroare 404.

Johansson Johansson
6 iun. 2017 11:39:11

Dacă primești o eroare 404, înseamnă că poți trimite o cerere către server. Dar se pare că este o cerere invalidă.

cjbj cjbj
6 iun. 2017 11:54:13

întrebarea mea era cum să leg fișierul php.. adică ce URL ar trebui să furnizez în URL-ul AJAX

Jay Kapoor Jay Kapoor
6 iun. 2017 12:36:14
Toate răspunsurile la întrebare 1
4

URL-ul Ajax ar trebui să fie setat la wp-admin/admin-ajax.php deoarece cererile Ajax ar trebui gestionate prin intermediul wp-admin/admin-ajax în WordPress. Dacă variabila ajaxurl nu este definită, o puteți obține definind atributul HTML data-url ca 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("Autentificare reușită");
             console.log('true');
         }else{
            $("div#result").css('display', 'inline', 'important');
            $("div#result").html("Nume de utilizator sau parolă incorectă");
         }

       } 
    });
  });
});

Acum creați funcția Ajax ca mai jos:

function user_login(){


   //faceți operațiunile necesare aici
    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>Autentificare reușită</span>'; exit(); 
    } else if(count($result) < 1) {
     echo 'false'; exit(); }
}

Acum funcția Ajax ar trebui conectată la hook-urile wp_ajax_* și wp_ajax_nopriv_*. Aici, * reprezintă valoarea acțiunii dumneavoastră, adică data.action, deci va deveni:

 add_action('wp_ajax_nopriv_check_user_login','user_login');
 add_action('wp_ajax_check_user_login','user_login');
6 iun. 2017 12:34:28
Comentarii

Încearcă să pui acest cod în fișierul tău functions.php ini_set('display_errors', 1); și verifică în consolă dacă este afișat vreun mesaj de eroare. Asta e tot pentru astăzi. Mult succes :)

Bikash Waiba Bikash Waiba
6 iun. 2017 14:26:10

cred că interogarea ta SQL ar trebui să aibă user_login în loc de user_email, deoarece iei ca input numele de utilizator, nu email-ul, dacă folosești tabelul implicit wordpress wp_users

Bikash Waiba Bikash Waiba
6 iun. 2017 14:45:19

poți să-mi spui cum să compar parola hash-uită din wordpress.

Jay Kapoor Jay Kapoor
7 iun. 2017 07:06:49

Accesează acest [link]https://codex.wordpress.org/Function_Reference/wp_hash_password aici, mergi la exemplu pentru a vedea cum ar trebui folosită. Sper că funcționează pentru tine. Nu știu ce faci, dar poți folosi sistemul de autentificare integrat în loc să-ți creezi propriul sistem de login.

Bikash Waiba Bikash Waiba
7 iun. 2017 08:25:20