Autentifikace u₧ivatel∙ slou₧φ k identifikaci u₧ivatele, kter² p°istupuje na strßnky. Pokud navφc pou₧φvßme funkce PHPLIB pro autorizaci, vyu₧φvajφ prßv∞ zde zφskanou identifikaci u₧ivatele.
Pou₧itφ autentifikace z knihovny PHPLIB mß n∞kolik v²hod oproti pou₧itφ autentifikaΦnφch mechanism∙, kterΘ nabφzejφ webovΘ servery:
Prvnφ krok, kter² p°ed pou₧itφm autentifikace musφme provΘst, je
·prava potomka t°φdy Auth
v souboru
local.inc
.
class IShop_Auth extends Auth { var $classname = "IShop_Auth"; var $lifetime = 15; var $database_class = "DB_IShop"; var $database_table = "auth_user"; function auth_loginform() { global $sess; include("loginform.ihtml"); } function auth_validatelogin() { global $username, $password; $this->auth["uname"]=$username; ## This provides access for "loginform.ihtml" $uid = false; $this->db->query(sprintf("select uid, perms from %s where username = '%s' and password = '%s'", $this->database_table, addslashes($username), addslashes($password))); while($this->db->next_record()) { $uid = $this->db->f("uid"); $this->auth["perm"] = $this->db->f("perms"); } return $uid; } }
Obvykle si vystaΦφme se zm∞nou nßzvu t°φdy z Poe_Auth
na nßÜ nßzev -- nap°. IShop_Auth
. Odpovφdajφcφm zp∙sobem
musφme jeÜt∞ upravit obsah ΦlenskΘ prom∞nnΘ
$classname
. Prom∞nnou $database_class
musφme
nastavit na jmΘno t°φdy, kterß obsahuje definici p°ipojenφ k databßzi
s tabulkou auth_user
. V naÜem p°φpad∞ to je
DB_IShop
.
Pokud chceme zm∞nit vzhled strßnky pro p°ihlßÜenφ, staΦφ zm∞nit
obsah souboru loginform.ihtml
.
Po t∞chto ·pravßch m∙₧eme p°φstup na strßnky podmφnit
autentifikacφ -- zadßnφm u₧ivatelskΘho jmΘna a odpovφdajφcφho
hesla. StaΦφ p°idat dalÜφ polo₧ku do pole p°edßvanΘho jako parametr
funkci page_open()
.
<? page_open(array("sess" => "IShop_Session", "auth" => "IShop_Auth")); ?> <html> <head> <title>Ochrßn∞nß strßnka</title> </head> <body> Tento text uvidφ jen ten, kdo znß sprßvnΘ jmΘno a heslo. </body> </html> <? page_close() ?>
U₧ivatelΘ a jejich hesla jsou ulo₧eni v tabulce
auth_user
. Pokud tedy mß mφt n∞kdo p°φstup ke strßnce,
musφme pro n∞j p°idat odpovφdajφcφ zßznam do tabulky. To m∙₧e ud∞lat bu∩
sama knihovna PHPLIB p°i vyu₧itφ registraΦnφho re₧imu, o kterΘm se
vφce dozvφte v dokumentaci. ObvyklejÜφ situace vÜak bude ruΦnφ p°idßnφ
do databßze -- a¥ u₧ skuteΦn∞ ruΦnφ, nebo vyvolanΘ skriptem potΘ, co
od novΘho u₧ivatele zφskßme dalÜφ osobnφ ·daje.
Tabulka auth_user
mß Φty°i polo₧ky. Prvnφ polo₧kou je
identifikßtor u₧ivatele. Nßsleduje u₧ivatelskΘ jmΘno, heslo a
oprßvn∞nφ (ta se vyu₧φvajφ p°i autorizaci u₧ivatele). Pro vygenerovßnφ
jednoznaΦnΘho identifikßtoru u₧ivatele se doporuΦuje pou₧φt
nßsledujφcφ volßnφ:
MD5(UniqID("n∞jak² text"))
Pokud tedy chceme do tabulky p°idat u₧ivatele johny
s heslem walker
, m∙₧eme pou₧φt p°φkaz
INSERT INTO auth_user VALUES('30f2d6b514ace85f8ad805c146df2744','johny','walker','')
Nynφ si m∙₧eme vyzkouÜet, ₧e bez znalosti tohoto jmΘna a hesla se na strßnku nikdo nedostane.
Dobr²m zvykem b²vß na strßnkßch zobrazovat u₧ivatelskΘ jmΘno, pod
kter²m jsem p°ihlßÜeni. Toho lze dosßhnout velice jednoduÜe -- staΦφ
zapßtrat ve t°φd∞ Auth
:
echo $auth->auth["uname"]
K dispozici mßme samoz°ejm∞ mnoho metod, kterΘ nßm umo₧≥ujφ s
autentifikacφ pracovat. Volßnφm $auth->unauth()
nebo
$auth->logout()
zruÜφme autentifikaci -- u₧ivatel se pro
p°φstup na dalÜφ strßnku bude muset znovu p°ihlßsit.