Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • Jednostavna php i mysql skripta za registraciju. Kreiranje jednostavnog sistema registracije korisnika u PHP i MySQL

Jednostavna php i mysql skripta za registraciju. Kreiranje jednostavnog sistema registracije korisnika u PHP i MySQL

Zdravo svima. Dakle, pokrili smo nekoliko elemenata za kreiranje obrazaca. Vrijeme je da udružimo svoje znanje kako bismo riješili veći problem. Kreirajmo najjednostavniji obrazac za autorizaciju na stranici. Da bismo to učinili, potrebna su nam dva polja, kreiramo i vezujemo potpise za njih.

Prvo polje je za prijavu, drugo za lozinku. A sa drugim nije sve tako jednostavno. Pošto je to trenutno samo polje za unos teksta.

Rezultat u pretraživaču:

Da bi tekst koji je u njega unesen bio zamijenjen zvjezdicama, kao što je uobičajeno za polje ovog tipa, potrebno je izvršiti jednu jednostavnu radnju. Naime, zamijenite vrijednost atributa tip na lozinka:

rezultat:

Dugme za slanje obrasca

Izvoli. Naš obrazac je skoro spreman. Sada, da biste dovršili njegovo kreiranje, potrebno je da kreirate dugme koje će se koristiti za slanje obrasca. Zadatak se rješava pomoću oznake sa tipom submit.

Ako na dugmetu treba da postoji neka vrsta natpisa, onda se to može uraditi pomoću atributa vrijednost... Na vama je da navedete ime za dugme ili ne, a ako to uradite, server će dobiti ovo ime, kao i vrednost dugmeta.

Po pravilu, postoji potreba za nazivom dugmeta za slanje obrasca kada obrazac ima nekoliko dugmadi, od kojih svako obavlja određenu radnju. Zahvaljujući tome, server, primajući ime i vrijednost dugmeta od pretraživača, razumije koje je dugme korisnik pritisnuo i šta, shodno tome, treba učiniti.

Kao rezultat toga, kod za naš obrazac će izgledati ovako:

Rezultat u pretraživaču:

Svako ko razvija web stranice prije ili kasnije suoči se sa takvim zadatkom kao što je autorizacija i autentikacija korisnika implementirano korištenjem programskog jezika, a ne korištenjem standarda http protokola. Danas ćemo pogledati primjer kreiranja jednostavne autorizacije koristeći PHP programski jezik, a korisničke podatke ćemo pohraniti u MySQL bazu podataka.

Dolje navedena metoda je jednostavna ili, takoreći, osnova za kreiranje normalne autorizacije, ali je sasvim možete koristiti, budući da radi prilično dobro, možete i poboljšati ovu metodu i implementirati je na svoju web stranicu.

Ova metoda se zasniva na sesijama, ali ovdje koristim i kolačiće, tako da pretraživač pamti korisnika koji se zadnji put autentifikovao, tako da svaki put kada ne unesete login, možete, naravno, pohraniti lozinku u kolačiće, ali ovo nije sigurno, čak i ako je šifrirano. Da bi sesija završila, samo zatvorite pretraživač i ponovo ga otvorite.

Kreiranje objekata u bazi podataka

Hajdemo na praksu. Prvo, napravimo tabelu za pohranjivanje korisničkih podataka u MySQL bazi podataka. Predlažem korištenje jednostavne strukture tabele ( Možete, naravno, nečim dopuniti, moja baza se zove test, a tabela korisnika):

CREATE TABLE test.users (user_id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT, user_login VARCHAR (30) NOT NULL, user_password VARCHAR (32) NOT NULL, PRIMARY KEY (user_id)) ENGINE = MYISAM SET ut CHAR_8

I odmah dodajmo jedan zapis u ovu tabelu:

Ubacite u test.users (user_login, user_password) vrijednosti ("mylogin", "202cb962ac59075b964b07152d234b70")

Ukupno smo dobili:

  • Ulogovati se- mylogin;
  • Lozinka -;

Šifru ćemo, naravno, čuvati u heširanom obliku, jer čuvanje lozinke u čistom tekstu, blago rečeno, nije sigurno. Iznad lozinke imamo heš 123, tako da kada unesemo lozinku u formular, dobićemo tačno 123, ne.

Kreirajte obrazac za registraciju

Da bi se korisnik mogao sam registrovati, kreirati obrazac sa kojeg će se podaci slati u datoteku za obradu registracije, tj. pisati u bazu podataka. Na primjer, evo najjednostavnijeg načina:

0) ($ error = "Već postoji korisnik sa ovom prijavom";) // Ako ne, onda dodajte novog korisnika ako (! Isset ($ greška)) ($ login = mysql_real_escape_string (odrezati (htmlspecialchars ($ _ POST) ["login" ]))); // Uklonite razmake i hashirajte lozinku $ password = md5 (skratite ($ _ POST ["password"])); mysql_query ("INSERT INTO users SET user_login =" ". $ Prijava. " ", User_password =" ". $ lozinka." ""); echo "Uspješno ste se registrovali sa prijavom -". $ login; izlaz ();) else (// ako postoji takva prijava, onda razgovaramo o tome echo $ error;)) // po defaultu podaci će biti poslani u istu datoteku za štampanje<<< html

Ulogovati se
Lozinka
html; ?>

Inače, kod ove metode najbolje je koristiti latinična slova za prijavu ( one. engleski), ako želite napisati prijavu na ruskom, morat ćete malo ispraviti kod. Možete imenovati fajl kako god želite ( za test sam koristio reg.html).

Bilješka! Za testiranje koristim samo jednu datoteku, nazvao sam je mylogin.html (kod datoteke ispod). Možete koristiti u svojim datotekama i imenovati ih kako god želite, ovdje opisujem proces autorizacije, tako da ga možete primijeniti svuda. Usput, u svim datotekama morat ćete koristiti funkciju session_start (); tako da možete provjeriti da li je korisnik ovlašten ili ne. I još nešto, naravno, zapišite svoja podešavanja za povezivanje sa bazom podataka.

Kreiranje obrasca ovlaštenja

"." Prijavljeni ste
One. provjerili smo sesiju i možemo otvoriti pristup određenim podacima ";) inače ($login =" "; // provjerite kolačić, možda je već ušao ovdje if (isset ($ _ COOKIE [" CookieMy "])) ($ login = htmlspecialchars ( $ _COOKIE ["CookieMy"]);) // ispis jednostavnog obrasca<<< html

Ulogovati se
Lozinka
html; )?>

Bilješka! Ako iznenada vaš php parser odbije da radi, tj. sam php kod je prikazan na ekranu, tada jednostavno nemate uključenu php obradu u html fajlovima. Postavke se vrše u konfiguracijskoj datoteci web servera httpd.conf (ako je apache):

Aplikacija AddType / x-httpd-php .php .html

U IIS-u, u prozoru Add Module Mapping, dodajte * .html u * .php, odvojeno zarezima. Ovo je ako to radite kod kuće na svom web serveru, a ako sve ovo radite na hosteru, onda ćete morati da im pišete i zamolite ih da naprave potrebne promjene, neki hosteri su ih već napravili.

Prokomentarisao sam kod, tako da mislim da bi sve trebalo biti jasno. Još jednom vas podsjećam da u svim fajlovima, čiji sadržaj ne želite da prikazujete neovlaštenim korisnicima, morate napisati session_start i, vjerovatno, to je sve. Ako imate pitanja, pitajte u komentarima. Sretno!

Ne tako davno, jedan od mojih posjetilaca me zamolio da napišem članak o tome kako registrirati i ovlastiti korisnike na stranici... Zapravo, ispunjavam njegov zahtjev, a u ovom članku ću govoriti o tome kako se to radi.

Postoji nekoliko načina kreiranje registracije i autorizacija korisnika, ali u ovom članku ću raščlaniti svoj omiljeni - kroz mehanizam sesije ili kolačić.

Prije svega, ako želite registrirajte se na svojoj web stranici, tada morate razumjeti gdje će se korisnički podaci pohranjivati. Može se pohraniti u običnu tekstualnu datoteku, u XML fajl, ili u bazi podataka. Prve dvije opcije su vrlo opasne, pa vam ne preporučujem da ih koristite. A evo i treće opcije - pohranjivanje informacija o korisnicima u bazi podataka- najpopularniji, a savjetujem vam da koristite ovaj način pohranjivanja informacija.

Odlučili smo se za lokaciju skladištenja. Sada idemo direktno na algoritam autorizacije:

  1. Kreirajte formular za registraciju na Html.
  2. Dobijte podatke iz obrasca u skripti za rukovanje.
  3. Provjerite primljene podatke, a ako su netačni, preusmjerite nazad na obrazac za registraciju.
  4. Ako su podaci tačni, upišite ih u bazu podataka.

To je cijeli proces registracija korisnika na stranici... Odnosno, registracija je skladištenje informacija o korisniku na stranici.

Dalja stavka je autorizacija korisnika na stranici, međutim, prije nego što pređemo na to, reći ću vam jednu važnu tačku u obrascu za registraciju - lozinku. Toplo preporučujem da lozinke ne pohranjujete u čistom tekstu (na primjer, " 123456 "). Obavezno ih šifrirajte, barem koristeći funkciju md5 ()... I pohraniti šifriranu lozinku u bazu podataka.

Sada autorizacija. Prva stvar koju trebate razumjeti je da informacije o autorizaciji moraju biti negdje pohranjene. Najjednostavnija opcija je pohranjivanje informacija u sesiji (ili u kolačić). A sada algoritam:

  1. Kreirajte obrazac za autorizaciju korisnika na Html, gdje će korisnik morati unijeti svoje korisničko ime i lozinku.
  2. U skripti za rukovanje, prihvatite podatke od korisnika. Ako ste me poslušali i pohranili šifrovane lozinke u bazu podataka, onda prvo šifrirajte primljenu lozinku. Ako baza podataka sadrži otvorene lozinke, šifriranje nije potrebno.
  3. Provjerite ispravnost unesenih podataka i ako se login i lozinka poklapaju sa postojećim korisnikom u bazi, pišite na kolačić ili informacije o sesiji sa prijavom i šifrovanom lozinkom (ili otvorenom lozinkom ako je niste šifrovali).
  4. Ako su prijava i/ili lozinka pogrešno uneseni, preusmjerite se natrag na obrazac za autorizaciju.

Sada imate potrebne informacije o autorizacija korisnika koji je pohranjen u svom kolačić ili na serveru (ako je sesija). Zapravo, sada morate provjeriti ove informacije na svakoj stranici web-mjesta i provjeriti ih na isti način kao i provjeru obrasca za autorizaciju. To jest, čitate iz kolačić(sesiju) prijavu i lozinku, i provjerite. Ako su tačni, onda pokažite jednu stranicu (za registrovane korisnike), a ako su netačni, pokažite drugu stranicu (za goste).

I poslednja stvar. Kako je dugme " Izlaz"? Vrlo jednostavno. Kada pritisnete ovo dugme, kolačić, ili sesija. Tako se korisnik automatski odjavljuje sa stranice.

Kao što vidite, sve je elementarno, ali kada implementirate ovaj algoritam, sigurno ćete imati mnogo pitanja. Na primjer, šta učiniti kada registrujete korisnika čija prijava već postoji u bazi podataka. Sprovođenje raznih input provjera, implementacija provjere postojanja e-mail i tako dalje - sve je to prilično teško ako to radite prvi put. Međutim, sam sok sam dao. Ako imate bilo kakvih pitanja tokom implementacije, pitajte ih na forumu ili u komentarima.

Ako je potrebno da jedan od odjeljaka vaše stranice učinite dostupnim ograničenom, ali neodređenom krugu ljudi, najlakši način za to je registracija i autorizacija korisnika. Postoji mnogo načina za autentifikaciju korisnika. Mogu se koristiti i alati web servera i alati programskog jezika. Govorićemo o slučaju kada se koriste PHP sesije.

Prvo, razgovarajmo o svim koracima koje ćemo dalje poduzeti. Šta nam uopće treba? Potrebna nam je skripta koja će registrirati korisnika, autorizirati korisnika, preusmjeriti korisnika negdje nakon autorizacije. Također ćemo morati kreirati stranicu koja će biti zaštićena od pristupa neovlaštenih korisnika. Za registraciju i autorizaciju, trebat ćemo kreirati HTML-forme. Podatke o registrovanim korisnicima čuvat ćemo u bazi podataka. To znači da nam je i dalje potrebna skripta za povezivanje sa DBMS-om. Sav naš posao obavljat će funkcije koje ćemo sami pisati. Ove funkcije ćemo sačuvati u zasebnoj datoteci.

Dakle, potrebni su nam sljedeći fajlovi:

  • veza sa DBMS;
  • prilagođene funkcije;
  • autorizacija;
  • registracija;
  • zaštićena stranica;
  • skripta za isključivanje korisnika;
  • skriptu koja provjerava status autorizacije korisnika;
  • stilska lista za najjednostavniji dizajn naših stranica.

Sve ovo bi bilo besmisleno ako nemate odgovarajuću tabelu u bazi podataka. Pokrenite svoj alat za upravljanje DBMS-om (PhpMyAdmin ili komandnu liniju, što god je zgodnije) i pokrenite sljedeći upit u njemu:

CREATE TABLE `korisnici` (` id` int (11) NOT NULL AUTO_INCREMENT, `login` char (16) NOT NULL,` password` char (40) NOT NULL, `reg_date` vremenska oznaka NOT NULL DEFAULT CURRENT_TIMEEYSTAMP (` PRIMARY id`)) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;

Nazvat ću naše skript datoteke ovako (sve će biti u istom direktoriju):

  • baza podataka.php;
  • functions.php;
  • login.php;
  • registracija.php;
  • index.php;
  • logout.php;
  • checkAuth.php;
  • style.css.

Svrha svakog od njih vam je, siguran sam, jasna. Počnimo sa DBMS skriptom za povezivanje. Videli ste to ranije. Samo sačuvajte kod za ovu skriptu u datoteci pod nazivom database.php. Prilagođene funkcije ćemo deklarisati u datoteci functions.php. Kako će sve ovo funkcionirati? Neovlašćeni korisnik pokušava da pristupi zaštićenom dokumentu index.php, sistem proverava da li je korisnik autorizovan, ako korisnik nije autorizovan, preusmerava se na stranicu za autorizaciju. Na stranici za autorizaciju korisnik bi trebao vidjeti obrazac za autorizaciju. Hajde da to uradimo.

Autorizacija korisnika

registar.

Sada moramo našem obliku dati određeni izgled. Istovremeno ćemo definirati pravila za ostale elemente. Daću vam kompletan sadržaj tabele stilova, idući ispred sebe.

/ * style.css datoteka * / .row (margin-bottom: 10px; širina: 220px;) .row label (prikaz: blok; font-weight: bold;) .row input.text (font-size: 1.2em; padding: 2px 5px;) .to_reg (veličina fonta: 0,9em;) instrukcija (veličina fonta: 0,8em; boja: #aaaaaa; margin-left: 2px; kursor: default;) .error (boja: crvena; margin-left: 3px;)

Ako je sve urađeno kako treba, trebalo bi da imate sledeće u pretraživaču:

Naravno, još nemamo ni jednog registrovanog korisnika, a da biste se prijavili, potrebno je da se registrujete. Napravimo formular za registraciju.

Registracija korisnika

" />

Verovatno ste primetili da postoje PHP varijable u HTML kodu. Oni su sadržaji atributa tekstualnih polja u obrascima, sadržaji kontejnera za prikaz grešaka. Ali ove varijable nismo inicijalizirali. Uradimo to.

Registracija korisnika

" />
Korisničko ime može sadržavati samo latinične znakove, brojeve, simbole "_", "-", ".". Dužina korisničkog imena mora biti najmanje 4 karaktera i ne duža od 16 znakova
U lozinki možete koristiti samo latinične znakove, brojeve, simbole "_", "!", "(", ")". Lozinka mora imati najmanje 6 znakova i ne duža od 16 znakova
Ponovite prethodno unetu lozinku

U atributu akcije oznake obrasca nije naveden parametar. U tom slučaju, kada se podaci obrasca predaju, oni će biti obrađeni istom skriptom iz koje su dostavljeni. Dakle, moramo napisati kod koji obrađuje podatke obrasca. Ali prvo, razgovarajmo o algoritmu za njihovu obradu.

Potrebno nam je da polja za prijavu i lozinku ne budu prazna. Zatim morate provjeriti usklađenost prijave sa zahtjevima. Lozinka također mora ispunjavati opisane zahtjeve, a ponovljena lozinka mora joj odgovarati i, osim toga, moraju biti identične. Ako bilo koji od ovih uslova nije ispunjen, obrada podataka obrasca treba biti zaustavljena, odgovarajuća obavijest treba biti upisana u niz poruka o grešci i prikazana korisniku. Radi praktičnosti korisnika, sačuvaćemo prijavu koju je on uneo (ako je on to naveo), upisujući njenu vrednost u niz polja $.

Ako je sve u redu, u prozoru vašeg pretraživača, pozivajući se na dokument register.php, trebali biste vidjeti nešto poput ovoga:

Sada, recimo da korisnik klikne na dugme za registraciju bez popunjavanja polja obrasca. Prema našem algoritmu, login i lozinka ne mogu biti prazni. Ukoliko ovaj uslov nije ispunjen, registracija nije moguća. Imamo na umu da se obrada podataka obrasca odvija u trenutnoj skripti. To znači da moramo promijeniti njegov kod dodavanjem odgovarajućih provjera. Odmah ćemo propisati sljedeće provjere. Ako su uneseni i login i lozinka, potrebno je provjeriti njihovu usklađenost sa navedenim zahtjevima. Da bismo provjerili login i lozinku, kreirat ćemo prilagođene funkcije u datoteci functions.php.

/ ** * functions.php * Fajl sa prilagođenim funkcijama * / // Uključuje datoteku sa parametrima za povezivanje sa DBMS-om require_once ("database.php"); // Provjera funkcije korisničkog imena checkLogin ($ str) (// Inicijalizirati varijablu s mogućom porukom o grešci $ error = ""; // Ako ne postoji niz za prijavu, vrati poruku o grešci ako (! $ Str) ($ error = " Niste uneli korisničko ime "; vratite $ error;) / ** * Provjerite korisničko ime pomoću regularnih izraza * Prijava mora biti najmanje 4, ne duža od 16 karaktera * Mora sadržavati latinične znakove, brojeve, * može biti znakovi "_", "-", "." * / $ obrazac = "/^ [-_.az\d ](4,16)$/i"; $ rezultat = preg_match ($ uzorak, $ str) ; // Ako provjera ne uspije, vrati poruku o grešci if (! $ Result) ($ error = "Nevažeći znakovi u korisničkom imenu ili korisničko ime je prekratko (dugo)"; vrati $ error;) // Ako je sve u redu , vrati true return true;) // Provjerite korisničku lozinku funkciju checkPassword ($ str) (// Inicijalizirajte varijablu s mogućom porukom o grešci $ error = ""; // Ako nema pojavljuje se string sa prijavom, vratite poruku o grešci ako (! $ str) ($ error = "Niste uneli lozinku"; return $ error; ) / ** * Provjerite lozinku korisnika pomoću regularnih izraza * Lozinka ne smije biti kraća od 6, ne duža od 16 znakova * Mora sadržavati latinične znakove, brojeve, * može sadržavati znakove "_", "!", " ( ",") "* / $ pattern =" /^ [_!)(.az\d *(6,16)$/i "; $ result = preg_match ($ pattern, $ str); // Ako je provjera nije uspjelo, vrati poruku o grešci ako (! $ rezultat) ($ error = "Nevažeći znakovi u korisničkoj lozinki ili je lozinka prekratka (duga)"; vrati $ error;) // Ako je sve u redu, vrati true return true ;)

Sada moramo modificirati datoteku register.php da koristi funkcije koje smo deklarirali. Skripti ćemo dodati uslov da provjerimo da li je kliknuto na dugme za registraciju. Unutar ovog stanja pokreće se provjera login i lozinki. Ako bilo koja od provjera ne uspije, ponovo prikazujemo obrazac i prikazujemo poruku o grešci. Ako nema grešaka, registriramo korisnika, više ne prikazujemo obrazac za registraciju, obavještavamo korisnika o uspješnoj registraciji i pomoću funkcije zaglavlja () ga preusmjeravamo na obrazac za autorizaciju.

Uspješno ste se registrovali u sistemu. Sada ćete biti preusmjereni na stranicu za prijavu. Ako se to nije dogodilo, idite na to koristeći direktnu vezu.

"; header (" Osvježi: 5; URL = login.php ");) // U suprotnom obavijestite korisnika o grešci inače ($ errors [" full_error "] = $ reg;)))?> Registracija korisnika
" />
Korisničko ime može sadržavati samo latinične znakove, brojeve, simbole "_", "-", ".". Dužina korisničkog imena mora biti najmanje 4 karaktera i ne duža od 16 znakova
U lozinki možete koristiti samo latinične znakove, brojeve, simbole "_", "!", "(", ")". Lozinka mora imati najmanje 6 znakova i ne duža od 16 znakova
Ponovite prethodno unetu lozinku

Trebali ste primijetiti još jednu novu funkciju u skripti - registraciju (). A mi to još nismo objavili. Uradimo to.

// Registracija funkcije funkcije registracije korisnika ($ prijava, $ lozinka) (// Inicijaliziranje varijable s mogućom porukom o grešci $ error = ""; // Ako nema niza za prijavu, vratite poruku o grešci ako (! $ Login) ($ error = "Prijava nije navedena"; vrati $ error;) elseif (! $ lozinka) ($ error = "Lozinka nije navedena"; vrati $ error;) // Provjerite da li je korisnik već registriran // Povežite se na DBMS connect () ; // Napišite niz upita $ sql = "SELECT` id` FROM `users` WHERE` login` = "". $ Login. "" "; // Napravite upit bazi podataka $ query = mysql_query ($ sql) ili die ( ""); // Pogledajte broj korisnika sa ovom prijavom, ako postoji barem jedan, // vratite poruku o grešci if (mysql_num_rows ($ query)> 0) ($ error = "Korisnik sa navedenom prijavom je već registrovan"; vrati $grešku;) // Ako ne postoji takav korisnik, registriraj ga // Napiši string upita $ sql = "INSERT INTO` users` (`id`,` login `, `lozinka`) VRIJEDNOSTI (NULL," ". $ prijava." "," ". $ lozinka. "") "; // Napravite upit bazi podataka $ query = mysql_query ($ sql) ili umri ("

Nije moguće dodati korisnika: ". Mysql_error ().". Došlo je do greške u redu ". __LINE__."

"); // Ne zaboravite prekinuti vezu sa DBMS-om mysql_close (); // Vraća vrijednost true, što ukazuje na uspješnu registraciju korisnika vraća true;)

Ako je sve u redu, vaš korisnik će biti registrovan. Možete testirati obrazac. Pokušajte registrirati korisnike sa istim loginovima. Nakon uspješne registracije, korisnik će biti preusmjeren na formular za autorizaciju. Ranije smo samo kreirali oznake za prikaz ovog obrasca. Budući da u njegovom atributu akcije nije naveden parametar, podaci koje je obrazac dostavio će biti obrađeni u istoj skripti. Dakle, moramo napisati kod za obradu i dodati ga u login.php dokument.

Autorizacija korisnika

;">

Ako niste registrovani u sistemu, registrujte se.

Vjerovatno ste primijetili da u autorizacijskoj skripti imamo još jednu nepoznatu funkciju - autorizaciju (). Ova funkcija bi trebala ovlastiti korisnika tako što će prvo provjeriti postoji li registrirani korisnik u bazi podataka s istim korisničkim imenom i lozinkom. Ako se takav korisnik ne pronađe, autorizacija će biti prekinuta i na ekranu će se prikazati poruka o grešci. Ako je provjera uspješna, funkcija autorizacije () će pokrenuti sesiju i u nju upisati vrijednosti korisničkog imena i lozinke, obavijestiti skriptu o uspješnosti autorizacije, a skripta će preusmjeriti korisnika na stranicu zaštićenog resursa.

/ ** * Funkcija autorizacije korisnika. * Autorizacija korisnika kod nas će se vršiti * korištenjem PHP sesija. * / autorizacija funkcije ($ prijava, $ lozinka) (// Inicijaliziranje varijable s mogućom porukom o grešci $ error = ""; // Ako nema linije za prijavu, vratite poruku o grešci ako (! $ prijava) ($ greška = " Prijava nije navedena "; return $ error;) elseif (! $ Lozinka) ($ error =" Lozinka nije navedena "; vrati $ error;) // Provjerite da li je korisnik već registriran // Povežite se na DBMS konekciju ( ); // Moramo provjeriti postoji li takav korisnik među registriranim // Sastavljanje niza upita $ sql = "SELECT` id` FROM `users` WHERE` login` = "". $ Login. "" I `password` =" ". $ Lozinka . "" "; // Izvršite upit $ query = mysql_query ($ sql) ili umri ("

Nije moguće izvršiti upit: ". Mysql_error ().". Došlo je do greške u redu ". __LINE__."

"); // Ako nema korisnika sa takvim podacima, vrati poruku o grešci if (mysql_num_rows ($ query) == 0) ($ error =" Korisnik sa navedenim podacima nije registrovan "; vrati $ error;) // Ako korisnik postoji, pokrenite sesiju session_start (); // I upišite korisničko ime i lozinku u nju // Za ovo koristimo superglobalni niz $ _SESSION $ _SESSION ["login"] = $ login; $ _SESSION [" lozinka"] = $ lozinka; / / Ne zaboravite zatvoriti vezu baze podataka mysql_close (); // Vratite true za poruku o uspješnoj autorizaciji korisnika vratite true;)

Kada korisnik uđe na zaštićenu stranicu, potrebno je provjeriti ispravnost njegovih autorizacijskih podataka. Za ovo nam je potrebna još jedna prilagođena funkcija. Nazovimo to checkAuth (). Njegov zadatak će biti da provjeri autorizacijske podatke korisnika s onima koji su pohranjeni u našoj bazi podataka. Ako se podaci ne podudaraju, korisnik će biti preusmjeren na stranicu za autorizaciju.

Funkcija checkAuth ($ prijava, $ lozinka) (// Ako nema korisničkog imena ili lozinke, vratite false ako (! $ Prijava ||! $ Lozinka) vrati false; // Provjerite da li je takav korisnik registriran // Povežite se na DBMS connect (); // Kreirajte string upita $ sql = "SELECT` id` FROM `users` WHERE` login` = "". $ Login. "" I `password` =" ". $ Lozinka." "" ; // Izvršite upit $ query = mysql_query ($ sql) ili umri ("

Nije moguće izvršiti upit: ". Mysql_error ().". Došlo je do greške u redu ". __LINE__."

"); // Ako nema korisnika s takvim podacima, vrati false; if (mysql_num_rows ($ upit) == 0) (vrati false;) // Ne zaboravi zatvoriti vezu baze podataka mysql_close (); // Inače , vrati true vrati true;)

Sada kada je korisnik na sigurnoj stranici, moramo pozvati funkciju validacije podataka autorizacije. Postavićemo skriptu za poziv i proveru u poseban checkAuth.php fajl i povezati ga sa stranicama koje će biti zatvorene za javni pristup.

/ ** * Skripta za provjeru autorizacije korisnika * / // Pokreni sesiju, iz koje ćemo izdvojiti login i lozinku // prijavljenih korisnika session_start (); // Uključuje datoteku sa prilagođenim funkcijama require_once ("functions.php"); / ** * Da bismo utvrdili da li je korisnik prijavljen, moramo * provjeriti da li postoje zapisi u bazi podataka za njegovu prijavu * i lozinku. Da bismo to učinili, koristit ćemo prilagođenu funkciju * ​​za provjeru ispravnosti prijavljenih korisničkih podataka. * Ako ova funkcija vrati false, onda nema autorizacije. * U nedostatku autorizacije, jednostavno preusmjeravamo * korisnika na stranicu za autorizaciju. * / // Ako sesija sadrži i podatke za prijavu i lozinku, // provjerite ih ako (isset ($ _ SESSION ["login"]) && $ _SESSION ["login"] && isset ($ _ SESSION ["password" ] ) && $ _SESSION ["password"]) (// Ako provjera valjanosti postojećih podataka ne uspije ako (! CheckAuth ($ _ SESSION ["login"], $ _SESSION ["password"])) (// Preusmjerite korisnika na zaglavlje autorizacijske stranice ("location: login.php"); // Zaustavite izlaz iz izvršavanja skripte;)) // Ako nema podataka ni o loginu ni o korisničkoj lozinki, // mislimo da nema autorizacije, preusmjerite korisnik // na stranicu autorizacije else ( zaglavlje ("location: login.php"); // Prekini izlaz skripte;)

Sada kreirajmo kod za našu sigurnu stranicu. Biće prilično jednostavno.

Autorizacija i registracija korisnika

Uspješno odobrenje.

Pristupili ste sigurnoj stranici. Možete se odjaviti sa sistema.

Kao što vidite, u zaštićeni dokument uključujemo samo jednu datoteku - checkAuth.php. Svi ostali fajlovi su uključeni u druge skripte. Stoga naš kod ne izgleda glomazno. Organizirali smo registraciju i autorizaciju korisnika. Sada morate omogućiti korisnicima da se odjave. Da bismo to uradili, kreiraćemo skriptu u datoteci logout.php.

/ ** * Skripta za odjavu korisnika. Pošto su korisnici * autorizovani kroz sesije, njihova prijava i lozinka su pohranjeni * u superglobanskom nizu $ _SESSION. Da biste se odjavili iz sistema, jednostavno uništite vrijednosti * niza $ _SESSION ["login"] i $ _SESSION ["password"], nakon čega * preusmjeravamo korisnika na stranicu za autorizaciju * ​​/ // Budite sigurni za pokretanje sesije session_start (); poništeno ($ _ SESSION ["login"]); poništeno ($ _ SESSION ["password"]); zaglavlje ("lokacija: login.php");

Skripta za registraciju, autorizaciju i verifikaciju korisnika je spremna. Možete ga koristiti kod kuće, dopunjavati, mijenjati prema vašim potrebama. Ako imate bilo kakvih pitanja, možete ih postaviti u komentarima. Možete sami preuzeti sve ovdje navedene fajlove, spakovane u jednu arhivu.

P.S. Svjestan sam da je bolje pisati objektno orijentisani kod, znam da se šifra ne isplati prenositi i čuvati u čistom tekstu, da se podaci uneseni u bazu moraju prethodno provjeriti. Znam. Neću o ovome ovdje.

Zdravo! Sada ćemo pokušati implementirati najjednostavniju registraciju na stranicu koristeći PHP + MySQL. Da biste to uradili, Apache mora biti instaliran na vašem računaru. Princip našeg scenarija je prikazan u nastavku.

1. Počnimo kreiranjem tablica korisnika u bazi podataka... Sadržavat će korisničke podatke (login i lozinku). Idemo na phpmyadmin (ako kreirate bazu na svom računaru http: // localhost / phpmyadmin /). Kreirajte tabelu korisnika, imat će 3 polja.

Ja ga kreiram u mysql bazi podataka, možete ga kreirati u drugoj bazi podataka. Zatim postavite vrijednosti, kao na slici:

2. Potrebna je veza s ovom tablicom. Kreirajmo fajl bd.php... Njegov sadržaj:

$ db = mysql_connect ("vaš MySQL server", "prijava na ovaj server", "lozinka za ovaj server");
mysql_select_db ("ime baze podataka na koju se povezujemo", $ db);
?>

U mom slučaju to izgleda ovako:

$ db = mysql_connect ("localhost", "user", "1234");
mysql_select_db ("mysql", $ db);
?>

Mi štedimo bd.php.
Fino! Imamo tabelu u bazi podataka, vezu sa njom. Sada možete početi kreirati stranicu na kojoj će korisnici ostavljati svoje podatke.

3. Kreirajte reg.php fajl sa sadržajem (svi komentari unutra):



registracija


registracija
















4. Kreirajte datoteku, koji će unijeti podatke u bazu podataka i sačuvati korisnika. save_user.php(komentari unutra):



{
}
// ako su uneseni login i lozinka, onda ih obrađujemo tako da oznake i skripte ne rade, nikad ne znaš šta ljudi mogu unijeti


// ukloni dodatne razmake
$login = trim ($login);
$ lozinka = trim ($ lozinka);
// spajanje na bazu podataka
// provjeriti postoji li korisnik sa istim login-om
$ result = mysql_query ("SELECT id FROM users WHERE login =" $ login "", $ db);
ako (! prazno ($ myrow ["id"])) (
exit ("Izvinite, korisničko ime koje ste uneli je već registrovano. Unesite drugo korisničko ime.");
}
// ako ne, onda spremite podatke
$ result2 = mysql_query ("INSERT INTO users (login, password) VALUES (" $ login "," $ password ")");
// Provjerite ima li grešaka
if ($ result2 == "TRUE")
{
echo "Uspješno ste se registrovali! Sada možete ući na stranicu. Početna stranica";
}
drugo (
echo "Greška! Niste registrovani.";
}
?>

5. Sada se naši korisnici mogu registrirati! Zatim morate napraviti "vrata" za ulazak na stranicu za već registrovane korisnike. index.php(komentari unutra):

// cijela procedura radi na sesijama. U njemu se pohranjuju podaci korisnika dok je on na stranici. Veoma je važno da ih pokrenete na samom početku stranice !!!
session_start ();
?>


Početna stranica


Početna stranica











Registrirajte se sada



// Provjerite jesu li varijable login i user id prazne
ako (prazno ($ _ SESSION ["login"]) ili prazno ($ _ SESSION ["id"]))
{
// Ako je prazno, onda ne prikazujemo vezu
echo "Prijavljeni ste kao gost
Ovaj link je dostupan samo registrovanim korisnicima";
}
ostalo
{

U fajlu index.php prikazaćemo link koji će biti otvoren samo za registrovane korisnike. Ovo je cijela poenta skripte - ograničiti pristup svim podacima.

6. Postoji fajl sa verifikacijom unesenog korisničkog imena i lozinke. testreg.php (komentari unutra):

session_start (); // cijela procedura radi na sesijama. U njemu se pohranjuju podaci korisnika dok je on na stranici. Veoma je važno da ih pokrenete na samom početku stranice !!!
if (isset ($ _ POST ["login"])) ($ login = $ _POST ["login"]; if ($ login == "") (unset ($ login);)) // unesite unesenu prijavu; od strane korisnika u varijablu $ login, ako je prazna, onda uništavamo varijablu
if (isset ($ _ POST ["password"])) ($ lozinka = $ _ POST ["password"]; if ($ lozinka == "") (poništena ($ lozinka);))
// stavi lozinku koju je korisnik unio u varijablu $ password, ako je prazna, onda uništimo varijablu
if (prazno ($login) ili prazno ($lozinka)) // ako korisnik nije unio prijavu ili lozinku, tada izdajemo grešku i zaustavljamo skriptu
{
exit ("Niste uneli sve podatke, vratite se i popunite sva polja!");
}
// ako su uneseni login i lozinka, onda ih obrađujemo tako da oznake i skripte ne rade, nikad ne znaš šta ljudi mogu unijeti
$login = stripslashes ($login);
$login = htmlspecialchars ($login);
$ lozinka = trake ($ lozinka);
$ lozinka = htmlspecialchars ($ lozinka);
// ukloni dodatne razmake
$login = trim ($login);
$ lozinka = trim ($ lozinka);
// spajanje na bazu podataka
include ("bd.php"); // bd.php fajl mora biti u istoj fascikli kao i svi ostali, ako nije, samo promenite putanju

$ result = mysql_query ("SELECT * FROM users WHERE login =" $ login "", $ db); // dohvati iz baze podataka sve podatke o korisniku s unesenim login-om
$ myrow = mysql_fetch_array ($ rezultat);
if (prazno ($ myrow ["password"]))
{
// ako korisnik sa unesenim login-om ne postoji
}
drugo (
// ako postoji, onda provjerite lozinke
if ($ myrow ["password"] == $ lozinka) (
// ako se lozinke podudaraju, tada započinjemo sesiju za korisnika! Možete mu čestitati, ušao je!
$ _SESSION ["login"] = $ myrow ["login"];
$ _SESSION ["id"] = $ myrow ["id"]; // ovi podaci se vrlo često koriste, tako da će prijavljeni korisnik "nositi sa sobom"
echo "Uspješno ste ušli na stranicu! Početna stranica";
}
drugo (
// ako se lozinke ne podudaraju

Izađi ("Izvinite, prijava koju ste uneli ili lozinka je netačna.");
}
}
?>

OK, sada je sve gotovo! Lekcija može biti dosadna, ali vrlo korisna. Ovdje je prikazana samo ideja registracije, a zatim je možete poboljšati: dodati zaštitu, dizajn, polja podataka, prenijeti avatare, odjaviti se s naloga (za to jednostavno uništite varijable iz sesije sa funkcijom unset) itd. Sretno!

Sve sam proverio, radi kako treba!

Top srodni članci