Ajax autorizație și înregistrare pe php

Crearea unei baze de date

Creați o nouă bază de date numită testdb. prin executarea următoarei solicitări de la utilizatorul privilegiat.

Pentru a lucra cu baza de date, adăugați un testdb utilizator separat și dați-i drepturile necesare.







Structura tabelului utilizatorilor

Pentru a stoca utilizatorii, creați un utilizator de tabel în baza de date. executând următoarea interogare.

  • id - identificatorul unic al utilizatorului
  • nume de utilizator - autentificare
  • parola criptată
  • sare - sare pentru criptarea parolei

Structura fișierelor și directoarelor

Creați un director "php-auth" pentru proiectul nostru. Adăugați următoarele fișiere și foldere:

Înregistrarea utilizatorilor

La înregistrare, utilizatorul trebuie să introducă o confirmare de conectare, parolă și parolă. După trimiterea formularului, vom face o verificare a existenței autentificării introduse. Dacă datele de conectare există deja, informați vizitatorul despre acest lucru.

Ajax autorizație și înregistrare pe php

Toate lucrările cu baza de date vor avea loc prin extensia PDO pentru PHP. Acesta este inclus în biblioteca standard PHP, de la versiunea 5.1.

Principala logică a aplicației este în fișierul / clasele Auth.class.php. Să aruncăm o privire mai atentă asupra conținutului său.

Algoritmul înregistrării

Pentru a crea un utilizator nou, utilizați metoda User :: create (). care ia argumentele de conectare și parola.

În primul rând, verificăm existența utilizatorului. Pentru aceasta, utilizăm metoda User :: getSalt (). care alege din baza de date "sare" a utilizatorului prin autentificarea sa. Sarea este necesară pentru a complica selecția parolelor utilizator în cazul scurgerii bazei de date.

Dacă utilizatorul există, aruncați o excepție. În caz contrar, generați o nouă sare și isi parchează parola. După aceasta, executăm solicitarea de a adăuga date în baza de date. Dacă apare o eroare în timpul executării cererii, imprimați mesajul corespunzător și terminați scriptul. Această situație poate apărea atunci când serverul MySQL este deconectat sau apare eroarea sa internă.







Dacă utilizatorul a fost creat ca fiind irosit, funcția User :: create () returnează identificatorul său unic. Acesta este un câmp numeric normal care este incrementat automat când adăugați înregistrări în tabel.

Algoritm de autentificare

Pentru a verifica corectitudinea introducerii login-ului și a parolei, se folosește metoda User :: authorize (). În primul rând, verificăm existența utilizatorului, încercând să-i selectăm sarea din baza de date. Dacă utilizatorul nu a fost găsit, returnați-l imediat. În caz contrar, vom șterge parola primită cu această sare prin funcția User :: passwordHash (). Apoi, facem o selecție din baza de date prin autentificarea și hash-ul parolei.

Dacă rezultatul cererii nu a fost gol, atunci login-ul și parola sunt corecte. Stocăm datele utilizatorului în obiectul Utilizator. Scrieți ID-ul utilizatorului în sesiune folosind metoda User :: saveSession (). Dacă primul argument este $ amintesc. da-l adevărat. atunci ID-ul sesiunii este stocat în cookie. Acest lucru vă va împiedica să introduceți parola de fiecare dată când reporniți browserul.

Lucrul cu formulare prin Ajax

Pentru a procesa cererile Ajax, vom crea clasa AjaxRequest. Salvați-l în fișierul clase / AjaxRequest.class.php.

Această clasă ne va ușura procesarea datelor trimise de utilizator din formular. Ca constructor, este nevoie de o matrice cu date de interogare ($ _GET sau $ _POST).

Metoda getRequestParam () este necesară pentru a prelua un parametru din interogare. Efectuează o verificare suplimentară pentru existența cheii matricei și returnează nul. dacă cererea nu conține datele solicitate.

Funcția setResponse () este utilizată pentru a genera un răspuns. Metoda setFieldError () este necesară pentru a trimite un mesaj de eroare câmpului de formular.

Pentru a returna un răspuns utilizatorului, vom folosi metoda showResponse. Acesta generează un șir în format JSON, specifică antetele HTTP dorite și returnează datele clientului.

În fișierul ajax.php, cererile sunt procesate direct prin clasa AjaxRequest.

Formatul de răspuns JSON

Pe partea clientului, ar trebui să putem arăta rezultatul operațiunii într-un mod ușor de înțeles pentru persoana respectivă. Pentru a face acest lucru, vom returna răspunsul JSON în acest format:

Creați un fișier js / ajax-form.js. Acesta va intercepta evenimentul de trimitere a tuturor formularelor cu clasa ajax și va trimite o cerere asincronă către server. Codul sursă este ajax-form.js.

Pentru a rula scriptul aveți nevoie de jQuery versiunea 2.0.3 (este în arhiva sursă).

Aceste restricții se apelează numai dacă răspunsul a fost validat cu succes. Metoda script.ajaxForm.validate verifică prezența unui câmp cu o eroare în răspuns. Dacă există un astfel de câmp, acesta este amânat și afișează textul erorii.

Ajax autorizație și înregistrare pe php

UPDATE: bug-uri fixe legate de hashing-ul parolei, funcția "Remember me" a funcționat corect. Mulțumită santas156 pentru bug-urile găsite.

Evaluare - 4.9 Voturi - 27







Articole similare

Trimiteți-le prietenilor: