Često se dogodi da je potrebno posjetitelje podijeliti na poželjne i nepoželjne te pružiti priliku da neke stranice web mjesta vide samo oni koji imaju korisničko ime i lozinku. Kako to učiniti, na primjer, u skriptnom jeziku na strani poslužitelja PHP?
Upute
Korak 1
Organizirajmo najlakši način da zaštitimo vaše stranice od neovlaštenih posjetitelja. Nositelj informacija o tome je li posjetitelj ovlašten bit će sesija. Sesija je analogni kolačićima u pregledniku, s jedinom razlikom što se ne stvaraju na našem računalu, već na poslužitelju. I koriste se u istu svrhu kao i kolačići - za pohranu različitih podataka o nama dok idemo od stranice do stranice jedne stranice. Kad zatvorimo preglednik, poslužitelj uništava ovu sesiju i sljedeći put kad se prijavimo, stvara novu. Ovaj mehanizam poslužitelja koristimo za bilježenje je li korisnik već prijavljen u sesiju ili nije. Čitajući ove podatke, kad posjetitelj zatraži stranicu, php-skripta će ili otvoriti pristup stranicama zaštićenim lozinkom ili ponuditi unos korisničkog imena i lozinke.
Korak 1: Stvorite stranicu za unos prijave i lozinke. HTML kôd obrasca za autorizaciju u najjednostavnijem obliku može izgledati ovako:
Prijaviti se:
Zaporka:
Ovdje ćemo (na samom početku datoteke) dodati php-kod koji će provjeriti ispravnost korisničkog imena i lozinke koje je posjetitelj unio. Na početku ćemo napisati:
session_start ();
Ova naredba započinje novu sesiju ako ona već nije kreirana za ovog posjetitelja.
Zatim provjerimo ima li sesija varijablu pod nazivom 'userName' - ona će pohraniti ime ako je posjetitelj već bio prijavljen. Ako postoji takva varijabla, preusmjerite posjetitelja na glavnu stranicu (index.php) i dovršite izvršavanje ove php skripte:
if ($ _ SESSION ['userName']) {
zaglavlje ("Mjesto: index.php");
Izlaz;
}
Ostatak koda izvršit će se samo ako korisnik još nije unijeo ispravno korisničko ime i lozinku. Označimo koju prijavu i lozinku treba smatrati ispravnima:
$ validName = 'Ja sam moj!';
$ validPass = 'tajna lozinka';
Zatim provjeravamo podudaraju li se vrijednosti predane iz obrasca s ispravnim. Budući da smo u obrascu naveli metodu prijenosa podataka POST, treba ih čitati iz superglobalne varijable $ _POST:
if ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
zaglavlje ("Mjesto: index.php");
Izlaz;
}
Ovdje će se kôd u zavojnim zagradama {} izvršiti s ispravnim vrijednostima korisničkog imena i lozinke. Na liniji $ _SESSION ['userName'] = $ validName; ma zapisujemo u sesiju varijablu pod imenom 'userName' koja sadrži prijavu sada ovlaštenog korisnika. To će biti oznaka da mu je pristup otvoren svugdje dok god je njegova trenutna sesija valjana.
A u slučaju da se u obrazac unesu netočni podaci, dodajte odgovarajuću poruku:
inače odjek"
Prijava ili lozinka nisu točni!
;
Sav kod koji treba spremiti u datoteku koja se zove login.php izgledat će ovako:
<? php
session_start ();
if ($ _ SESSION ['userName']) {
zaglavlje ("Mjesto: index.php");
Izlaz;
}
$ validName = 'Ja sam moj!';
$ validPass = 'tajna lozinka';
if ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
zaglavlje ("Mjesto: index.php");
Izlaz;
}
inače odjek"
Prijava ili lozinka nisu točni!
;
?>
Prijaviti se:
Zaporka:
Korak 2
Korak 2: Stvorite autorizacijski blok - zasebnu datoteku koja će biti povezana sa svakom stranicom koja treba zaštitu lozinkom. Ova će datoteka sadržavati samo php-kôd, pa će njezino proširenje biti "php", a mi ćemo joj dati naziv prema tradiciji takvih datoteka - "auth", odnosno "auth.php". I ovdje bi također odmah nakon početne <? Php oznake trebala postojati uputa za započinjanje sesije:
session_start ();
Sve varijable koje su pohranjene u sesiji možemo pročitati iz superglobalnog niza $ _SESSION. Moramo provjeriti vrijednost varijable "userName" - ako se posjetitelj još nije prijavio, tada ga neće biti u polju i preusmjerit ćemo ga na stranicu za unos korisničkog imena i lozinke:
if (! $ _ SESIJA ['ovlašteno']) {
zaglavlje ("Mjesto: login.php");
Izlaz;
}
Sav kôd koji treba spremiti u datoteku auth.php izgledat će ovako:
<? php
session_start ();
if (! $ _ SESSION ['admin']) {
zaglavlje ("Mjesto: enter.php");
Izlaz;
}
?>
3. korak
Korak 3: nakon što te datoteke spremimo na poslužitelj, one će ostati na svim php-stranicama koje trebaju biti zaštićene od neovlaštenih korisnika da bi se povezao autorizacijski blok. Odnosno, na samom početku svake php datoteke trebat ćete umetnuti ovaj kod:
<? php
zahtijevaju "auth.php";
?>
A da biste promijenili pristupnu lozinku, morat ćete promijeniti vrijednosti ovih varijabli u datoteci login.php:
$ validName = 'Ja sam moj!';
$ validPass = 'tajna lozinka';
$ validName - prijava, $ validPass - lozinka.