Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 10
  • Si të bëni autorizimin dhe regjistrimin html. Krijimi i një sistemi të thjeshtë regjistrimi të përdoruesve në PHP dhe MySQL

Si të bëni autorizimin dhe regjistrimin html. Krijimi i një sistemi të thjeshtë regjistrimi të përdoruesve në PHP dhe MySQL

Nga autori: herët a vonë çdo zhvillues i uebit përballet me detyrën e kufizimit të aksesit në një faqe / faqe ose drejtori të caktuar. Mund të jetë thjesht një faqe sekrete në sajt, pjesa administrative e faqes ose ndonjë seksion tjetër, aksesi në të cilin duam ta kufizojmë dhe ta ofrojmë vetëm me një fjalëkalim. Për ta bërë këtë, natyrisht, mund të përdorni mjetet e serverit. Unë mendoj se çdo host modern ka një funksion fjalëkalimi të drejtorisë, ku mund të krijoni një përdorues, t'i caktoni një fjalëkalim dhe, pasi të keni vendosur fjalëkalimin në drejtori, qasja në drejtorinë e mbyllur do të sigurohet vetëm pasi të futni hyrjen dhe fjalëkalimin e saktë. Por ndonjëherë ju dëshironi të shkruani diçka vetë, diçka të shpejtë, të thjeshtë, por në të njëjtën kohë - të besueshme ...

Në këtë tutorial do të përpiqemi të shkruajmë sistemin tonë të thjeshtë të autorizimit. Ne do të kemi një faqe sekrete - për shembull, do të jetë një faqe administratori, qasje në të cilën do të ofrojmë vetëm për një përdorues të autorizuar. Sistemi ynë i autorizimit do të bazohet në mekanizmin e sesionit. Para se të vazhdoni këtë mësim, ju rekomandoj që të njiheni me një nga mësimet e mia të mëparshme, në të cilat ne, në veçanti, shqyrtojmë punën e seancave -.

Shkurtimisht, e gjithë puna me sesione mund të ndahet në 3 faza:

Hapja e seancës. Në të gjitha faqet ku nënkuptohet puna me sesione, sesioni duhet të fillojë duke përdorur funksionin session_start ().

Regjistrimi i variablave të sesionit.

Çregjistrimi i variablave të sesionit duke përdorur funksionin unset () dhe mbyllja e seancës me funksionin session_destroy ().

Hapi 1

Pra, për punën tonë, ne do të krijojmë 3 skedarë - Faqja kryesore (index.php), Kontaktet (contact.php) dhe paneli i administratorit (admin.php). Unë tërheq vëmendjen tuaj për faktin se zgjerimi i skedarit në të cilin do të kufizojmë aksesin duhet të jetë .php. Siç e keni marrë me mend, ne do të kufizojmë aksesin në skedarin admin.php. Kodi i të gjithë skedarëve është më i thjeshti - është një lloj menyje në një rresht me lidhje me faqet e tjera, dhe poshtë tij është teksti individual i secilës faqe në mënyrë që t'i dallojmë ato nga njëra-tjetra. Për shembull, këtu është kodi për faqen e indeksit:

Faqja kryesore | Kontaktet | Paneli i administratorit


Kjo është faqja kryesore

Pjesa tjetër e faqeve, siç thashë, ndryshojnë prej saj vetëm në tekstin pas etiketës së rreshtit. Unë nuk kam bërë faqe të plota me etiketa meta, pasi detyra jonë është vetëm të kufizojmë hyrjen në një faqe të caktuar.

Hapi 2

Deri më tani, ne mund të ecim lirisht nëpër të gjitha faqet, duke përfshirë faqen e administratorit. Si ta kufizojmë aksesin në të? Si do të jetë algoritmi? Ne do të bëjmë sa më poshtë: në fillim të faqes, do të kontrollojmë nëse etiketa që na nevojitet është në seancë, ose, më thjesht, nëse ekziston një variabël specifik i sesionit (mund të kontrolloni gjithashtu nëse vlera e ndryshores së sesionit është e barabartë me një vlerë specifike). Nëse nuk ka një variabël të tillë, atëherë përdoruesi që kërkon këtë faqe nuk është i autorizuar, që do të thotë se ne do ta ridrejtojmë atë në faqen e autorizimit, ku do t'i kërkohet të plotësojë një formular me një emër dhe fjalëkalim. Algoritmi është jashtëzakonisht i thjeshtë - le ta zbatojmë atë. Shkoni te skedari admin.php, hapni strukturën PHP në krye dhe shkruani kodin e mëposhtëm:

sesioni_fillimi ();

nëse (! $ _SESSION ["admin"]) (

header ("Vendndodhja: enter.php");

dalje;

Le ta lexojmë këtë kod tani. Së pari, ne kemi hapur një seancë, siç e mbani mend - ky është një parakusht kur punoni me sesione. Më tej, ne kemi krijuar një kusht të thjeshtë, i cili mund të lexohet kështu: "nëse elementi admin nuk ekziston në grupin $ _SESSION, ne do të ekzekutojmë bllokun e veprimeve të mbyllura në kllapat e operatorit." Dhe në bllokun e kodit, ne përdorim funksionin header () për të ridrejtuar përdoruesin në faqen enter.php (kjo është faqja e autorizimit). Pas funksionit të kokës (), sigurohuni që të përfundoni ekzekutimin e skriptit duke përdorur funksionin e daljes (). Nëse kushti nuk plotësohet, p.sh., grupi $ _SESSION do të përmbajë elementin admin - kjo do të thotë që përdoruesi tashmë është autorizuar me sukses dhe ne do të kapërcejmë bllokun e veprimit në kllapat e operatorit, dmth., nuk do të ndodhë asnjë ridrejtim, dhe ne tregojmë faqen e kërkuar.

Hapi 3

Tani duhet të krijojmë një faqe autorizimi - enter.php. Për ta bërë këtë, kopjoni kodin, për shembull, nga faqja contact.php, krijoni një skedar të ri dhe ngjisni kodin e kopjuar në të. Ruani skedarin nën emrin enter.php. Tani në këtë faqe do të shkruajmë një formular të thjeshtë për të futur një emër përdoruesi dhe fjalëkalim:

Faqja kryesore | Kontaktet | Paneli i administratorit


Kjo është faqja e hyrjes.
Emri i përdoruesit:
Fjalëkalimi:

< p > < a href = "index.php" >në shtëpi< / a > | < a href = "contact.php" >Kontaktet< / a > | < a href = "admin.php" >Paneli i administratorit< / a > < / p >

< hr / >

< br / >

< form method = "post" >

Emri i përdoruesit:< input type = "text" name = "user" / > < br / >

Fjalëkalimi:< input type = "password" name = "pass" / > < br / >

< input type = "submit" name = "submit" value = "Për të hyrë" / >

< / form >

Gjithçka është e thjeshtë këtu. Ka 2 fusha në formë: një fushë për të futur një hyrje (ne i dhamë emrin "përdorues") dhe një fushë për një fjalëkalim (me emrin "kalim"). Ne krijuam gjithashtu një buton (emri "submit"), duke klikuar mbi të cilin do të dërgohen të dhënat nga formulari. Të dhënat dërgohen me metodën e postimit - ne e kemi specifikuar këtë në atributin e metodës së etiketës së formës - dhe do të përpunohen në të njëjtën faqe. Tani mund të përpiqemi të shkojmë në faqen e administratorit. Nëse gjithçka bëhet pa gabime, ne nuk do të mund të arrijmë atje, por do të jemi pa ndryshim në faqen e autorizimit.

E mrekullueshme!

Hapi 4

Më pas, duhet të shkruajmë një mbajtës në faqen me formularin, i cili do të pranojë të dhënat nga formulari dhe do të krahasojë nëse hyrja dhe fjalëkalimi nga formulari përputhen me ato që kemi. Për ta bërë këtë, hapni konstruktin PHP në krye të faqes së autorizimit dhe filloni të shkruani kodin. Për të filluar, ne duhet të hapim një sesion - në fund të fundit, këtu do të krijojmë një etiketë në seancë nëse merren emri i përdoruesit dhe fjalëkalimi i saktë. Në të njëjtën faqe, ne do të ruajmë hyrjen dhe fjalëkalimin e administratorit. Zakonisht, këto të dhëna ruhen në një bazë të dhënash (DB), por ne do të kemi vetëm 1 përdorues (administrator), dhe për këtë arsye nuk është plotësisht racionale të ruajmë të dhënat e tij për të hyrë në bazën e të dhënave. Nëse do të ketë më shumë se një përdorues, d.m.th., ne, për shembull, po shkruajmë një projekt në të cilin ka regjistrim, atëherë, natyrisht, do të jetë e vështirë të bëhet pa një bazë të dhënash në këtë rast.

Pra, identifikimi ynë do të jetë "admin" dhe ne do ta ruajmë atë në variablin $ admin. Fjalëkalimi do të jetë "mypass" dhe do të ruhet në variablin $ pass. Por nuk është e zakonshme të ruash fjalëkalimet në tekst të qartë - kjo është në kundërshtim me parimet e sigurisë. Ne do ta ruajmë fjalëkalimin në formë të koduar dhe funksioni md5 () do të na ndihmojë ta kodojmë atë. Ky funksion kodon një varg duke përdorur një algoritëm të veçantë, dhe në dalje marrim një varg prej 32 karakteresh (quhet hash). Nëse kodojmë vargun "mypass" (kjo mund të bëhet, për shembull, në skedarin contact.php):

echo md5 ("mypass");

atëherë në dalje do të marrim rreshtin "a029d0df84eb5549c641e04a9ef389e5" - ky do të jetë fjalëkalimi ynë i koduar. Deri më tani, kodi i faqes së autorizimit do të jetë si ky:

Faqja kryesore | Kontaktet | Paneli i administratorit


Kjo është faqja e hyrjes.
Emri i përdoruesit:
Fjalëkalimi:

sesioni_fillimi ();

$ admin = "admin";

$ kalojë = "a029d0df84eb5549c641e04a9ef389e5";

< p > < a href = "index.php" >në shtëpi< / a > | < a href = "contact.php" >Kontaktet< / a > | < a href = "admin.php" >Paneli i administratorit< / a > < / p >

< hr / >

< br / >

< form method = "post" >

Emri i përdoruesit:< input type = "text" name = "user" / > < br / >

Fjalëkalimi:< input type = "password" name = "pass" / > < br / >

< input type = "submit" name = "submit" value = "Për të hyrë" / >

< / form >

Hapi 5

Tani le të kontrollojmë se çfarë kemi marrë nga formulari me atë që kemi në variablat me hyrje dhe fjalëkalim. Ne do ta bëjmë këtë me kusht - vetëm nëse shtypet butoni i formës. Si mund ta kontrollojmë këtë? Butoni ka një emër ("submit"), dhe ne i kalojmë të dhënat duke përdorur metodën e postimit. Prandaj, ne thjesht mund të kontrollojmë nëse elementi i dorëzimit ekziston në grupin $ _POST. Nëse ka, butoni është shtypur dhe ne do të kryejmë veprime për të kontrolluar të dhënat e dërguara, përndryshe, nuk do të bëjmë asgjë. Pas deklarimit të hyrjes dhe fjalëkalimit, ne shkruajmë kushtin:

nëse ($ _ POST ["dorëzo"]) (nëse ($ admin == $ _POST ["përdorues"] DHE $ kalojë == md5 ($ _ POST ["kalim"])) ($ _SESION ["admin"] = $ admin; kokë ("Vendndodhja: admin.php"); dalje;) tjetër echo "

Identifikimi ose fjalëkalimi është i pasaktë!

"; }

nëse ($ _POST ["dorëzo"]) (

nëse ($ admin == $ _POST ["përdorues"] DHE $ kalojë == md5 ($ _POST ["kalim"])) (

$ _SESION ["admin"] = $ admin;

dalje;

) tjetër jehonë "

Identifikimi ose fjalëkalimi është i pasaktë!

" ;

Ne e bëmë kushtin për të kontrolluar hyrjen dhe fjalëkalimin si të dyfishtë. Kjo bëhet duke përdorur operatorin logjik AND (mund të shkruhet edhe në këtë mënyrë - "&&"). Kushti mund të lexohet si më poshtë: "nëse (ndryshorja $ admin është e barabartë me elementin e përdoruesit në grupin $ _POST dhe ndryshorja $ pass është e barabartë me hash-in e elementit të kalimit në grupin $ _POST) atëherë (ekzekutoni bllokun e veprimit ) përndryshe shfaqim tekstin 'Hyrja ose fjalëkalimi është i pasaktë!'

Nëse çifti hyrje-fjalëkalim përputhet, atëherë ne regjistrojmë variablin e sesionit $ _SESSION ["admin"] dhe e ridrejtojmë përdoruesin në faqen e administratorit - admin.php.
Le të përpiqemi tani të testojmë atë që kemi krijuar tashmë. Nëse vendosim një emër përdoruesi dhe fjalëkalim qëllimisht të rremë, do të marrim një mesazh paralajmërues se "Hyrja ose fjalëkalimi është i pasaktë!". Tani le të përpiqemi të fusim të dhënat e sakta të hyrjes. Nëse nuk kemi gabuar askund, atëherë pasi të klikojmë në butonin "Identifikohu" do të jemi në faqen e administratorit.

Hapi 6

Tani mbetet për të shtuar disa gjëra të vogla. Për shembull, tani jemi të autorizuar në sistem, por nëse futim adresën e faqes së autorizimit në shiritin e adresave, do të shkojmë me qetësi tek ajo dhe do të shohim formularin e autorizimit. Ky nuk duhet të jetë rasti - vetëm një përdorues i paautorizuar duhet ta shohë formularin. Si mund ta rregullojmë këtë? Mos harroni se në faqen admin.php ne kontrolluam nëse kishte një etiketë në seancë. Nëse nuk është aty, ne e transferuam përdoruesin në faqen e autorizimit. Këtu mund të bëjmë të njëjtën gjë, vetëm anasjelltas. Kjo do të thotë, ne gjithashtu kontrollojmë nëse ka një etiketë në seancë. Vetëm tani do ta transferojmë përdoruesin në faqen e administratorit, nëse ka një etiketë të tillë. Kjo është, në parim, logjike. Nëse ka një etiketë, atëherë përdoruesi është tashmë i autorizuar dhe ne mund ta transferojmë atë në faqen e administratorit. Në faqen enter.php pas fillimit të seancës, shtoni kodin e mëposhtëm:

if ($ _ SESSION ["admin"]) (titulli ("Vendndodhja: admin.php"); dil;)

nëse ($ _SESSION ["admin"]) (

header ("Vendndodhja: admin.php");

dalje;

Tani, nëse një përdorues i autorizuar përpiqet të fusë emrin e faqes së autorizimit në shiritin e adresave, ai do të transferohet në faqen e administratorit. Një përdorues i paautorizuar do të jetë në gjendje të hyjë lirisht në faqen e autorizimit.

Hapi 7

Momenti tjetër që duhet të sigurojmë është zbatimi i daljes së një përdoruesi të autorizuar, d.m.th., le të themi se administratori ka mbaruar punën e tij dhe ai duhet të dalë në mënyrë që askush tjetër të mos punojë nën llogarinë e tij. Për ta bërë këtë, shtoni lidhjen "Logout" në faqen admin.php. Lidhja do të çojë në të njëjtën faqe, vetëm parametri që na nevojitet do të shtohet në të. Parametri shtohet duke përdorur një pikëpyetje:

Dilni

< a href = "admin.php?do=logout" >Dilni< / a >

Kjo lidhje mund të vendoset në vendin ku na nevojitet - do ta vendos pas tekstit të faqes. Për sa i përket parametrit - ai do të kalohet me metodën GET (kujtoni se kemi kaluar të dhëna nga formulari si parametër i dytë - POST). Me këtë metodë, të dhënat i shtohen adresës në shiritin e adresave dhe ndahen nga adresa me një pikëpyetje. Ne kalojmë një parametër - bëj - dhe në të njëjtën kohë i caktojmë vlerën "logout". Si mund ta paautorizojmë përdoruesin tani? Është shumë e thjeshtë - këtu do të ndihmohemi nga faza e dytë dhe e tretë kur punojmë me sesione. Në ngarkimin e faqes, ne mund të kontrollojmë vlerën e elementit do nga grupi $ _GET. Nëse është e barabartë me rreshtin "logout" - ne thjesht çregjistrojmë variablin e sesionit $ _SESSION ["admin"] dhe shkatërrojmë seancën. Prandaj, pas kësaj nuk do të ketë etiketa në seancë, dhe në bllokun tjetër, ku kontrollojmë praninë e një etikete, përdoruesi do të ridrejtohet në faqen e autorizimit. Është e thjeshtë.

Reg.ru: domenet dhe pritja

Regjistruesi dhe ofruesi më i madh i pritjes në Rusi.

Më shumë se 2 milion emra domenesh në shërbim.

Promovim, postë për domain, zgjidhje biznesi.

Më shumë se 700 mijë klientë në mbarë botën kanë bërë tashmë zgjedhjen e tyre.

* Rri pezull miun për të ndalur lëvizjen.

Kthehu përpara

Krijimi i një sistemi të thjeshtë regjistrimi të përdoruesve në PHP dhe MySQL

Krijimi i një sistemi regjistrimi është shumë punë. Duhet të shkruani kodin që vërteton adresat e emailit, dërgon një email konfirmimi regjistrimi, vërteton pjesën tjetër të fushave të formularit dhe shumë më tepër.

Dhe edhe pasi të shkruani të gjitha këto, përdoruesit do të hezitojnë të regjistrohen, sepse kërkon disa përpjekje nga ana e tyre.

Në këtë tutorial, ne do të krijojmë një sistem regjistrimi shumë të thjeshtë që nuk kërkon ose ruan fare fjalëkalime! Rezultati do të jetë i lehtë për t'u modifikuar dhe shtuar në një sajt ekzistues PHP. Dëshironi të zbuloni se si funksionon? Lexo me poshte.



Kështu do të funksionojë sistemi ynë super i thjeshtë:

Ne do të kombinojmë formularin e hyrjes dhe regjistrimin. Ky formular do të ketë një fushë për të futur një adresë emaili dhe një buton regjistrimi;
- Me rastin e plotësimit të fushës me një adresë emaili, duke klikuar në butonin e regjistrimit, do të krijohet një regjistrim për një përdorues të ri, por vetëm nëse adresa e postës elektronike e futur nuk gjendet në bazën e të dhënave.

Pas kësaj, krijohet një grup i caktuar unik i rastësishëm i simboleve (token), i cili dërgohet në postën e specifikuar nga përdoruesi në formën e një lidhjeje që do të jetë e rëndësishme për 10 minuta;
- Përdoruesi ndjek lidhjen në faqen tonë të internetit. Sistemi përcakton praninë e një token dhe autorizon përdoruesin;

Përparësitë e kësaj qasjeje:

Nuk ka nevojë të ruani fjalëkalime dhe të bëni verifikimin në terren;
- Nuk ka nevojë për rikuperim të fjalëkalimit, pyetje sigurie, etj.;
- Që nga momenti kur përdoruesi është regjistruar/autorizuar, mund të jeni gjithmonë të sigurt që ky përdorues do të jetë në zonën tuaj të aksesit (që adresa e emailit është e vërtetë);
- Procesi tepër i thjeshtë i regjistrimit;

Të metat:

Siguria e llogarisë së përdoruesit. Nëse dikush ka qasje në postën e përdoruesit, ai mund të identifikohet.
- Email-i nuk është i sigurt dhe mund të përgjohet. Mbani në mend se kjo pyetje është gjithashtu e rëndësishme në rastin kur fjalëkalimi është harruar dhe duhet të rikthehet, ose në çdo sistem autorizimi që nuk përdor HTTPS për transferimin e të dhënave (hyrje / fjalëkalim);
- Derisa të konfiguroni serverin e postës sipas nevojës, ekziston mundësia që mesazhet me lidhje për autorizimin të përfundojnë në postë të padëshiruar;

Duke krahasuar avantazhet dhe disavantazhet e sistemit tonë, mund të themi se sistemi ka përdorshmëri të lartë (më i përshtatshmi për përdoruesin fundor) dhe, në të njëjtën kohë, ka një tregues të ulët sigurie.

Pra, sugjerohet përdorimi i tij për regjistrime në forume dhe shërbime që nuk funksionojnë me informacione të rëndësishme.

Si të përdorni këtë sistem

Në rastin kur thjesht duhet të përdorni sistemin për të autorizuar përdoruesit në faqen tuaj dhe nuk dëshironi ta ndani këtë mësim, ja çfarë duhet të bëni:

Ju duhet të shkarkoni burimet bashkangjitur mësimit
- Gjeni skedarin në arkiv tabelat.sql Importojeni atë në bazën tuaj të të dhënave duke përdorur opsionin e importit në phpMyAdmin. Mënyra alternative: hapeni këtë skedar me një redaktues teksti, kopjoni pyetjen SQL dhe ekzekutoni atë;
- Hapur përfshin / kryesore.php dhe plotësoni cilësimet për t'u lidhur me bazën tuaj të të dhënave (specifikoni përdoruesin dhe fjalëkalimin për t'u lidhur me bazën e të dhënave, si dhe hostin dhe emrin e bazës së të dhënave). Në të njëjtin skedar, duhet të specifikoni gjithashtu një email që do të përdoret si adresa origjinale për mesazhet e dërguara nga sistemi. Disa host bllokojnë emailet dalëse derisa të specifikohet një adresë e vërtetë emaili në formularin, i cili është krijuar nga paneli i kontrollit të hostit, kështu që futni një adresë reale;
- Shkarkoni të gjithë skedarët indeks.php, të mbrojtura.php dhe asetet dhe përfshin dosjet nëpërmjet FTP për hostin tuaj;
- Shtoni kodin më poshtë në secilën faqe PHP ku dëshironi të shfaqni një formular autorizimi;

Require_once "përfshin / main.php"; $ përdorues = përdorues i ri (); if (! $ user- & gtloggedIn ()) (ridrejtoj ("index.php");)
- Gati!

Për ata që janë të interesuar se si funksionon gjithçka - përpara për të lexuar më poshtë!

Hapi i parë është të shkruani kodin HTM të formularit të autorizimit. Ky kod ndodhet në skedar indeks.php... Ky skedar përmban gjithashtu kodin PHP që përpunon të dhënat e formularit dhe funksione të tjera të dobishme të sistemit të autorizimit. Mund të mësoni më shumë rreth kësaj në seksionin e Rishikimit të Kodit PHP më poshtë.

indeks.php

Tutorial: Sistemi super i thjeshtë i regjistrimit me PHP & MySQL

Identifikohu ose regjistrohu

Shkruani adresën tuaj të emailit më lart dhe ne do ta dërgojmë
ju një lidhje identifikimi.

Në pjesën e kokës (midis etiketave dhe) Kam përfshirë stilet kryesore (në këtë mësim nuk kuptohen, kështu që mund t'i shihni vetë. Dosja e aseteve / css / style.css). Përpara etiketës mbyllëse Kam përfshirë bibliotekën jQuery dhe skedarin script.js, të cilat do t'i shkruajmë dhe analizojmë më poshtë.


JavaScript

jQuery mban gjurmët e gjendjes së butonit Regjistrohu / Hyr duke përdorur funksionin e.preventDefault () dhe dërgon kërkesa AJAX. Në varësi të përgjigjes së serverit, ai shfaq një mesazh të veçantë dhe përcakton veprimet e mëtejshme /

asetet / js / skript.js

$ (funksioni () (var forma = $ ("# login-register"); form.on ("submit", funksioni (e) (if (form.is (." loading, .loggedIn")) (return false ;) var email = form.find ("hyrje"). val (), messageHolder = form.find ("span"); e.preventDefault (); $ .post (ky.veprim, (email: email), funksion (m) (nëse (m.gabim) (formë.addClass ("gabim"); messageHolder.tekst (m.message);) tjetër (forma.removeClass ("gabim"). addClass ("loggedIn"); messageHolder. tekst (m.mesazh);)));)); $ (dokument) .ajaxStart (funksioni () (form.addClass ("duke ngarkuar");)); $ (dokument) .ajaxComplete (funksioni () (formular. removeClass ("duke ngarkuar");));));

u shtua në formular për të shfaqur gjendjen aktuale të kërkesës AJAX (të mundësuar nga metodat ajaxStart ()) dhe ajax I plotë () të cilin mund ta gjeni afër fundit të skedarit).

Kjo klasë tregon një skedar gif të animuar që rrotullohet (sikur na lë të kuptohet se kërkesa është duke u përpunuar), dhe gjithashtu vepron si një flamur që parandalon ridorëzimin e formularit (kur butoni i regjistrimit është shtypur tashmë një herë). Klasa .loguar- ky është një flamur tjetër - vendoset kur është dërguar emaili. Ky flamur bllokon menjëherë çdo veprim të mëtejshëm me formularin.

Skema e bazës së të dhënave

Sistemi ynë tepër i thjeshtë i regjistrimit përdor 2 tabela MySQL (SQL është në skedar tabelat.sql). I pari ruan të dhëna për llogaritë e përdoruesve. E dyta ruan informacione rreth numrit të përpjekjeve për hyrje.


Skema e tabelës së përdoruesve.

Sistemi nuk përdor fjalëkalime, siç mund të shihet në diagram. Ju gjithashtu mund të shihni kolonën në të shenjë me shenja ngjitur me kolonën vlefshmëria_token... Shenja instalohet sapo përdoruesi lidhet me sistemin, vendos emailin e tij për dërgimin e një mesazhi (më shumë për këtë në bllokun tjetër). Folësi vlefshmëria_token cakton kohën 10 minuta më vonë, pas së cilës shenja nuk është më e vlefshme.


Një skemë tabele që numëron numrin e përpjekjeve për autorizim.

Në të dyja tabelat, adresa IP ruhet në një formë të analizuar duke përdorur funksionin ip2long në një fushë numër të plotë.

Tani mund të shkruajmë disa kode PHP. Funksionaliteti kryesor i sistemit i është caktuar klasës User.class.php të cilën mund ta shihni më poshtë.

Kjo klasë përdor gjerësisht idorm (docs), këto biblioteka janë mjetet minimale të nevojshme për të punuar me bazat e të dhënave. Ai trajton aksesin në bazën e të dhënave, gjenerimin e shenjave dhe vlefshmërinë. Ai siguron një ndërfaqe të thjeshtë për të lidhur lehtësisht sistemin e regjistrimit me faqen tuaj nëse përdor PHP.

User.class.php

Përdoruesi i klasës (// Rasti privat i ORM-së private $ orm; / ** * Gjeni një përdorues sipas shenjës. Vetëm argumentet e vlefshme pranohen për shqyrtim. Shenja gjenerohet vetëm për 10 minuta nga momenti kur u krijua * @param string $ token Ky është ai i dëshiruari. Token * @return User. Ktheni vlerën e funksionit të Përdoruesit * / funksionin statik publik findByToken ($ token) (// gjeni shenjën në bazën e të dhënave dhe sigurohuni që vula e saktë kohore është vendosur $ rezultat = ORM :: for_table ("reg_users") -> ku ("token", $ shenjë) -> ku_raw ("token_validity> NOW ()") -> find_one (); if (! $ rezultat) (return false; ) ktheni një përdorues të ri ($ rezultat);) / ** * Autorizoni ose regjistroni një përdorues * @param string $ email Adresa e personalizuar e emailit * @return Përdoruesi * / funksioni publik statik loginOrRegjistrohu ($ email) (// Nëse një përdorues i tillë tashmë ekziston, ktheni vlerën e funksionit të Përdoruesit nga adresa e specifikuar e emailit e ruajtur në bazën e të dhënave nëse (Përdoruesi :: ekziston ($ email)) (kthejeni përdoruesin e ri ($ email);) // Përndryshe, krijoni një përdorues të ri trupi në bazën e të dhënave dhe ktheni vlerën e Përdoruesit :: krijoni funksionin nga emaili i specifikuar kthimi Përdoruesi :: krijoni ($ email); ) / ** * Krijoni një përdorues të ri dhe ruajeni në bazën e të dhënave * @param string $ email. Adresa e personalizuar e emailit * @return Përdoruesi * / funksioni statik privat krijoni ($ email) (// Shkruani një përdorues të ri dhe ktheni rezultatin e funksionit të Përdoruesit nga këto vlera $ result = ORM :: for_table ("reg_users") - > krijoni (); $ rezultat-> email = $ email; $ rezultat-> ruaj (); ktheni përdoruesin e ri ($ rezultat);) / ** * Kontrolloni nëse një përdorues i tillë ekziston në bazën e të dhënave dhe ktheni vlerën boolean të variabli * @param string $ email. Adresa e personalizuar e emailit * @return boolean * / funksioni statik publik ekziston ($ email) (// A ekziston përdoruesi në bazën e të dhënave? $ Rezultati = ORM :: for_table ("reg_users") -> ku ("email", $ email ) -> numëro (); kthe $ rezultat == 1;) / ** * Krijo një objekt të ri të personalizuar * @param shembull $ param ORM, id, email ose 0 * @return Përdoruesi * / funksioni publik __construct ($ param = null) (nëse ($ param shembulli i ORM) (// Kontrolli ORM kaloi $ this-> orm = $ param;) tjetër nëse (is_string ($ param)) (// Kontrolli i emailit kaloi $ this-> orm = ORM :: for_table ("reg_users") -> ku ("email", $ param) -> find_one ();) other ($ id = 0; if (is_numeric ($ param)) (// vlera e $ param $ id ndryshorja i kalohet ID-së së përdoruesit = $ param;) ndryshe nëse (isset ($ _ SESSION ["loginid"])) (// Përndryshe shikoni sesionin $ id = $ _SESSION ["loginid"];) $ this-> orm = ORM :: for_table ( "reg_users") -> ku ("id", $ id) -> find_one ();)) / ** * Gjeneroni token të ri autorizimi SHA1, shkruan në bazë dhe kthen vlerën e tij * @return string * / funksioni publik generateToken () (// Gjeneroni një shenjë për përdoruesin e autorizuar dhe ruajeni në bazën $ token = sha1 ($ this-> email.time (). rand (0, 1000000 )); // Ruaje shenjën në bazën e të dhënave // ​​Dhe shëno si të vlefshme vetëm për 10 minutat e ardhshme $ this-> orm-> set ("token", $ token); $ this-> orm-> set_expr ("token_validity", "SHTO TIME (TANI ()," 0:10 ")"); $ this-> orm-> save (); kthimi i shenjës $; ) / ** * Autorizoni përdoruesin * @return void * / identifikimi i funksionit publik () (// Shënoni përdoruesin si të autorizuar $ _SESSION ["loginid"] = $ this-> orm-> id; // Përditësoni vlerën e fusha bazë e fundit_login $ this-> orm-> set_expr ("last_login", "TANI ()"); $ this-> orm-> ruaj ();) / ** * Shkatërroni seancën dhe dilni nga përdoruesi * @ ktheje void * / dalje nga funksioni publik () ($ _SESSION = grup (); i pacaktuar ($ _ SESSION);) / ** * Kontrollo nëse përdoruesi është i identifikuar * @return boolean * / funksioni publik logedIn () (kthimi i caktuar ($ this-> orm-> id) && $ _SESSION ["loginid"] == $ this-> orm-> id;) / ** * Kontrolloni nëse përdoruesi është një administrator * @return boolean * / funksioni publik ështëAdmin () (kthejeni $ this-> rang () = = "administrator";) / ** * Gjeni llojin e përdoruesit, mund të jetë ose administrator ose i rregullt * @return string * / renditja e funksionit publik () (nëse ($ kjo -> orm-> rang == 1) (kthim "administrator";) kthim" i rregullt ";) / ** * Metoda për marrjen e informacionit privat emri i përdoruesit si * vetitë e objektit të përdoruesit * @param string $ key Emri i pronës që aksesohet * @return i përzier * / funksioni publik __get (kyç $) (if (isset ($ this-> orm -> $ key)) ( ktheni $ this -> orm -> çelësin $; ) kthen null; ))

Shenjat gjenerohen duke përdorur algoritmin SHA1 dhe ruhen në bazën e të dhënave. Unë jam duke përdorur funksionet e kohës së MySQL për të vendosur një kufi të skadimit të tokenit prej 10 minutash.

Kur një token kalon procedurën e vlefshmërisë, ne i tregojmë drejtpërdrejt mbajtësit se ne konsiderojmë vetëm shenjat që nuk kanë skaduar ende, të ruajtura në kolonën token_validity.

Ju lutemi vini re se unë jam duke përdorur metodën magjike __marr biblioteka e dokumenteve në fund të skedarit për të përgjuar vetitë e objektit User.

Falë kësaj, bëhet e mundur aksesi në informacionin e ruajtur në bazën e të dhënave, falë vetive $ user-> email, $ user-> token dhe të tjera Në copëzën e mëposhtme të kodit, ne do të shqyrtojmë, për shembull, si t'i përdorim këto klasa.


Faqe e mbrojtur

Një skedar tjetër që ruan funksione të dobishme dhe të nevojshme është skedari funksionet.php... Këtu ka disa të ashtuquajtur ndihmës - funksione ndihmëse që ju lejojnë të krijoni kode më të pastër dhe më të lexueshëm në skedarë të tjerë.

funksionet.php

Funksioni send_email ($ nga, $ në, $ subjekt, $ mesazh) (// Ndihmës që dërgon email $ headers = "MIME-Version: 1.0". "\ R \ n"; $ headers. = "Lloji i përmbajtjes: tekst / plain; charset = utf-8 "." \ r \ n "; $ headers. =" Nga: ". $ from." \ r \ n "; kthimi i postës ($ në, $ subjekt, $ mesazh, $ headers ) ;) funksioni get_page_url () (// Përcaktoni URL-në e skedarit PHP $ url = "http". (bosh ($ _ SERVER ["HTTPS"])? "": "s"). ": //". $ _ SERVER ["SERVER_NAME"]; nëse (set ($ _ SERVER ["REQUEST_URI"]) && $ _SERVER ["REQUEST_URI"]! = "") ($ Url. = $ _SERVER ["REQUEST_URI"];) tjetër ($ url. = $ _SERVER ["PATH_INFO"];) ktheni $ url;) norma_limit të funksionit ($ ip, $ limit_orë = 20, $ limit_10_min = 10) (// Numri i përpjekjeve për hyrje në orën e fundit në këtë adresë IP $ count_hour = ORM: : for_table ("reg_login_attempt") -> ku ("ip", sprintf ("% u", ip2long ($ ip))) -> where_raw ("ts> SUBTIME (TANI ()," 1: 00 ")") -> numëro (); // Numri i përpjekjeve për hyrje në 10 minutat e fundit në këtë adresë IP $ count_10_min = ORM :: for_table ("reg_login_attempt") -> ku ("ip", sprint f ("% u", ip2long ($ ip))) -> ku_raw ("ts> SUBTIME (TANI ()," 0:10 ")") -> numëro (); if ($ count_hour> $ limit_hour || $ count_10_min> $ limit_10_min) (hedh një përjashtim të ri ("Shumë përpjekje për hyrje!");)) funksion rate_limit_tick ($ ip, $ email) (// Krijo një rekord të ri në tabelë që lexon numrin e përpjekjeve për hyrje $ login_attempt = ORM :: for_table ("reg_login_attempt") -> krijimi (); $ login_attempt-> email = $ email; $ login_attempt-> ip = sprintf ("% u", ip2long ($ ip )); $ login_attempt-> ruaj ();) ridrejtimi i funksionit ($ url) (titulli ("Vendndodhja: $ url"); dil;)

Funksione norma_kufi dhe norma_kufi_tiku mbani shënim numrin e përpjekjeve për autorizim gjatë periudhës kohore të kaluar që nga përpjekja e parë. Përpjekja për hyrje regjistrohet në bazën e të dhënave në kolonën reg_login_attempt. Këto funksione thirren kur të dhënat e formularit përpunohen dhe dorëzohen siç mund ta shihni nga pjesa e mëposhtme e kodit.

Kodi më poshtë është marrë nga skedari indeks.php dhe trajton paraqitjen e formularit. Ai kthen një përgjigje JSON, e cila nga ana tjetër përpunohet nga jQuery në një skedar asetet / js / skript.js, të cilën e kemi analizuar tashmë më herët.

indeks.php

Provo (nëse (! Bosh ($ _ POST) && vendoset ($ _ SERVER ["HTTP_X_REQUESTED_WITH"])) (// Nxjerr një kokë të kokës JSON ("Lloji i përmbajtjes: aplikacion / json"); // Është kjo adresë emaili e vlefshme nëse (! Isset ($ _ POST ["email"]) ||! filter_var ($ _ POST ["email"], FILTER_VALIDATE_EMAIL)) (hedhni përjashtim të ri ("Ju lutemi shkruani një email të vlefshëm");) // Kontrollo. A lejohet përdoruesi të identifikohet, a e ka tejkaluar numrin e lidhjeve të lejuara? (Skedari Functions.php për më shumë informacion) rate_limit ($ _ SERVER ["REMOTE_ADDR"]); // Regjistro këtë përpjekje për autorizim rate_limit_tick ($ _ SERVER ["REMOTE_ADDR"], $ _POST ["email"]); // Dërgo email te përdoruesi $ message = ""; $ email = $ _POST ["email"]; $ subjekt = "Lidhja juaj e hyrjes"; nëse ( Përdoruesi :: ekziston ($ email) ) ($ subjekt = "Faleminderit për Regjistrimin!"; $ mesazh = "Faleminderit për regjistrimin në faqen tonë! \ n \ n";) // Përpjekje për të autorizuar ose regjistruar një përdorues $ user = Përdoruesi :: loginOrRegjistrohu ($ _ POST [ "email"]); $mesazh. = "Ju mund të identifikoheni nga kjo URL: \ n" ; mesazhi $. = get_page_url (). "? tkn =". $ user-> generateToken (). "\ n \ n"; $ message. = "Lidhja do të skadojë automatikisht pas 10 minutash."; $ rezultat = dërgoni_email ($ nga Email, $ _POST ["email"], $ subjekt, $ mesazh); nëse (! $ rezultat) (hedhni Përjashtim të ri ("Ka pasur një gabim në dërgimin e emailit tuaj. Ju lutemi provoni përsëri.");) die (json_encode (array ("message" => "Faleminderit! Ne \" kemi dërguar një lidhje në kutinë tuaj hyrëse. Kontrolloni gjithashtu dosjen tuaj të postës së padëshiruar. ")));)) catch (Përjashtim $ e) (die (json_encode (array (" gabim "=> 1," mesazhi "=> $ e-> getMessage () )))))

Pas autorizimit / regjistrimit të suksesshëm, kodi i mësipërm do t'i dërgojë përdoruesit një lidhje autorizimi. Shenja bëhet e disponueshme sepse kalohet si variabël në lidhjen e gjeneruar nga metoda $ _MERRNI me shënues tkn

indeks.php

Nëse (isset ($ _ GET ["tkn"])) (// A është kjo shenjë e vlefshme për autorizim? $ Përdoruesi = Përdoruesi :: findByToken ($ _ GET ["tkn"]); nëse ($ përdorues) (// Po , është .Ridrejto te faqja e mbrojtur $ user-> login (); ridrejto ("protected.php");) // Jo, token nuk është i vlefshëm.Ridrejto te faqja me ridrejtimin e formularit të autorizimit/regjistrimit (" index.php ");)

$ përdorues-> identifikimi ()

do të krijojë variablat e nevojshëm për sesionin, në mënyrë që përdoruesi, duke parë faqet pasuese të faqes, të mbetet i regjistruar gjatë gjithë kohës.

Përpunimi i funksionit për të dalë nga sistemi është rregulluar në mënyrë të ngjashme.

indeks.php

Nëse (isset ($ _ GET ["logout"])) ($ përdorues = përdorues i ri (); nëse ($ user-> logedIn ()) ($ user-> dalje ();) ridrejtuar ("index.php" ) ;)

Në fund të kodit, unë ridrejtova sërish te index.php, pra parametrin ? dalje = 1 kaluar nga URL nuk kërkohet.

Dosja jonë indeks.php kërkon shtesë mbrojtje - ne nuk duam që personat që kanë hyrë ndonjëherë në sistem të shohin përsëri formularin e regjistrimit. Për këto qëllime, ne përdorim metodën $ përdorues-> loguar ().

indeks.php

$ përdorues = përdorues i ri (); nëse ($ user-> logedIn ()) (ridrejtoj ("protected.php");)

Më në fund, këtu është një pjesë e kodit që ju lejon të mbroni faqet e faqes tuaj dhe ta bëni atë të disponueshme vetëm pas autorizimit.

të mbrojtura.php

// Për të mbrojtur çdo faqe në faqen tuaj, përfshini skedarin // main.php dhe krijoni një objekt të ri Përdoruesi. Sa e lehtë është! request_once "përfshin / main.php"; $ përdorues = përdorues i ri (); nëse (! $ user-> logedIn ()) (ridrejtoj ("index.php");)

Pas këtij kontrolli, mund të siguroheni që përdoruesi është autorizuar me sukses. Ju gjithashtu mund të përdorni informacionin e ruajtur në bazën e të dhënave duke përdorur vetitë e objektit $ përdorues... Për të shfaqur emailin dhe statusin e një përdoruesi, përdorni këtë kod:

Echo "Email-i juaj:". $ Përdoruesi-> emaili; echo "Ranku juaj:". $ user-> rang ();

Metoda gradë () përdoret këtu sepse numrat zakonisht ruhen në bazën e të dhënave (0 për një përdorues të rregullt, 1 për një administrator) dhe ne duhet t'i konvertojmë këto të dhëna në statuset të cilave u përkasin, gjë që na ndihmon kjo metodë.

Për ta bërë një përdorues të rregullt një administrator, thjesht modifikoni hyrjen e përdoruesit nëpërmjet phpMyAdmin (ose çdo programi tjetër që ju lejon të menaxhoni bazat e të dhënave). Statusi i administratorit nuk jep asnjë privilegj, në këtë shembull, faqja do të shfaqë që ju jeni një administrator - kjo është e gjitha.

Por çfarë të bëni me këtë varet nga ju, ju mund të shkruani dhe kompozoni vetë kodin që përcakton disa privilegje dhe aftësi për administratorët.

Janë bërë!

Ne kemi mbaruar me këtë formë tepër super kuazi të thjeshtë! Mund ta përdorni në faqet tuaja PHP, është shumë e thjeshtë. Gjithashtu, mund ta modifikoni vetë dhe ta bëni ashtu siç dëshironi.

Materiali u përgatit nga Denis Malyshok posaçërisht për sitin

P.S. Dëshironi të vazhdoni me përvojën tuaj PHP dhe OOP? Shikoni mësimet premium për aspekte të ndryshme të ndërtimit të faqes, duke përfshirë programimin në PHP, si dhe kursin falas për ndërtimin e sistemit tuaj CMS në PHP nga e para duke përdorur OOP:

Ju pëlqeu materiali dhe dëshironi t'ju falënderoni?
Thjesht ndajeni me miqtë dhe kolegët tuaj!


Pra, ekziston një detyrë - të bëhet regjistrimi në sistem dhe mundësia e autorizimit. Si ta bëjmë atë? Le të fillojmë me radhë.

Regjistrimi Php

Gjithçka është e thjeshtë këtu. Po krijohet një depo e të dhënave për përdoruesit. Kjo është zakonisht një tabelë e bazës së të dhënave. Ai përfshin fusha të tilla si ID, emri i përdoruesit dhe fjalëkalimi. Pjesa tjetër e fushave janë opsionale. Ju mund të mbledhni e-mail të përdoruesve, adresat e tyre, ip-në e mundshme, kohën e hyrjes në rrjet, fjalët koduese nga kartat bankare, pyetjet sekrete ...

Në përgjithësi, gjëja kryesore është një çift hyrje-fjalëkalim.

Pika e parë e rëndësishme- nuk mund të ruani fjalëkalimet e përdoruesve në tekst të qartë. Kjo është, si tekst. Është e pamundur sepse nëse dikush tjetër ka akses në bazën e të dhënave, ai do të marrë një bazë të dhënash me fjalëkalime të emrave të përdoruesit, gjë që nuk ka gjasa t'i pëlqejë. Dhe nëse merrni parasysh që fjalëkalimi i hyrjes për shumë përdorues në shërbime të ndryshme është i njëjtë - kjo rrezikon të dhënat personale dhe financat dhe korrespondencën personale dhe çdo gjë tjetër.

Fjalëkalimet duhet të ruhen si hash. HashimiËshtë një operacion që i kthen të dhënat origjinale në një lloj kast me një gjatësi të njohur. Kjo është mirë sepse kasti është unik. Kjo do të thotë, nëse ndryshojmë të paktën një karakter në të dhënat origjinale, fotografia në dalje të operacionit hash do të dalë plotësisht, përtej njohjes nga të tjerët. Operacioni hash është i pakthyeshëm, domethënë, nuk do të jetë e mundur të zgjerohen të dhënat origjinale nga kjo pjesë. Kjo është se si ndryshon nga enkriptimi.

MySQL dhe php ndajnë të njëjtin funksion hashing të përbashkët dhe të sigurt - md5. Ky algoritëm merr të dhëna dhe prodhon një gjurmë gishti.

Pra, marrim të dhëna nga përdoruesi, kontrolloni nëse ato janë bosh, nëse nuk përmbajnë ndonjë karakter që nuk na duhen (mos i kufizoni shumë përdoruesit). Dhe tani ne bëjmë një kërkesë si kjo:

INSERT INTO `users` (` id`, `username`,` password`) VLERAT ("", $ quoted_username, MD5 ($ quoted_password));

Ju lutemi vini re - Unë i emërova në mënyrë specifike variablat $ quoted_ sepse përpara se t'i shtyj ato në pyetje, ato duhet të shmangen duke përdorur funksionin mysql_real_escape_string (). Meqenëse ky funksion përdoret shumë shpesh, dhe është i shkruar shumë gjatë (i dua arkitektët pkhp) - Unë rekomandoj ta fusni në guaskën tuaj. Për shembull, si kjo:

Kuota e funksionit ($ var) (kthejeni mysql_real_escape_string ($ var);)

Hyrja në Php

Ne kemi shtuar një përdorues të ri dhe tani ai është i autorizuar. Ne i vizatojmë atij një formular hyrje-fjalëkalimi dhe kapim të dhënat e tij. Ç'pritet më tej? Në fund të fundit, fjalëkalimi na erdhi në tekst të qartë, dhe në bazën e të dhënave - hash-i i fjalëkalimit. Duhet ta konvertoni fjalëkalimin në një hash, më pas t'i krahasoni ato? Jo, mund ta bëni më lehtë - me një kërkesë.

SELECT * FROM `users` WHERE` login` = $ qoted_login AND `password` = MD5 ($ quoted_password);

Nëse kërkesa kthen një varg, ai do të jetë një varg me të dhënat e përdoruesit. Nëse jo, nuk ka asnjë përdorues të tillë në tabelë. Të dhënat e përdoruesit janë shumë të dobishme për ne - ia vlen t'i futim ato në një grup shoqërues.

Mbani mend përdoruesin

Tani duhet të kujtojmë se përdoruesi është i autorizuar dhe e dimë saktësisht se kush është. Gjëja e parë që ju vjen në mendje është përdorimi i cookies për këtë. Në të vërtetë - të futni emrin e përdoruesit dhe ID-në e përdoruesit në cookie dhe të dini gjithmonë se kush po e kërkon faqen në këtë moment.

Por kjo është një praktikë vicioze. Pse? Sepse një cookie është një skedar që ruhet nga përdoruesi në shfletues dhe të dhënat nga ky skedar i transmetohen serverit në çdo kërkesë. Së pari, ato transmetohen si tekst, që do të thotë se janë të lehta për t'u përgjuar. Së dyti, është një tekst i thjeshtë i dërguar nga përdoruesi. Prandaj, mund të rishkruhet fjalë për fjalë. Për shembull, nëse vendosim të ruajmë emrin e përdoruesit "Vasya" në cookie, ai mund të hapë menaxhimin e skedarëve të skedarëve në shfletuesin e tij, të gjejë skedarin e dëshiruar dhe ta rregullojë atë, të themi, "Admin". Dhe kjo eshte e gjitha. Tani, me çdo kërkesë, ne do të marrim një cookie, e cila do të na tregojë emrin e përdoruesit të përdoruesit - "Admin".

Prandaj, është më e sigurt të ruash të gjitha të dhënat në një server në një vend të paarritshëm nga uebi. Në disa dosje që nuk mund të aksesohen nga shfletuesi. Në këtë dosje ju duhet të shkruani të gjitha të dhënat për përdoruesin dhe t'i lexoni ato nga atje sa herë që ai kërkon një dokument. Për të zbuluar se cili përdorues zotëron cilin skedar të dhënash, duhet ta quani skedarin një emër unik dhe ta hidhni këtë emër në cookie për përdoruesin. Kështu, përdoruesi nuk do të jetë në gjendje të zbulojë se si quhet skedari për përdoruesin Admin - ky skedar gjenerohet nga sistemi në server. Dhe kjo ju lejon të tërhiqni nga dokumenti në dokument edhe fjalëkalime të qarta.

Ajo që kam përshkruar është mekanizmi i seancës... Në Perl, për shembull, ju duhet të ngarkoni module për të përdorur sesionet. Dhe në php, seancat mbështeten jashtë kutisë. Në fakt, gjithçka që duhet të dini është funksioni session_start () dhe grupi $ _SESSION. është e gjitha. Unë do t'ju them tani.

Në çdo skenar ku do t'i shkruani ose do të lexoni nga një sesion, keni nevojë përpara se të shfaqni ndonjë informacion thirrni funksionin session_start (). Kjo do të fillojë seancën. Ky funksion do të krijojë një skedar sesioni nëse ai nuk ekziston, ose do ta lexojë nëse një cookie speciale i është kaluar skriptit.

Për të shkruar të dhëna në sesion, ju vetëm duhet t'i shkruani ato në grupin $ _SESSION. Tani duhet të kujtojmë ID-në e përdoruesit.

$ _SESION ["userid"] = $info për përdoruesit ["id"];

Gjithçka. Tani, sa herë që një përdorues kërkon një skript që përdor sesione, vlera e elementit $ _SESSION ["userid"] do të jetë e disponueshme për ju.

Prandaj, kur përdoruesi futi hyrjen dhe fjalëkalimin, ne morëm të dhënat e tij nga baza e të dhënave, gjë që konfirmon se një përdorues i tillë është në bazën tonë të të dhënave, ne e kujtojmë atë në seancë.

Zbuloni nëse përdoruesi është i autorizuar

Epo, kjo është aq e lehtë sa të vrasësh dardha! Tani që e dini se si funksionojnë seancat, të zbuloni nëse një përdorues është identifikuar është çështje e një rreshti. Atje ajo është:

Nëse (isset ($ _ SESSION ["userid"])) (print "përdoruesi është i autorizuar";)

Nëse një id përdoruesi është përcaktuar në seancë, atëherë ai ka kaluar tashmë autorizimin. Por si e dini se cili përdorues është? Cili është emri i tij i përdoruesit? Data e lindjes? Fjalë kodi për një kartë bankare? Emri i vajzërisë së nënës?

Epo, padyshim - bëni një pyetje në tabelën e përdoruesve. Ne kemi ID-në e këtij përdoruesi.

SELECT * FROM `users` WHERE` id` = $ quoted_userid

Si të dilni nga një përdorues, dilni

Epo, është vërtet shumë e thjeshtë. Nëse përcaktojmë nëse një përdorues është i autorizuar nga prania e një përdoruesi në seancë, atëherë për ta loguar atë, duhet ta fshijmë atë nga atje. Bëhet kështu:

Pacaktuar ($ _ SESSION ["userid"]);

Ju gjithashtu mund ta vrisni seancën për besnikëri. Kjo do të pastrojë cookie-n e përdoruesit dhe do të shkatërrojë skedarin e sesionit në server. Në këtë rast, të gjitha të dhënat do të humbasin prej tij. Bëhet kështu:

Sesioni_shkatërrimi ();

Kjo eshte e gjitha. Nëse keni ndonjë pyetje, mos hezitoni të na kontaktoni. Për më tepër, mund të më kontaktoni me icq ose me postë dhe të kërkoni ndihmë për diçka. Zakonisht nuk refuzoj. Nëse nevojitet ndihmë serioze, mund të kërkoj një pagesë të vogël. Përveç kësaj, unë mund t'ju mësoj se si të krijoni faqe interneti nga distanca! Kështu jam trajner dhe guru :) Dhe nëse doni të merrni mësime dhe truket falas, regjistrohuni në RSS-në e blogut tim.

Sponsor i këtij postimi është ibooknet.ru, i cili ofron riparime të laptopëve me çmime të mira. Personalisht, laptopi im është mirë dhe shpresoj të mos më duhet ta rregulloj. Kjo është ajo që unë uroj për ju.

Pershendetje te gjitheve. Pra, ne kemi mbuluar disa elementë për krijimin e formave. Është koha për të kombinuar njohuritë tona për të zgjidhur një problem më të madh. Le të krijojmë formularin më të thjeshtë për autorizim në faqe. Për ta bërë këtë, na duhen dy fusha, ne krijojmë dhe lidhim nënshkrime me to.

Fusha e parë është për hyrjen, e dyta është për fjalëkalimin. Dhe me të dytën, jo gjithçka është aq e thjeshtë. Meqenëse për momentin është vetëm një fushë për të futur tekst.

Rezultati në shfletues:

Në mënyrë që teksti i futur në të të zëvendësohet me yll, siç është zakon për një fushë të këtij lloji, duhet të bëni një veprim të thjeshtë. Gjegjësisht, zëvendësoni vlerën e atributit llojifjalëkalimin:

Rezultati:

Butoni i paraqitjes së formularit

Ja ku shkoni. Formulari ynë është pothuajse gati. Tani, për të përfunduar krijimin e tij, duhet të krijoni një buton që do të përdoret për të dërguar formularin. Detyra zgjidhet duke përdorur etiketën me llojin paraqesin.

Nëse duhet të ketë një lloj mbishkrimi në buton, atëherë mund të bëhet duke përdorur atributin vlerë... Varet nga ju që të specifikoni një emër për butonin ose jo, atëherë nëse e bëni këtë, serveri do të marrë këtë emër, si dhe vlerën e butonit.

Si rregull, ekziston nevoja për emrin e butonit të paraqitjes së formularit kur formulari ka disa butona, secili prej të cilëve kryen një veprim specifik. Falë kësaj, serveri, duke marrë emrin dhe vlerën e butonit nga shfletuesi, kupton se cilin buton shtypi përdoruesi dhe çfarë, në përputhje me rrethanat, duhet të bëhet.

Si rezultat, kodi për formën tonë do të duket si ky:

Rezultati në shfletues:

Funksioni i regjistrimit dhe autorizimit të përdoruesve në sit zbatohet si më poshtë: kur një përdorues regjistrohet në sit, ai plotëson një formular regjistrimi, në të cilin tregon të dhëna të ndryshme, duke përfshirë hyrjen dhe fjalëkalimin. Formulari i dorëzon këto të dhëna në server dhe shkruhet në bazën e të dhënave.

  1. Përdoruesi fut hyrjen dhe fjalëkalimin në formularin e autorizimit dhe ia dërgon serverit.
  2. Serveri kontrollon nëse ka një përdorues në bazën e të dhënave me këtë emër përdoruesi dhe fjalëkalim.
  3. Nëse përdoruesi gjendet, atëherë informacioni në lidhje me këtë regjistrohet në seancë ose cookie.
  4. Në faqet e faqes, ekziston një kontroll - a ka ndonjë të dhënë në seancë që përdoruesi është i autorizuar dhe, në varësi të kësaj, faqja shfaqet në një formë ose në një tjetër.

Në seancë, jo vetëm që mund të tregoni faktin e autorizimit, por gjithashtu të shkruani disa të dhëna të përdoruesit për t'i shfaqur ato në faqe, për shembull, një emër ose pseudonim. Vendimi nëse do të përdoren sesionet ose skedarët e personalizimit merret në bazë të sajtit. Nëse faqja përmban informacione të rëndësishme, atëherë është më mirë të përdorni seanca, sepse është shumë më e vështirë të zbuloni të dhënat e regjistrimit të dikujt tjetër.

Format e autorizimit dhe regjistrimit

Formulari i autorizimit zakonisht gjendet në faqen kryesore, ose mund të jetë në të gjitha faqet e faqes. Në thelb, krijohet një faqe e veçantë për formularin e regjistrimit. Ne do të krijojmë vetëm një faqe, në të cilën do të jenë të dy format dhe në të do të shfaqen të dhënat e përdoruesit. Deri më tani, ai do të përmbajë vetëm kodin HTML, por menjëherë do të krijojmë një skedar PHP, sepse në të ardhmen do të jetë një skript. Le ta quajmë atë formreg.php. Kodi i faqes do të jetë si ky:

formreg.php:

regjistrimin

Ne do të regjistrojmë të dhënat e regjistrimit të përdoruesve në tabelën e përdoruesve. Nëse nuk keni ende një tabelë të tillë, atëherë krijoni atë. Ai duhet të përmbajë fushat id, login dhe pas. Ne nuk do të përdorim fusha të tjera. Nëse janë në tabelë, do të mbeten bosh.

register.php:

3
4
5
6
7
8
9
10

$ login = $ _ POST ["hyrja"]; $ pas = $ _ POST ["fjalëkalim"]; $ db = mysqli_connect ("localhost", "root", "", "mybase"); $ query = "FUT NË përdoruesit (hyrja, pas) VLERAT (" $ login "," $ pas ")"; $ rezultat = mysqli_query ($ db, $ pyetje); if ($ rezultat) header ("Vendndodhja: formreg.php"); mysqli_close ($ db);

Në rreshtin 9, vendosëm kthimin në faqen e formularit. Meqenëse në serverin lokal ekzekutimi i skriptit dhe rifreskimi i faqes janë shumë të shpejta, vizualisht do të duket sikur asgjë nuk ndodh kur klikoni butonin "Regjistrohu". Në faqet reale, ata zakonisht shkojnë në një faqe të veçantë me informacionin se përdoruesi është i regjistruar dhe të dhënat e regjistrimit. Provoni të regjistroheni dhe shikoni nëse të dhënat e reja shfaqen në bazën e të dhënave.

Autorizimi

Formulari i autorizimit ekzekuton skedarin autorization.php në server. Ky skript merr një hyrje dhe fjalëkalim dhe kontrollon nëse ka një përdorues të tillë. Nëse po, identifikimi do të regjistrohet në seancë. Nëse një përdorues i tillë nuk gjendet, atëherë informacioni për këtë do të regjistrohet në seancë. Kjo është e nevojshme në mënyrë që faqja që do të hapet pas ekzekutimit të skriptit të marrë këtë informacion dhe të shfaqë një mesazh që është futur një emër përdoruesi ose fjalëkalim i gabuar. Kodi i skriptit është si ky:

autorizim.php:

3
4
5
6
7
8
9
10
11
12
13
14

sesioni_fillimi (); $ login = $ _ POST ["hyrja"]; $ pas = $ _ POST ["fjalëkalim"]; $ db = mysqli_connect ("localhost", "root", "", "mybase"); $ query = "SELECT * FROM përdoruesit WHERE login =" $ login "AND BINARY pas =" $ pas ""; $ rezultat = mysqli_query ($ db, $ pyetje); if (mysqli_num_rows ($ rezultat)) $ _SESSION ["login"] = $ login; else $ _SESSION ["login"] = "herë identifikimi"; header ("Vendndodhja: formreg.php"); mysqli_close ($ db);

Në rreshtin 7, formohet një kërkesë për të zgjedhur një rresht me një hyrje dhe fjalëkalim të marrë nga formulari. Fjala kyçe BINARY është shkruar përpara fushës pas. Është e nevojshme që krahasimi në këtë fushë të jetë i ndjeshëm ndaj rasteve. Nëse dëshironi të jeni të ndjeshëm ndaj rasteve kur krahasoni hyrjen, atëherë para tij duhet të shkruhet BINARY. Shembulli bën një kërkesë për të zgjedhur të gjitha fushat. Në praktikë, ju mund të zgjidhni vetëm ato fusha, të dhënat nga të cilat do të duhet të shfaqen në faqe.

Pas marrjes së rezultatit, kontrollohet nëse është gjetur rekordi i specifikuar. Nëse ka një rekord, atëherë identifikimi regjistrohet në seancë. Nëse përdoruesi nuk gjendet, në vend të hyrjes shkruhet vargu "er login". Mund të shkruani një tekst tjetër, por duhet të jeni të sigurt që nuk përkon me ndonjë hyrje. Pastaj ka një kthim në faqe me formularë.

Në faqet e faqes duhet të ketë një kod që kontrollon nëse ka një hyrje në seancë. Dhe në varësi të kësaj, përcaktohet se si duhet të duket faqja. Në shembullin tonë, ka vetëm një faqe. Ne do ta kontrollojmë atë. Vetëm kodi do të ndahet në dy pjesë. Sesioni duhet të hapet përpara se të dalë ndonjë e dhënë, domethënë përpara kodit HTML. Prandaj, kjo pjesë ndodhet në fillim të faqes. Dhe pjesa tjetër e kodit është brenda etiketës sepse shton përmbajtje në faqe. Shtoni rreshtin e mëposhtëm në krye të faqes:

Nëse sesioni ka një hyrje, por përmban vargun "er login", atëherë shfaqet një mesazh që hyrja ose fjalëkalimi janë të pasakta. Pas shfaqjes së mesazhit, identifikimi bëhet bosh. Kjo bëhet në mënyrë që mesazhi të shfaqet vetëm një herë dhe të mos shfaqet kur lundroni në faqet e tjera. Nëse identifikimi është i ndryshëm, atëherë përdoruesi autorizohet dhe faqja formohet si për të regjistruarit. Nëse nuk ka hyrje, atëherë nuk ka pasur ende autorizim dhe faqja shfaqet për përdoruesit e paregjistruar.

Ne kemi marrë parasysh vetëm parimin e përgjithshëm të krijimit të funksionit të regjistrimit dhe autorizimit. Në faqet reale, është më e vështirë. Formularët duhet të shfaqen vetëm për përdoruesit e paautorizuar. Përveç kësaj, duhet të shtoni një buton "Dalje", i cili anulon autorizimin. Kur regjistroheni, duhet të kontrolloni formularin, të kontrolloni uniken e hyrjes dhe të shtoni një konfirmim të fjalëkalimit.

Artikujt kryesorë të lidhur