Jquery Validation - Provjera username + password

Pozdrav,

imam jedan problem kod jQuery validacije. Koristim skriptu jQuery Validation -
http://docs.jquery.com/Plugins/validation
i kod prijave korisnika bi prilikom upisivanja lozinke trebalo paralelno provjeravati i korisničko ime koje se veže s tom lozinkom.

rules:{
  login_name:{required:true,rangelength:[3, 80],remote:'ajax.php?action=checkName'},
  login_pass:{required:true,rangelength:[4, 15],remote:'ajax.php?action=checkPass'}
},
messages:{
  login_name:{required:'Korisničko ime nije ispravno!',rangelength:'Korisničko ime nije ispravno!',remote:'Korisničko ime nije ispravno!'},
  login_pass:{required:'Lozinka nije ispravna!',rangelength:'Lozinka nije ispravna!',remote:'Lozinka nije ispravna!'}
},

unutar ajax.php?action=checkName se spajam na bazu i provjeram da li postoji korisničko ime korisnika, a sa checkPass provjeravam postoji li lozinka. E sad me zanima da li prilikom provjere lozinke mogu provjeravati i korisnčko ime tj. da se ova dva parametra podudaraju? Jer mi je sada slučaj da ova dva polja neovisno provjerama što nije baš previše iskoristivo jer je moguće da nekoliko korisnika ima istu lozinku…

Naravno da možeš, ovo bi bio banalan primjer (bez suviše provjera) ajax.php datoteke:

*Možda mi se potkrala koja greška

Uglavnom, da bi provjerio da li lozinka odgovara korisničkom imenu, moraš prvo unjeti korisničko ime, ili nemoj dopustiti da se prvo upisuje lozinka…

Pretpostavio sam:

  • Da se u bazu ne mogu upisati 2 ista korisnička imena
  • Da koristiš MD5 algoritam za hashiranje lozinki

Alternativa svemu ovome:
Za svakog korisnika dodaš polje npr userid (koje će ti dobro doći u više slučajeva). Vrijednost tog polja postaviš npr userid = MD5(CONCAT(username, password)). Naravno, u ovom slučaju trebaš trigger koji će ažurirati taj atribut prilikom svake promjene lozinke (ili korisničkog imena, ako to dozvoljavaš). U ovom slučaju provjeravaš da li se taj hash podudara.

Alternativu nisam naveo zato jer želim reći da to trebaš napraviti da bi provjerio lozinku, već vjerujem da već imaš sličan atribut u tablici, ili ćeš ga možda zatrebati :slight_smile:

Dio oko samo prijave korisnika sam rješio… Jer pomoću te Validation skripte kada kliknem dugme “Prijavi se” imam vrijednosti svih unešenih polja u ajax.php i lako ih mogu provjeravati i uspoređivati. No meni treba provjera baš direktno kada upisujem korisničko ime i lozinku u polje. Znači “live” provjera tipa:
http://jquery.bassistance.de/validate/demo/
da mi odmah izbaci grešku…

Cijeli JS kod izgleda ovako:

var validator = $('#form_login').validate({
      rules:{
        login_name:{required:true,rangelength:[3, 80],remote:'ajax.php?action=checkName'},
        login_pass:{required:true,rangelength:[4, 15],remote:'ajax.php?action=checkPass'}
      },
      messages:{
        login_name:{required:'Korisničko ime nije ispravno!',rangelength:'Korisničko ime nije ispravno!',remote:'Korisničko ime nije ispravno!'},
        login_pass:{required:'Lozinka nije ispravna!',rangelength:'Lozinka nije ispravna!',remote:'Lozinka nije ispravna!'}
      },
      submitHandler: function(form){
       	$('#login_ok').attr('disabled','disabled');
       	$('#login_ok').attr('value','Pričekajte...');
        $(form).ajaxSubmit({
          url: 'ajax.php?action=userLogin',
          success: function(r){
            if(r=='true'){
              location.reload();
            }
            else{
              $('#login_ok').attr('disabled','');
              $('#login_ok').attr('value','Prijavi se');
            }
          }
        });
      },
    });

Meni zapravo u ovom redu treba slati oba parametra:

login_pass:{required:true,rangelength:[4, 15],remote:'ajax.php?action=checkPass'}

Što se tiče korisničko imena, naravno da je to bolje UNIQUE, lozinka MD5, i onda se u cookie sprema sa implode nekoliko parametara + MD5…

Nadam se da razumjem što želim postići. Prilikom klika na “Prijavi se” ja lako to sve provjerim no ne mogu nikako dobiti provjeru username + password dok tipkam u to polje.

$query = mysql_query(“SELECT COUNT(ID) broj_korisnika FROM users WHERE username=’{$username}’”);
iako i to radi nije dobro, zamjeni sa

$query = mysql_query(“SELECT COUNT(*) broj_korisnika FROM users WHERE username=’{$username}’”);

COUNT() broji redove, dok count(ID) broji samo id-eve, kojih ima u svim redovima pa je i to točno, ali ispravan način je SELECT COUNT()

@crazy man
Možeš li mi dati kod ostalih datoteka?

@Kečko
Ovisi koji engine koristiš :).

[quote=“junior”]@crazy man
Možeš li mi dati kod ostalih datoteka?[/quote]

ajax.php

Kod checkPass slučaja bi morao slati dva parametra, ali ne znam kako…

Zaboravio dodani na kraju samu prijavu korisnika klikom na dugme “Prijavi se”

Ak sam dobro skuzil pitanje:

var validator = $('#form_login').validate({
      rules:{
        login_name:{required:true,rangelength:[3, 80],remote:'ajax.php?action=checkName'},
        login_pass:{required:true,rangelength:[4, 15],
         remote: {
           url: "ajax.php",
           type: "get",
           data: {
             action: "checkBoth",
             login_name: function() {
               return $("#login_name").val();
             },
             login_pass: function() {
               return $("#login_pass").val();
             }
          }
        }
       }
      },
      messages:{
        login_name:{required:'Korisničko ime nije ispravno!',rangelength:'Korisničko ime nije ispravno!',remote:'Korisničko ime nije ispravno!'},
        login_pass:{required:'Lozinka nije ispravna!',rangelength:'Lozinka nije ispravna!',remote:'Lozinka nije ispravna!'}
      },
      submitHandler: function(form){
       	$('#login_ok').attr('disabled','disabled');
       	$('#login_ok').attr('value','Pričekajte...');
        $(form).ajaxSubmit({
          url: 'ajax.php?action=userLogin',
          success: function(r){
            if(r=='true'){
              location.reload();
            }
            else{
              $('#login_ok').attr('disabled','');
              $('#login_ok').attr('value','Prijavi se');
            }
          }
        });
      },
    });

—edit—
U formi moraju biti postavljeni id-evi: i da bi jscript izvukao pripadajuce vrijednosti za slanje…

[quote=“darkmares”]Ak sam dobro skuzil pitanje:

—edit—
U formi moraju biti postavljeni id-evi: i da bi jscript izvukao pripadajuce vrijednosti za slanje…[/quote]

Poz, mislim da bi ovo moglo funkcionirati :wink: probam pa se javim. Naravno, ID-ovi su postavljeni. Puno hvala :slight_smile:

Evo isprobao, sve radi, puno hvala na pomoći :slight_smile:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja