Od autora: prije ili kasnije, svaki web programer se suoči sa zadatkom da ograniči pristup određenoj stranici/stranici ili direktoriju. Moglo bi biti jednostavno tajna stranica na stranici, administrativnom dijelu stranice ili bilo kojem drugom dijelu kojem želimo ograničiti pristup i dati samo lozinkom. Da biste to učinili, možete, naravno, koristiti serverske alate. Mislim da svaki moderni hosting ima funkciju za zaštitu direktorija lozinkom, gdje možete kreirati korisnika, dodijeliti mu lozinku i nakon zaštite direktorija lozinkom pristup zatvorenom direktoriju će biti omogućen tek nakon unosa ispravnog login i lozinka. Ali ponekad poželite da sami nešto napišete, nešto brzo, jednostavno, ali u isto vreme pouzdano...
U ovoj lekciji pokušaćemo da napišemo svoje jednostavan sistem autorizacija. Imat ćemo tajnu stranicu - recimo da će to biti administratorska stranica, kojoj ćemo omogućiti pristup samo ovlašteni korisnik. Naš sistem autorizacije će se zasnivati na mehanizmu sesije. Prije nastavka ove lekcije, preporučujem vam da se upoznate s jednom od mojih prethodnih lekcija, u kojoj posebno razmatramo rad sesija -.
Ukratko, sav rad sa sesijama može se podijeliti u 3 faze:
Otvaranje sjednice. Na svim stranicama na kojima se podrazumijeva rad sa sesijama, sesija mora biti pokrenuta pomoću funkcije session_start().
Registriranje varijabli sesije.
Poništavanje registracije varijabli sesije pomoću funkcije unset() i zatvaranje sesije sa funkcijom session_destroy().
Korak 1Dakle, za naš rad napravićemo 3 fajla - Početna stranica (index.php), Kontakti (contact.php) i Admin panel (admin.php). Imajte na umu da ekstenzija datoteke kojoj ćemo ograničiti pristup treba biti .php. Kao što ste pretpostavili, ograničićemo pristup fajlu admin.php. Kod za sve datoteke je najjednostavniji - to je neka vrsta menija u redu sa linkovima na druge stranice, a ispod njega pojedinačni tekst svake stranice kako bismo ih međusobno razlikovali. Evo, na primjer, koda za indeksnu stranicu:
Početna | Kontakti | Admin
Ovo početna stranicaPreostale stranice, kao što sam rekao, razlikuju se od njega samo po tekstu iza oznake linije. Nisam kreirao punopravne stranice sa meta tagovima, jer je naš zadatak samo da ograničimo pristup određenoj stranici.
Korak 2Za sada možemo slobodno da se krećemo po svim stranicama, uključujući i administratorsku stranicu. Kako možemo ograničiti pristup njemu? Kakav će biti algoritam? Uradićemo sledeće: na samom početku stranice proverićemo da li je oznaka koja nam je potrebna u sesiji ili, jednostavnije rečeno, postoji li određena varijabla sesije (možemo proveriti i da li je vrednost varijable sesije jednaka određenoj vrijednosti). Ako takva varijabla ne postoji, onda korisnik koji traži ovu stranicu nije ovlašten, što znači da ćemo ga preusmjeriti na stranicu za autorizaciju, gdje će biti zatraženo da popuni formular sa imenom i lozinkom. Algoritam je izuzetno jednostavan - implementirajmo ga. Idite na datoteku admin.php, otvorite je na samom vrhu PHP konstrukcija i napiši ovaj kod:
|