Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Greške
  • Jednostavna skripta za registraciju u php i mysql. Izrada jednostavnog sustava registracije korisnika u PHP-u i MySQL-u

Jednostavna skripta za registraciju u php i mysql. Izrada jednostavnog sustava registracije korisnika u PHP-u i MySQL-u

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

Prvo polje je za korisničko ime, drugo je za lozinku. A ovo drugo nije tako jednostavno. Budući da je to trenutno samo polje za unos teksta.

Rezultat u pregledniku:

Da bi se tekst uneseni u njega zamijenio zvjezdicama, kao što je uobičajeno za polje ove vrste, morate učiniti jednu jednostavnu radnju. Naime, zamijeniti vrijednost atributa tip na zaporka:

Proizlaziti:

Gumb za slanje obrasca

Izvoli. Naš obrazac je gotovo spreman. Sada, da biste dovršili njegovu izradu, morate napraviti gumb koji će se koristiti za slanje obrasca. Problem je riješen pomoću oznake s tipom podnijeti.

Ako na gumbu treba postojati neka vrsta natpisa, onda se to može učiniti pomoću atributa vrijednost. Na vama je hoćete li imenovati gumb ili ne, ako to učinite, poslužitelj će primiti ovo ime, kao i vrijednost gumba.

Obično je naziv gumba za slanje obrasca potreban kada obrazac ima više gumba, od kojih svaki izvodi određenu radnju. Zahvaljujući tome, poslužitelj, primajući naziv i vrijednost gumba od preglednika, razumije na koji je gumb korisnik kliknuo i što, prema tome, treba učiniti.

Kao rezultat, naš kod obrasca će izgledati ovako:

Rezultat u pregledniku:

Svatko tko razvija web stranice prije ili kasnije suoči se sa zadatkom kao što je autorizacija i autentifikacija korisnika, implementiran upravo uz pomoć programskog jezika, a ne uz pomoć standarda http protokola. Danas ćemo pogledati primjer izrade jednostavne autorizacije pomoću programskog jezika PHP, a korisničke podatke ćemo pohraniti u MySQL bazu podataka.

Metoda u nastavku je jednostavna ili, takoreći, osnova za stvaranje normalne autorizacije, ali možete je koristiti, budući da radi prilično dobro, također možete sami poboljšati ovu metodu i implementirati je na svoju stranicu.

Ova metoda se temelji na sesijama, ali ovdje također koristim kolačiće, tako da preglednik pamti korisnika koji se posljednji put autentificirao, kako ne biste svaki put unosili prijavu, naravno možete pohraniti lozinku u kolačiće, ali ovo je nije sigurno, čak i ako je šifrirano. Za završetak sesije samo zatvorite preglednik i ponovno ga otvorite.

Kreiranje objekata u bazi podataka

Prijeđimo na praksu. Prvo, napravimo tablicu za pohranjivanje korisničkih podataka u MySQL bazi podataka. Predlažem korištenje jednostavne strukture tablice ( Naravno, možete to nečim dopuniti, moja baza se zove test, a tablica korisnici):

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 CHARACTER SET utf8 COLLATE utf8_general_ci;

I odmah dodajmo jedan zapis u ovu tablicu:

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

Ukupno smo dobili:

  • Prijaviti se– moja prijava;
  • Zaporka -;

Naravno, lozinku ćemo pohraniti u raspršenom obliku, jer pohranjivanje lozinke u čistom tekstu nije, najblaže rečeno, nesigurno. Gore imamo hash lozinke od 123, tako da kada unesemo lozinku u obrazac, dobit ćemo točno 123, a ne.

Izrada obrasca za registraciju

Kako bi se korisnik sam registrirao potrebno je izraditi obrazac iz kojeg će podaci biti poslani u datoteku za obradu registracije, tj. pisati u bazu podataka. Na primjer, evo najlakšeg načina:

0) ( $error = "Već postoji korisnik s ovom prijavom"; ) // Ako ne, dodajte novog korisnika if(!isset($error)) ( $login = mysql_real_escape_string(trim(htmlspecialchars($_POST[) "login" ]))); // Uklonite razmake i raspršite lozinku $password = md5(trim($_POST["password"])); mysql_query("INSERT INTO users SET user_login="".$login."" , user_password=" ".$password."""); echo "Uspješno ste se registrirali s prijavom - ".$login; exit(); ) else ( // ako postoji takva prijava, onda kažemo o tome echo $greška; ) ) //prema zadanim postavkama, podaci će biti poslani u istu datoteku za ispis<<< html

Prijaviti se
Zaporka
html; ?>

Usput, ovom metodom najbolje je koristiti latinična slova za prijavu ( oni. Engleski), ako želite napisati prijavu na ruskom, morat ćete malo prilagoditi kod. Datoteku možete nazvati 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 ga koristiti u svojim datotekama i imenovati ih kako god želite, ovdje opisujem sam proces autorizacije, tako da ga možete primijeniti posvuda. Usput, u svim datotekama morat ćete koristiti funkciju session_start(); tako da možete provjeriti je li korisnik prijavljen ili ne. I još jedna stvar, naravno, zapišite svoje postavke veze s bazom podataka.

Izrada obrasca za autorizaciju

"." Prijavljeni ste
Oni. provjerili smo sesiju i možemo otvoriti pristup određenim podacima"; ) else ( $login = ""; // provjerite kolačić, možda je već bio ovdje if (isset($_COOKIE["CookieMy"]))( $ prijava = htmlspecialchars( $_COOKIE["CookieMy"]); ) //jednostavni ispis obrasca<<< html

Prijaviti se
Zaporka
html; ) ?>

Bilješka! Ako iznenada php parser ne uspije raditi za vas, tj. sam php kod vam se prikaže na ekranu, onda jednostavno nemate uopće uključenu php obradu u html datotekama. Postavke se vrše u konfiguracijskoj datoteci web poslužitelja httpd.conf (ako je apache):

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

U IIS-u, u prozoru Dodaj mapiranje modula, također dodajte *.php u *.html, odvojene zarezima. To je ako to radite kod kuće na svom web serveru, a ako sve to radite na hostu, onda ćete im morati pisati i tražiti da naprave potrebne izmjene, neki hostovi su ih već napravili.

Komentirao sam kod, pa mislim da bi sve trebalo biti jasno. Još jednom, u svim datotekama čiji sadržaj ne želite pokazati neovlaštenim korisnicima morate napisati session_start i, vjerojatno, to je sve. Ako imate pitanja, pitajte u komentarima. Sretno!

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

Postoji nekoliko načina kreiranje registracije i autorizacije korisnika, ali u ovom ću članku analizirati svoj favorit – kroz mehanizam sesija ili kolačića.

Prije svega, ako želite registrirajte se na svojoj web stranici, tada morate razumjeti gdje će se pohraniti korisnički podaci. Može se pohraniti u običnu tekstualnu datoteku, u XML datoteka 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 bazu podataka- najpopularniji, i savjetujem vam da koristite ovu metodu pohranjivanja informacija.

Odlučeno je mjesto skladištenja. Sada idemo izravno na algoritam autorizacije:

  1. Izradite obrazac za registraciju na HTML.
  2. Dohvatite podatke iz obrasca u skripti rukovatelja.
  3. Provjerite primljene podatke, a ako su netočni, preusmjerite natrag na obrazac za registraciju.
  4. Ako su podaci točni, upišite ih u bazu podataka.

To je cijeli proces registracija korisnika na stranici. Odnosno, registracija je čuvanje podataka o korisniku na web mjestu.

Sljedeća stavka je autorizacija korisnika na stranici, međutim, prije nego što nastavim, reći ću vam o jednoj važnoj točki u obrascu za registraciju - lozinci. Toplo preporučujem da ne pohranjujete lozinke u čistom tekstu (na primjer, " 123456 "). Obavezno ih šifrirajte, barem pomoću funkcije md5(). I pohranite šifriranu lozinku u bazu podataka.

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

  1. Napravite obrazac za autorizaciju korisnika na HTML gdje će korisnik morati unijeti svoje korisničko ime i lozinku.
  2. U skripti rukovatelja prihvatite podatke od korisnika. Ako ste me poslušali i pohranite šifrirane lozinke u bazu podataka, onda prvo šifrirajte primljenu lozinku. Ako baza podataka sadrži otvorene lozinke, tada nije potrebno šifrirati.
  3. Provjerite točnost unesenih podataka i ako se prijava i lozinka podudaraju s postojećim korisnikom u bazi podataka, pišite na kolačić ili informacije o sesiji s prijavom i šifriranom lozinkom (ili otvorenom lozinkom ako je niste šifrirali).
  4. Ako su prijava i/ili lozinka netočno uneseni, preusmjerite se natrag na obrazac za autorizaciju.

Sada imate potrebne informacije o autorizacija korisnika, koji je pohranjen u kolačić ili na poslužitelju (ako je sesija). Zapravo, sada morate provjeriti ove informacije na svakoj stranici stranice i to na isti način kao što provjeravate obrazac za autorizaciju. Odnosno čitati iz kolačić(sesija) prijavu i lozinku i provjerite je. Ako su točne, onda prikaži jednu stranicu (za registrirane korisnike), a ako su pogrešne, onda prikaži drugu stranicu (za goste).

I zadnji. Kako se pravi gumb? Izlaz"? Vrlo jednostavno. Pritiskom na ovaj gumb, kolačić, odnosno sesija. Dakle, korisnik se automatski odjavljuje sa stranice.

Kao što vidite, sve je elementarno, ali kada implementirate ovaj algoritam, sigurno ćete imati puno pitanja. Na primjer, što učiniti kada registrirate korisnika čija je prijava već u bazi podataka. Implementacija raznih ulaznih provjera, implementacija provjere postojanja e-pošta i tako dalje - sve je to prilično komplicirano ako to radite prvi put. Ipak sam izdao najviše soka. Ako imate bilo kakvih pitanja tijekom implementacije, pitajte ih na forumu ili u komentarima.

Ako jedan od odjeljaka svoje stranice trebate učiniti dostupnim ograničenom, ali neodređenom krugu ljudi, to ćete najlakše učiniti registracijom i autorizacijom korisnika. Postoji mnogo načina za autorizaciju korisnika. Možete koristiti i alate web poslužitelja i alate za programski jezik. Govorit ćemo o slučaju kada se koriste PHP sesije.

Za početak, raspravimo sve korake koje ćemo poduzeti sljedeće. Što nam zapravo treba? Treba nam skripta koja će registrirati korisnika, autorizirati korisnika, preusmjeriti korisnika negdje nakon autorizacije. Također ćemo morati izraditi stranicu koja će biti zaštićena od pristupa neovlaštenih korisnika. Za registraciju i autorizaciju morat ćemo izraditi HTML obrasce. Podatke o registriranim korisnicima pohranit ćemo u bazu podataka. To znači da još uvijek trebamo DBMS skriptu za povezivanje. Sav posao obavljat ćemo funkcije koje sami napišemo. Ove ćemo funkcije spremiti u posebnu datoteku.

Dakle, trebamo sljedeće datoteke:

  • povezivanje sa DBMS-om;
  • prilagođene funkcije;
  • ovlaštenje;
  • registracija;
  • sigurna stranica;
  • skripta za isključivanje korisnika;
  • skripta koja provjerava status autorizacije korisnika;
  • stilski list za najjednostavniji dizajn naših stranica.

Sve će to biti besmisleno ako u bazi nemate odgovarajuću tablicu. Pokrenite svoj alat za upravljanje DBMS-om (PhpMyAdmin ili naredbeni redak, što vam više odgovara) i u njemu izvršite sljedeći upit:

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_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Datoteke skripte ću imenovati ovako (sve će biti u istom direktoriju):

  • baza podataka.php
  • funkcije.php
  • prijava.php
  • registracija.php;
  • index.php;
  • odjava.php;
  • provjeriAuth.php;
  • stil.css

Siguran sam da razumijete svrhu svake od njih. Počnimo sa skriptom za povezivanje DBMS-a. Već ste ga vidjeli. Samo spremite ovaj kod skripte u datoteku pod nazivom database.php. Deklarirati ćemo prilagođene funkcije u datoteci functions.php. Kako će to sve funkcionirati? Neovlašteni korisnik pokušava pristupiti zaštićenom index.php dokumentu, sustav provjerava da li je korisnik ovlašten, ako je korisnik neovlašten, preusmjerava se na stranicu za autorizaciju. Na stranici za autorizaciju korisnik bi trebao vidjeti obrazac za autorizaciju. Napravimo to.

Autorizacija korisnika

Registar.

Sada našem obliku treba dati neki oblik. Istovremeno ćemo definirati pravila za ostale elemente. Gledajući unaprijed, dat ću sadržaj lista stilova u cijelosti.

/* style.css datoteka */ .row ( margin-bottom:10px; width:220px; ) .row label ( display:block; font-weight:bold; ) .row input.text ( font-size:1.2em; padding:2px 5px;) .to_reg (font-size:0.9em;) .instruction (font-size:0.8em; color:#aaaaaa; margin-left:2px; cursor:default;) .error (color:red; margin-left:3px; )

Ako je sve učinjeno kako treba, trebali biste imati sljedeće u svom pregledniku:

Naravno, nemamo još niti jednog registriranog korisnika, a da biste se prijavili, morate se registrirati. Napravimo obrazac za registraciju.

Registracija korisnika

" />

Možda ste primijetili da su PHP varijable prisutne u HTML kodu. Oni su sadržaj atributa tekstualnog polja obrasca, sadržaj spremnika pogrešaka. Ali nismo inicijalizirali ove varijable. Učinimo to.

Registracija korisnika

" />
Korisničko ime može sadržavati samo latinična slova, brojeve, simbole "_", "-", ".". Duljina korisničkog imena mora biti najmanje 4 znaka i ne duža od 16 znakova
U zaporci možete koristiti samo latinična slova, brojeve, simbole "_", "!", "(", ")". Lozinka mora imati najmanje 6 znakova i ne duže od 16 znakova
Ponovite prethodno unesenu lozinku

Atribut radnje oznake obrasca nema naveden parametar. U tom slučaju, kada se podaci obrasca pošalju, bit će obrađeni u istoj skripti iz koje su poslani. Dakle, moramo napisati kod koji obrađuje podatke obrasca. Ali prvo raspravimo algoritam za njihovu obradu.

Polja za prijavu i lozinku moraju biti neprazna. Zatim morate provjeriti usklađenost prijave sa zahtjevima. Lozinka također mora ispunjavati opisane zahtjeve, a ponovno navedena lozinka mora joj odgovarati i, osim toga, moraju biti identične. Ako bilo koji od ovih uvjeta nije ispunjen, obrada podataka obrasca treba biti prekinuta, odgovarajuće upozorenje treba biti upisano u polje poruka o pogrešci i to treba biti prikazano korisniku. Radi praktičnosti korisnika, spremit ćemo prijavu koju je on unio (ako ju je naveo), upisujući njezinu vrijednost u polje $fields.

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

Sada, recimo da je korisnik kliknuo na gumb za registraciju, a nije ispunio polja obrasca. Prema našem algoritmu, prijava i lozinka ne mogu biti prazni. Ako ovaj uvjet nije ispunjen, registracija nije moguća. Imamo na umu da se obrada podataka obrasca odvija u trenutnom scenariju. Dakle, moramo promijeniti njegov kod dodavanjem odgovarajućih provjera. Raspravimo odmah o sljedećim provjerama. Ako su unesene i prijava i lozinka, morate provjeriti njihovu usklađenost s navedenim zahtjevima. Za provjeru prijave i lozinke izradit ćemo korisničke funkcije u datoteci functions.php.

/** * functions.php * Datoteka s prilagođenim funkcijama */ // Povežite datoteku s parametrima veze na DBMS require_once("database.php"); // Provjera funkcije korisničkog imena checkLogin($str) ( // Inicijaliziranje varijable s mogućom porukom o pogrešci $error = ""; // Ako nema niza za prijavu, vrati poruku o pogrešci if(!$str) ( $error = " Niste unijeli korisničko ime"; return $error; ) /** * Provjera korisničkog imena pomoću regularnih izraza * Prijava ne smije biti kraća od 4, ne duža od 16 znakova * Mora sadržavati latinična slova, brojeve, * to mogu biti znakovi "_", "-", "." */ $uzorak = "/^[-_.a-z\d](4,16)$/i"; $rezultat = preg_match($uzorak, $ str) ; // Ako provjera ne uspije, vrati poruku o pogrešci if(!$result) ( $error = "Nevažeći znakovi u korisničkom imenu ili je korisničko ime prekratko (dugo)"; return $error; ) // Ako je sve je u redu, return true return true; ) // Provjerite funkciju korisničke lozinke checkPassword($str) ( // Inicijalizirajte varijablu s mogućom porukom o pogrešci $error = ""; // Ako nedostaje unesite string s prijavom, vratite poruku o pogrešci if(!$str) ( $error = "Niste unijeli lozinku"; povratak $greška; ) /** * Provjera korisničke lozinke 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 "_", "!", " (", ")" */ $uzorak = "/^[_!)(.a-z\d](6,16)$/i"; $rezultat = preg_match($uzorak, $str); // Ako je označen neuspješno, vrati poruku o pogrešci if(!$result) ( $error = "Nevažeći znakovi u korisničkoj lozinci ili lozinka je prekratka (duga)"; return $error; ) // Ako je sve u redu, return true return true; )

Sada moramo modificirati datoteku registration.php da koristi funkcije koje smo deklarirali. Dodat ćemo uvjet u skriptu koja provjerava klik na gumb za registraciju. Unutar ovog uvjeta pokreće se provjera prijave i lozinke. Ako bilo koja od provjera ne uspije, ponovno prikazujemo obrazac i prikazujemo poruku o pogrešci. Ukoliko nema grešaka, registriramo korisnika, dok se obrazac za registraciju više ne prikazuje, obavještavamo korisnika o uspješnoj registraciji te ga funkcijom header() preusmjeravamo na obrazac za autorizaciju.

Uspješno ste se registrirali u sustav. Sada ćete biti preusmjereni na stranicu za prijavu. Ako se to ne dogodi, idite na njega putem izravne veze.

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

Trebali ste primijetiti još jednu novu funkciju u skripti - registration() . Još nismo objavili. Učinimo to.

// Funkcija registracije korisnika function registration($login, $password) ( // Inicijaliziraj varijablu s mogućom porukom o pogrešci $error = ""; // Ako nema niza za prijavu, vrati poruku o pogrešci if(!$login) ( $ error = "Login not specified"; return $error; ) elseif(!$password) ( $error = "Password not specified"; return $error; ) // Provjerite je li korisnik već registriran // Povežite se na DBMS connect() ; // Napišite niz upita $sql = "SELECT `id` FROM `users` WHERE `login`="" . $login. """; // Napravite upit baze podataka $query = mysql_query($ sql) ili die( ""); // Pogledajte broj korisnika s ovom prijavom, ako postoji barem jedan, // vratite poruku o pogrešci if(mysql_num_rows($query) > 0) ( $error = "The korisnik s navedenom prijavom je već registriran"; return $ error; ) // Ako ne postoji takav korisnik, registrirajte ga // Napišite niz upita $sql = "INSERT INTO `users` (`id`,`login`, `lozinka`) VRIJEDNOSTI (NULL, "" . $login . " ","" . $lozinka. "")"; // Napravite upit bazi podataka $query = mysql_query($sql) ili die("

Nije moguće dodati korisnika: " . mysql_error() . ". Došlo je do pogreške u retku ". __LINE__."

"); // Ne zaboravite prekinuti vezu s DBMS-om mysql_close(); // Vrati true, što ukazuje na uspješnu registraciju korisnika return true; )

Ako je sve u redu, vaš korisnik će biti registriran. Možete testirati obrazac. Pokušajte registrirati korisnike s istim prijavama. Nakon uspješne registracije, korisnik će biti preusmjeren na obrazac za autorizaciju. Prethodno smo jednostavno stvorili oznake za prikaz ovog obrasca. Budući da nijedan parametar nije naveden u atributu akcije, podaci poslani putem obrasca bit će obrađeni u istoj skripti. Dakle, moramo napisati kod za obradu i dodati ga u login.php dokument.

Autorizacija korisnika

;">

Ukoliko niste registrirani u sustavu, registrirajte se.

Možda ste primijetili da sada imamo još jednu nepoznatu funkciju u autorizacijskoj skripti — autorizaciju() . Ova funkcija bi trebala autorizirati korisnika tako da prvo provjeri postoji li registrirani korisnik u bazi podataka s istom prijavom i lozinkom. Ako se takav korisnik ne pronađe, autorizacija će biti prekinuta, a na zaslonu će se prikazati poruka o neuspjehu. Nakon uspješne provjere, autorizacija() funkcija će pokrenuti sesiju i u nju upisati korisničke vrijednosti za prijavu i lozinku, obavijestiti skriptu o uspješnosti autorizacije, a skripta će preusmjeriti korisnika na sigurnu stranicu resursa.

/** * Funkcija autorizacije korisnika. * Autorizacija korisnika provodit će se * pomoću PHP sesija. */ autorizacija funkcije($login, $password) ( // Inicijaliziraj varijablu s mogućom porukom o pogrešci $error = ""; // Ako nema niza za prijavu, vrati poruku o pogrešci if(!$login) ( $error = " Prijava nije navedena"; return $error; ) elseif(!$password) ( $error = "Password not specified"; return $error; ) // Provjerite je li korisnik već registriran // Povežite se na DBMS connect( ); // Moramo provjeriti postoji li takav korisnik među registriranima // Sastavite niz upita $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" I `password`="".$password ."""; // Izvršite upit $query = mysql_query($sql) ili die("

Nije moguće izvršiti upit: " . mysql_error() . ". Došlo je do pogreške u retku ". __LINE__."

"); // Ako ne postoji korisnik s takvim podacima, vrati poruku o pogrešci if(mysql_num_rows($query) == 0) ( $error = "Korisnik s navedenim podacima nije registriran"; return $error; ) // Ako korisnik postoji, pokrenite sesiju session_start(); // I upišite korisničku prijavu i lozinku // Da bismo to učinili, koristimo superglobalni niz $_SESSION $_SESSION["login"] = $login; $ _SESSION["password"] = $password; / / Ne zaboravite zatvoriti vezu s bazom podataka mysql_close(); // Vrati true za izvješće o uspješnoj autorizaciji korisnika return true; )

Kada korisnik ulazi na sigurnu stranicu, trebali biste provjeriti ispravnost njegovih autorizacijskih podataka. Da bismo to učinili, potrebna nam je još jedna korisnički definirana funkcija. Nazovimo to checkAuth() . Njegova će zadaća biti provjera autorizacijskih podataka korisnika s onima pohranjenima u našoj bazi podataka. Ako se podaci ne podudaraju, korisnik će biti preusmjeren na stranicu za autorizaciju.

Funkcija checkAuth($login, $password) ( // Ako nema prijave ili lozinke, vrati false if(!$login || !$password) vrati false; // Provjerite je li takav korisnik registriran // Povežite se na DBMS connect(); // Sastavite niz upita $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND `password`=".$password."""; // Izvršite upit $ query = mysql_query($sql) ili die("

Nije moguće izvršiti upit: " . mysql_error() . ". Došlo je do pogreške u retku ". __LINE__."

"); // Ako ne postoji korisnik s takvim podacima, vratite false; if(mysql_num_rows($query) == 0) ( return false; ) // Ne zaboravite zatvoriti vezu s bazom podataka mysql_close(); // U suprotnom, vrati true vrati true; )

Sada kada je korisnik došao na sigurnu stranicu, moramo pozvati funkciju provjere valjanosti autorizacijskih podataka. Skriptu za poziv i provjeru smjestit ćemo u zasebnu datoteku checkAuth.php i povezati je s onim stranicama koje će biti zatvorene za javni pristup.

/** * Skripta za provjeru autorizacije korisnika */ // Pokretanje sesije, iz koje ćemo izdvojiti login i lozinku // ovlaštenih korisnika session_start(); // Uključite datoteku s prilagođenim funkcijama require_once("functions.php"); /** * Da bismo utvrdili je li korisnik prijavljen, moramo * provjeriti postoje li zapisi u bazi podataka za njegovo korisničko ime * i lozinku. Za to ćemo koristiti prilagođenu funkciju * ​​za provjeru točnosti podataka ovlaštenog korisnika. * Ako ova funkcija vrati false, tada nema autorizacije. * Ako nema autorizacije, jednostavno preusmjeravamo * korisnika na stranicu za autorizaciju. */ // Ako sesija sadrži podatke za prijavu i lozinku, // provjerite ih if(isset($_SESSION["login"]) && $_SESSION["login"] && isset($_SESSION["password" ]) && $_SESSION["password"]) ( // Ako provjera valjanosti postojećih podataka ne uspije if(!checkAuth($_SESSION["login"], $_SESSION["password"])) ( // Preusmjerava korisnika na zaglavlje stranice za prijavu ("lokacija: login.php"); // Prekinite izvršavanje izlaza skripte; ) ) // Ako nema podataka ni o prijavi ni o korisničkoj lozinci, // smatramo da nema autorizacije, preusmjeravamo korisnik // na autorizacijsku stranicu else ( header("location: login.php"); // Zaustavi izvođenje skripte exit; )

Kreirajmo sada kôd za našu sigurnu stranicu. Bit će prilično jednostavno.

Autorizacija i registracija korisnika

Uspješna autorizacija.

Pristupili ste sigurnoj stranici. Možete se odjaviti.

Kao što vidite, u zaštićeni dokument uključujemo samo jednu datoteku - checkAuth.php. Sve ostale datoteke uključene su u druge scenarije. Stoga naš kod ne izgleda glomazno. Organizirali smo registraciju i autorizaciju korisnika. Sada morate dopustiti korisnicima da se odjave. Da bismo to učinili, izradit ćemo skriptu u datoteci logout.php.

/** * Skripta za odjavu korisnika. Budući da su korisnici * ovlašteni kroz sesije, njihovo korisničko ime i lozinka pohranjeni su * u $_SESSION superglobal nizu. Da biste se * odjavili iz sustava, jednostavno uništite * vrijednosti polja $_SESSION["login"] i $_SESSION["password"], * nakon čega preusmjeravamo korisnika na stranicu za prijavu */ // Budite obavezno započeti sesiju session_start(); poništi($_SESSION["prijava"]); poništi($_SESSION["lozinka"]); zaglavlje("lokacija: login.php");

Skripta za registraciju, autorizaciju i verifikaciju korisnika je spremna. Možete ga koristiti za sebe, dopuniti, modificirati prema svojim potrebama. Ako imate pitanja, možete ih postaviti u komentarima. Možete preuzeti sve datoteke o kojima se raspravlja ovdje, spakirane u jednu arhivu.

p.s. Svjestan sam da je bolje pisati objektno orijentirani kod, znam da se ne isplati prenositi i pohranjivati ​​lozinku u čistom tekstu, da se podaci uneseni u bazu moraju prvo provjeriti. Znam. Neću o ovome ovdje.

Zdravo! Sada ćemo pokušati implementirati najjednostavniju registraciju na web mjestu koristeći PHP + MySQL. Da biste to učinili, Apache mora biti instaliran na vašem računalu. Kako funkcionira naša skripta prikazano je u nastavku.

1. Započnimo stvaranjem tablice korisnika u bazi podataka. Sadržat će korisničke podatke (prijavu i lozinku). Idemo na phpmyadmin (ako kreirate bazu podataka na računalu http://localhost/phpmyadmin/). Napravi tablicu korisnika, imat će 3 polja.

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

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

$db = mysql_connect("vaš MySQL poslužitelj","prijava na ovaj poslužitelj","lozinka za ovaj poslužitelj");
mysql_select_db ("naziv baze podataka za povezivanje", $db);
?>

U mom slučaju to izgleda ovako:

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

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

3. Napravite reg.php datoteku sa sadržajem (svi komentari unutra):



Registracija


Registracija
















4. Napravite datoteku, koji će unijeti podatke u bazu i spremiti korisnika. spremi_korisnika.php(komentari unutra):



{
}
//ako se unese prijava i lozinka, onda ih obrađujemo tako da oznake i skripte ne rade, nikad se ne zna što ljudi mogu unijeti


// uklonite dodatne razmake
$login = trim($login);
$lozinka = trim($lozinka);
// povezivanje s bazom podataka
// provjerite postoji li korisnik s istom prijavom
$result = mysql_query("SELECT id FROM korisnika WHERE login="$login"",$db);
if (!empty($myrow["id"])) (
exit("Nažalost, korisničko ime koje ste unijeli je već registrirano. Unesite drugo korisničko ime.");
}
// ako nema, spremite podatke
$result2 = mysql_query ("INSERT INTO korisnici (login,password) VALUES("$login","$password")");
// Provjerite ima li grešaka
ako ($result2=="TRUE")
{
echo "Uspješno ste se registrirali! Sada možete ući na stranicu. Glavna stranica";
}
drugo(
echo "Greška! Niste prijavljeni.";
}
?>

5. Sada se naši korisnici mogu registrirati! Zatim je potrebno napraviti "vrata" za ulazak na stranicu za već registrirane korisnike. indeks.php(komentari unutra):

// cijeli postupak radi na sesijama. Upravo u njemu se pohranjuju podaci korisnika dok je na stranici. Vrlo je važno pokrenuti ih na samom početku stranice!!!
početak_sesije();
?>


Glavna stranica


Glavna stranica











Registar



// Provjerite jesu li varijable prijava i ID korisnika prazne
if (prazno($_SESSION["login"]) ili prazno($_SESSION["id"]))
{
// Ako je prazno, ne prikazujemo vezu
echo "Prijavljeni ste kao gost
Ovaj link je dostupan samo registriranim korisnicima";
}
drugo
{

U datoteci indeks.php prikazat ćemo poveznicu koja će biti otvorena samo registriranim korisnicima. To je cijela poanta skripte - ograničiti pristup bilo kojim podacima.

6. Postoji datoteka s provjerom unesene prijave i lozinke. testreg.php (komentari unutra):

session_start();// cijeli postupak radi na sesijama. Upravo u njemu se pohranjuju podaci korisnika dok je na stranici. Vrlo je važno pokrenuti ih na samom početku stranice!!!
if (isset($_POST["login"])) ( $login = $_POST["login"]; if ($login == "") ( unset($login);) ) //stavite prijavu koju ste unijeli korisnika u varijablu $login, ako je prazna, uništavamo varijablu
if (isset($_POST["password"])) ( $password=$_POST["password"]; if ($password =="") ( unset($password);) )
//stavite lozinku koju je korisnik unio u varijablu $password, ako je prazna, uništite varijablu
if (empty($login) or empty($password)) //ako korisnik nije unio prijavu ili lozinku, izdajemo pogrešku i zaustavljamo skriptu
{
exit("Niste unijeli sve podatke, vratite se i ispunite sva polja!");
}
//ako se unese prijava i lozinka, onda ih obrađujemo tako da oznake i skripte ne rade, nikad se ne zna što ljudi mogu unijeti
$login = stripslashes($login);
$login = htmlspecialchars($login);
$lozinka = stripslashes($lozinka);
$lozinka = htmlspecialchars($lozinka);
// uklonite dodatne razmake
$login = trim($login);
$lozinka = trim($lozinka);
// povezivanje s bazom podataka
include("bd.php");// datoteka bd.php trebala bi biti u istoj mapi kao i sve ostale, ako nije, samo promijenite putanju

$result = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //dohvaćanje svih podataka o korisniku s unesenom prijavom iz baze podataka
$myrow = mysql_fetch_array($rezultat);
ako (prazno($myrow["lozinka"]))
{
//ako korisnik s upisanom prijavom ne postoji
}
drugo(
//ako postoji, provjerite lozinke
if ($myrow["password"]==$password) (
//ako se lozinke podudaraju, tada pokrećemo sesiju za korisnika! Možete mu čestitati, ušao je!
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//ovi podaci se vrlo često koriste, pa će ih prijavljeni korisnik "nositi"
echo "Uspješno ste se prijavili na stranicu! Glavna stranica";
}
drugo(
//ako se lozinke ne podudaraju

Izlaz ("Žao nam je, prijava ili lozinka koju ste unijeli nisu točni.");
}
}
?>

OK, sada je sve gotovo! Možda je lekcija dosadna, ali vrlo korisna. Ovdje je prikazana samo ideja registracije, a zatim je možete poboljšati: dodajte zaštitu, dizajn, podatkovna polja, učitajte avatare, odjavite se sa svog računa (za to jednostavno uništite varijable iz sesije s funkcijom nepostavljeno) i tako dalje. Sretno!

Sve provjerio, radi dobro!

Najpopularniji povezani članci