Dit gebeur dikwels dat dit nodig is om besoekers in wenslik en ongewenst te verdeel, en om slegs diegene met 'n gebruikersnaam en wagwoord die geleentheid te gee om sommige bladsye op die webwerf te sien. Hoe kan u dit byvoorbeeld doen in die scripttaal PHP aan die bedienerskant?
Instruksies
Stap 1
Kom ons organiseer die maklikste manier om u bladsye teen ongemagtigde besoekers te beskerm. Die draer van inligting oor of die besoeker gemagtig is, sal die sessie wees. 'N Sessie is 'n analoog van koekies in 'n blaaier, met die enigste verskil dat dit nie op ons rekenaar nie, maar op die bediener geskep word. En dit word vir dieselfde doel as koekies gebruik - om verskillende inligting oor ons op te slaan terwyl ons van bladsy tot bladsy van een werf gaan. As ons die blaaier sluit, vernietig die bediener hierdie sessie, en die volgende keer as ons aanmeld, skep dit 'n nuwe sessie. Ons gebruik hierdie bedienermeganisme om aan te teken of die gebruiker reeds by die sessie aangemeld is of nie. As 'n besoeker 'n bladsy aanvra, sal die php-script deur die lees van hierdie inligting toegang tot bladsye wat met 'n wagwoord beskerm word, of bied 'n gebruikersnaam en wagwoord in.
Stap 1: Skep 'n bladsy vir die invoer van wagwoord en login. Die HTML-kode van die magtigingsvorm in sy eenvoudigste vorm kan so lyk:
Teken aan:
Wagwoord:
Hier (heel aan die begin van die lêer) voeg ons php-kode by wat die korrektheid van die gebruikersnaam en wagwoord wat deur die besoeker ingevoer word, sal nagaan. Aan die begin sal ons skryf:
sessie_begin ();
Hierdie opdrag begin 'n nuwe sessie as daar nog nie een vir hierdie besoeker geskep is nie.
Laat ons dan kyk of die sessie 'n veranderlike met die naam 'userName' bevat - dit sal die naam stoor as die besoeker reeds aangemeld is. As daar so 'n veranderlike is, stuur die besoeker weer na die hoofblad (index.php) en voer die PHP-script uit:
as ($ _ SESSION ['userName']) {
kop ("Location: index.php");
uitgang;
}
Die res van die kode sal slegs uitgevoer word as die gebruiker nog nie die regte gebruikersnaam en wagwoord ingevoer het nie. Kom ons gee aan watter aanmelding en wagwoord as korrek beskou moet word:
$ validName = 'Ek is myne!';
$ validPass = 'geheime wagwoord';
Dan kyk ons of die waardes wat vanaf die vorm ingedien word, ooreenstem met die regte waardes. Aangesien ons die POST-data-oordragmetode in die vorm gespesifiseer het, moet dit gelees word vanaf die $ _POST-superglobale veranderlike:
as ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
kop ("Location: index.php");
uitgang;
}
Hier sal die kode in krullerige hakies {} uitgevoer word met die regte waardes van die gebruikersnaam en wagwoord. Op die lyn $ _SESSION ['userName'] = $ validName; ma ons skryf in die sessie 'n veranderlike met die naam 'userName' wat die aanmelding bevat van die gebruiker wat nou gemagtig is. Dit is die teken dat toegang oral vir hom oop is solank sy huidige sessie geldig is.
En indien verkeerde data in die vorm ingevoer word, voeg die toepaslike boodskap by:
anders eggo"
Aanmelding of wagwoord is verkeerd!
;
Al die kode wat in 'n lêer met die naam login.php gestoor moet word, sal soos volg lyk:
<? php
sessie_begin ();
as ($ _ SESSION ['gebruikersnaam']) {
kop ("Location: index.php");
uitgang;
}
$ validName = 'Ek is myne!';
$ validPass = 'geheime wagwoord';
as ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
kop ("Location: index.php");
uitgang;
}
anders eggo"
Aanmelding of wagwoord is verkeerd!
;
?>
Teken aan:
Wagwoord:
Stap 2
Stap 2: Skep 'n magtigingsblok - 'n aparte lêer wat gekoppel sal word aan elke bladsy wat wagwoordbeskerming benodig. Hierdie lêer bevat slegs php-kode, dus sal die uitbreiding "php" wees, en ons sal dit volgens die tradisie vir sulke lêers gee - "auth", dit wil sê "auth.php". En ook hier, onmiddellik na die opening van <? Php-tag, moet daar 'n opdrag wees om 'n sessie te begin:
sessie_begin ();
Ons kan al die veranderlikes wat in die sessie gestoor is, uit die $ _SESSION superglobale skikking lees. Ons moet die waarde van die "userName" -veranderlike nagaan. As die besoeker nog nie aangemeld is nie, sal dit nie in die skikking wees nie en ons sal hom na die bladsy lei om sy gebruikersnaam en wagwoord in te voer:
as (! $ _ SESSION ['gemagtig']) {
kop ("Location: login.php");
uitgang;
}
Al die kode wat in die auth.php-lêer gestoor moet word, sal soos volg lyk:
<? php
sessie_begin ();
as (! $ _ SESSION ['admin']) {
kop ("Location: enter.php");
uitgang;
}
?>
Stap 3
Stap 3: nadat ons hierdie lêers op die bediener gestoor het, bly dit op alle php-bladsye wat beskerm moet word teen ongemagtigde gebruikers om die magtigingsblok te koppel. Dit wil sê, aan die begin van elke php-lêer, moet u hierdie kode invoeg:
<? php
benodig "auth.php";
?>
En om die toegangswagwoord te verander, moet u die waardes van hierdie veranderlikes in die login.php-lêer verander:
$ validName = 'Ek is myne!';
$ validPass = 'geheime wagwoord';
$ validName - login, $ validPass - wagwoord.