Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Lajme
  • Llogari personale e llojit të produktit Inurl php. Ndërtimi i një sistemi të pabesueshëm të thjeshtë regjistrimi me PHP dhe MySQL

Llogari personale e llojit të produktit Inurl php. Ndërtimi i një sistemi të pabesueshëm të thjeshtë regjistrimi me PHP dhe MySQL

Reg.ru: domenet dhe pritja

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

Mbi 2 milion emra domenesh në shërbim.

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

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

*Mouseover 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ë. Ju duhet të shkruani kodin që vërteton adresat e emailit, dërgon një email konfirmimi, vërteton fushat e tjera 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 shumë të thjeshtë identifikimi 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.



Ja se si do të funksiononte sistemi ynë super i thjeshtë:

Ne do të kombinojmë formularin e autorizimit 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 emailit e futur nuk gjendet në bazën e të dhënave.

Pas kësaj, krijohet një grup unik i rastësishëm i karaktereve (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;
- Duke klikuar në lidhjen, përdoruesi shkon në faqen tonë të internetit. Sistemi përcakton praninë e tokenit dhe autorizon përdoruesin;

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

Nuk ka nevojë të ruani fjalëkalime dhe të vërtetoni fushat;
- Nuk ka nevojë për rikuperim të fjalëkalimit, pyetje sekrete, etj.;
- Që nga momenti kur një përdorues është regjistruar/loguar, mund të jeni gjithmonë të sigurt se 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);
- Për sa kohë që konfiguroni serverin e postës sipas nevojës, ekziston mundësia që mesazhet me lidhje autorizimi 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ë (komoditet maksimal për përdoruesin përfundimtar) dhe, në të njëjtën kohë, ka një tregues të ulët sigurie.

Pra, propozohet 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 skedarët burim të 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ë adresë emaili që do të përdoret si adresa origjinale për mesazhet e dërguara nga sistemi. Disa host do të bllokojnë emailet dalëse derisa formulari të shfaqë një adresë të vërtetë emaili që është krijuar nga paneli i kontrollit të hostit, kështu që fut adresën 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->loggedIn())( ridrejtoj("index.php"); )
- Gati!

Për ata që janë të interesuar se si funksionon gjithçka, lexoni më poshtë!

Hapi i parë është të shkruani kodin HTM për formularin e autorizimit. Ky kod ndodhet në skedar indeks.php. Ky skedar përmban gjithashtu kodin PHP që trajton të dhënat e formularit dhe veçori 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ë
lidhjen e hyrjes.

Në pjesën e kokës (midis etiketave dhe) Kam përfshirë stilet kryesore (ata nuk janë analizuar në këtë tutorial, kështu që mund t'i shihni vetë. Dosja assets/css/style.css). Përpara etiketës mbyllëse Përfshiva 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/Login" me një funksion e.preventDefault() dhe dërgon kërkesa AJAX. Në varësi të përgjigjes së serverit, shfaq një mesazh të veçantë dhe përcakton veprimet e mëtejshme /

asetet/js/script.js

$(function()( var form = $("#login-register"); form.on("submit", funksion(e)( if(form.is(".loading, .loggedIn"))( return false ;) var email = form.find("input").val(), messageHolder = form.find("span"); e.preventDefault(); $.post(this.action, (email: email), funksion (m)( if(m.gabim)(form.addClass("gabim"); messageHolder.tekst(m.mesazh); ) else(form.removeClass("gabim").addClass("loggedIn"); mbajtës mesazh. tekst(m.mesazh); ) )); )); $(dokument).ajaxStart(funksion()(form.addClass("po ngarkohet"); )); $(dokument).ajaxComplete(funksion()(formular. removeClass ("duke ngarkuar"); )); ));

u shtua në formular për të shfaqur gjendjen aktuale të kërkesës AJAX (kjo u bë e mundur falë metodave ajaxStart()) dhe ajaxComplete (), të cilin mund ta gjeni në fund 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 për të parandaluar ridorëzimin e formularit (kur butoni i regjistrimit është klikuar 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 në formular.

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

Sistemi ynë tepër i thjeshtë i regjistrimit përdor 2 tabela MySQL (kodi 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ërdoruesit.

Sistemi nuk përdor fjalëkalime, të cilat mund të shihen në diagram. Në të mund të shihni kolonën shenjë me shenja ngjitur me kolonën vlefshmëria_token. Shenja vendoset sapo përdoruesi të lidhet me sistemin, vendos emailin e tij për të dërguar një mesazh (pak më shumë për këtë në bllokun tjetër). Kolona vlefshmëria_token cakton kohën 10 minuta më vonë, pas së cilës shenja nuk është më e vlefshme.


Skema e tabelës që numëron numrin e përpjekjeve për autorizim.

Në të dyja tabelat, adresa IP ruhet në një formë të përpunuar, 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 në mënyrë aktive 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ë. Është një ndërfaqe e thjeshtë që e bën të lehtë lidhjen e një sistemi regjistrimi 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. Merren parasysh vetëm argumentet e vlefshme. Shenja gjenerohet vetëm për 10 minuta nga momenti kur u krijua * @param string $token Ky është ai që po kërkoni për token * @return User. Ktheni vlerën e funksionit të përdoruesit */ funksionin statik publik findByToken($token)( // gjeni tokenin në bazën e të dhënave dhe sigurohuni që vula kohore e saktë është vendosur $ rezultat = ORM::for_table("reg_users") ->where ("token", $token) ->where_raw("token_validity > NOW()") ->find_one(); if(!$result)( return false; ) kthe një përdorues të ri($result); ) /** * Autorizoni ose regjistroni një përdorues * @param string $email.Adresa e emailit të përdoruesit * @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))( ktheni Përdoruesin e ri($email); ) // Përndryshe, krijoni një përdorues të ri tel në bazën e të dhënave dhe ktheni vlerën e funksionit User::create nga emaili i specifikuar kthye User::create($email); ) /** * Krijoni një përdorues të ri dhe ruajeni në bazën e të dhënave * @param string $email. Adresa e emailit të përdoruesit * @return Përdoruesi */ funksioni statik privat krijoni($email)( // Regjistroni një përdorues të ri dhe ktheni rezultatin e funksionit të Përdoruesit nga këto vlera $result = ORM::for_table("reg_users")- >create(); $result->email = $email; $result->save(); ktheni përdoruesin e ri($result); ) /** * 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 emailit të përdoruesit * @return boolean */ funksioni statik publik ekziston($email)( // A ekziston përdoruesi në bazën e të dhënave? $result = ORM::for_table("reg_users") ->where("email", $email ) ->count(); kthe $rezultat == 1;) /** * Krijo një objekt të ri përdoruesi * @param shembull $param ORM , id, email ose 0 * @return Përdoruesi */ funksioni publik __construct($param = null) ( if($param instanceof ORM)( // Kontrolli ORM kaloi $this->orm = $param; ) ndryshe if(is_string($param))( // Kontrolli i emailit kaloi $this->orm = ORM:: for_table ("reg_users") ->where ("email", $param) ->find_one(); ) other( $id = 0; if(is_numeric($param))( // id-it të përdoruesit i kalohet vlera e $ ndryshorja param $id = $param; ) else if(isset($_SESSION["loginid"]))( // Ndryshe shiko sesionin $id = $_SESSION["loginid"]; ) $this->orm = ORM:: for_table( "reg_users") ->where ("id", $id) ->find_one(); ) ) /** * Gjeneroni një shenjë të re autorizimi SHA1, shkruan në bazën e të dhënave dhe kthen vlerën e tij * @return string */ funksioni publik generateToken()( // Gjeneroni një shenjë për një përdorues të autorizuar dhe ruani atë në bazën e të dhënave $token = sha1($this->email.time().rand (0, 1000000 )); // Ruajeni shenjën në bazën e të dhënave // ​​Dhe shënojeni si të vlefshme vetëm për 10 minutat e ardhshme $this->orm->set("token", $token); $this->orm->set_expr("vlefshmëria_token", "ADDTIME(TANI(),"0:10")"); $this->orm->save(); ktheje $token; ) /** * Autorizoni përdoruesin * @return void */ funksionin publik login()( // Shënoni përdoruesin si të regjistruar në $_SESSION["loginid"] = $this->orm->id; // Përditëso vlerën e fushës së bazës së të dhënave last_login $this->orm->set_expr("last_login", "NOW()"); $this->orm->save(); ) /** * Shkatërroni seancën dhe dilni nga përdoruesi * @return void */ dalja nga funksioni publik ()( $_SESSION = grup(); unset($_SESSION); ) /** * Kontrollo nëse përdoruesi është identifikuar * @return boolean */ funksioni publik logedIn()( kthen isset($ this->orm->id) && $_SESSION["loginid"] == $this->orm->id; ) /** * Kontrollo nëse përdoruesi është një administrator * @return boolean */ funksioni publik ështëAdmin() ( return $this->rank() = = "administrator"; ) /** * Gjeni llojin e përdoruesit, mund të jetë ose administrator ose i rregullt * @return string */ public funksion rank()( if($this->orm- >rank == 1)( kthe "administrator"; ) kthe "i rregullt"; ) /** * Një metodë që ju lejon të merrni informacione private * si veti të objektit User * @param string $key Emri i vetive që po aksesohet * @return i përzier */ funksioni publik __get($key)( if(isset($this->orm->$key) )( kthe $this->orm->$key; ) 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 10-minutësh.

Kur token kalon procedurën e vlefshmërisë, ne i tregojmë drejtpërdrejt mbajtësit se ne po shqyrtojmë 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 aksesin në vetitë e objektit Përdorues.

Falë kësaj, bëhet e mundur qasja në informacionin e ruajtur në bazën e të dhënave, falë vetive $user->email, $user->token etj. Në fragmentin e mëposhtëm të kodit, le të marrim një shembull se si të 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 kod më të pastër dhe më të lexueshëm në skedarë të tjerë.

funksionet.php

Funksioni send_email($from, $to, $subject, $message)( // 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"; kthese postën($to, $subject, $message, $headers ); ) funksioni get_page_url()( // Merr URL-në e skedarit PHP $url = "http".(empty($_SERVER["HTTPS"])?"":"s")."://".$_SERVER [ "SERVER_NAME"]; if(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")( $url.= $_SERVER["REQUEST_URI"]; ) tjetër ($url. = $_SERVER["PATH_INFO"]; ) kthe $url; ) funksion rate_limit($ip, $limit_hour = 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") ->where("ip", sprintf("%u", ip2long($ip))) ->where_raw("ts > SUBTIME(NOW(),"1:00")") ->count(); // 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") ->where ("ip", sprint f("%u", ip2long($ip))) ->where_raw("ts > SUBTIME(NOW(),"0:10")") ->count(); 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ë hyrje të re në tabelë duke numëruar numrin e përpjekjeve për hyrje $login_attempt = ORM::for_table("reg_login_attempt")->create(); $login_attempt->email = $email; $login_attempt->ip = sprintf("%u", ip2long($ip) ); $login_attempt->save(); ) funksioni i ridrejtuar($url)( header("Vendndodhja: $url"); dalje; )

Funksione norma_kufi dhe norma_kufi_shënoni monitoroni numrin e përpjekjeve për autorizim për periudhën 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/script.js për të cilat kemi diskutuar më herët.

indeks.php

Provoni( if(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))( // Nxjerr një kokë të kokës JSON ("Lloji i përmbajtjes: aplikacion/json"); // A është e vlefshme kjo adresë emaili nëse (!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))( hidhni një përjashtim të ri ("Ju lutemi shkruani një email të vlefshëm"); ) // Kontrolloni. përdoruesi i lejuar 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 hyrje rate_limit_tick($_SERVER["REMOTE_ADDR"] , $ _POST["email"]); // Dërgoni një email te përdoruesi $message = ""; $email = $_POST["email"]; $subject = "Lidhja juaj e hyrjes"; if(!Përdoruesi:: ekziston ($email) )( $subject = "Faleminderit për Regjistrimin!"; $message = "Faleminderit që u regjistrove në faqen tonë!\n\n"; ) // Përpjekje për të autorizuar ose regjistruar një përdorues $user = Përdorues ::loginOrRegister($_POST[ "email"]); $message.= "Ju mund të identifikoheni nga kjo URL:\n" ; $message.= get_page_url()."?tkn=".$user->generateToken()."\n\n"; $message.= "Lidhja do të skadojë automatikisht pas 10 minutash."; $rezultat = dërgoni_email($fromEmail, $_POST["email"], $subject, $message); if(!$result)( hedh një Përjashtim të ri ("Ka pasur një gabim gjatë dërgimit të 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(Exception $e)( die(json_encode(array("error"=>1, "message" => $e->getMessage( ))))))))

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

indeks.php

If(isset($_GET["tkn"]))( // A është kjo shenjë e vlefshme për autorizim? $user = Përdoruesi::findByToken($_GET["tkn"]); if($user)( // Po , është. Ridrejto te faqja e mbrojtur $user->login();redirect("protected.php"); ) // Jo, token nuk është i vlefshëm. Ridrejto te faqja me formularin e hyrjes/regjistrimit redirect("indeks. php ");)

$user->login()

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

Në mënyrë të ngjashme, organizohet përpunimi i funksionit për të dalë nga sistemi.

indeks.php

If(isset($_GET["logout"]))($user = përdorues i ri(); if($user->loggedIn())($user->logout(); ) ridrejtim("index.php") ;)

Në fund të kodit, unë përsëri ridrejtova te index.php, pra parametri ?logout=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 ta shohin përsëri formularin e regjistrimit. Për këto qëllime, ne përdorim metodën $user->logedIn().

indeks.php

$përdorues = Përdorues i ri(); if($user->loggedIn())( 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ë siguruar çdo faqe në faqen tuaj, përfshini një skedar // main.php dhe krijoni një objekt të ri Përdoruesi. Ja sa e lehtë është! request_once "përfshin/main.php"; $përdorues = Përdorues i ri(); if(!$user->loggedIn())( ridrejtoj("index.php"); )

Pas këtij kontrolli, mund të jeni i sigurt se 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 përdoruesit, përdorni këtë kod:

echo "Email-i juaj: ".$user->email; echo "Ranku juaj: ".$user->rank();

Metoda gradë () përdoret këtu sepse numrat zakonisht ruhen në bazën e të dhënave (0 për një përdorues normal, 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 normal administrator, thjesht modifikoni hyrjen e përdoruesit përmes 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 - dhe kjo është ajo.

Por çfarë të bëni me të - mbetet në diskrecionin tuaj, ju mund të shkruani dhe kompozoni vetë kodin që përcakton privilegje dhe mundësi të caktuara për administratorët.

Janë bërë!

Me këtë formë tepër super kuazi të thjeshtë, mbaruam! Mund ta përdorni në faqet tuaja PHP, është mjaft e thjeshtë. Ju gjithashtu mund ta modifikoni atë për veten tuaj dhe ta bëni atë ashtu siç dëshironi.

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

P.S. Dëshironi të ecni më tej në zotërimin e PHP dhe OOP? Hidhini një sy mësimeve premium për aspekte të ndryshme të ndërtimit të faqes në internet, duke përfshirë programimin PHP, si dhe një kurs falas për ndërtimin e sistemit tuaj PHP CMS nga e para duke përdorur OOP:

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


Jo shumë kohë më parë, një nga vizitorët e mi më kërkoi të shkruaj një artikull rreth si të regjistrohen dhe autorizohen përdoruesit në faqe. Në fakt, unë jam duke përmbushur kërkesën e tij dhe në këtë artikull do të flas se si bëhet kjo.

Ka disa mënyra krijimi i regjistrimit dhe autorizimit të përdoruesit, por në këtë artikull do të analizoj të preferuarin tim - përmes mekanizmit të seancave ose cookies.

Para së gjithash, nëse dëshironi regjistrohuni në faqen tuaj të internetit, atëherë duhet të kuptoni se ku do të ruhen të dhënat e përdoruesit. Mund të ruhet në një skedar teksti të thjeshtë, në skedar XML ose në bazën e të dhënave. Dy opsionet e para janë shumë të rrezikshme, kështu që nuk ju rekomandoj t'i përdorni ato. Dhe këtu është opsioni i tretë - ruajtja e informacionit për përdoruesit në një bazë të dhënash- më e popullarizuara, dhe unë ju këshilloj të përdorni këtë metodë të ruajtjes së informacionit.

Vendndodhja e ruajtjes është vendosur. Tani le të shkojmë drejtpërdrejt në algoritmi i autorizimit:

  1. Krijoni një formular regjistrimi në HTML.
  2. Merrni të dhëna nga formulari në skriptin e mbajtësit.
  3. Kontrolloni të dhënat e marra dhe nëse ato janë të pasakta, atëherë ridrejtohuni në formularin e regjistrimit.
  4. Nëse të dhënat janë të sakta, atëherë shkruajini ato në bazën e të dhënave.

Ky është i gjithë procesi regjistrimi i përdoruesit në sit. Kjo do të thotë, regjistrimi është ruajtja e informacionit rreth përdoruesit në sit.

Artikulli tjetër është autorizimi i përdoruesit në sit, megjithatë, përpara se të vazhdoj me të, unë do t'ju tregoj për një pikë të rëndësishme në formularin e regjistrimit - fjalëkalimin. Unë rekomandoj fuqimisht që të mos ruani fjalëkalimet në tekst të qartë (për shembull, " 123456 "). Sigurohuni që t'i kriptoni ato, të paktën duke përdorur funksionin md5 (). Dhe ruajeni fjalëkalimin e koduar në bazën e të dhënave.

Tani autorizimi. Gjëja e parë që duhet të kuptoni është se informacioni i autorizimit duhet të ruhet diku. Mundësia më e thjeshtë është ruajtja e informacionit në seancë (ose në biskotë). Dhe tani algoritmi:

  1. Krijo një formular autorizimi të përdoruesit në HTML ku përdoruesi duhet të fusë emrin e përdoruesit dhe fjalëkalimin e tij.
  2. Në skriptin e mbajtësit, pranoni të dhënat nga përdoruesi. Nëse më keni dëgjuar dhe ruani fjalëkalime të koduara në bazën e të dhënave, atëherë së pari kriptoni fjalëkalimin e marrë. Nëse baza e të dhënave përmban fjalëkalime të hapura, atëherë nuk është e nevojshme të kriptohet.
  3. Kontrolloni korrektësinë e të dhënave të futura dhe nëse identifikimi dhe fjalëkalimi përputhen me përdoruesin ekzistues në bazën e të dhënave, atëherë shkruani në biskotë ose informacion sesioni me një hyrje dhe një fjalëkalim të koduar (ose një fjalëkalim të hapur nëse nuk e keni koduar atë).
  4. Nëse identifikimi dhe/ose fjalëkalimi janë futur gabimisht, atëherë ridrejtojeni përsëri në formularin e autorizimit.

Tani keni informacionin e nevojshëm për autorizimi i përdoruesit, i cili ruhet në biskotë ose në server (nëse sesioni). Në fakt, tani ju duhet ta kontrolloni këtë informacion në secilën faqe të faqes dhe ta kontrolloni atë në të njëjtën mënyrë si kontrolloni formularin e autorizimit. Kjo është, lexo nga biskotë(sesioni) login dhe fjalëkalimin, dhe kontrolloni atë. Nëse janë të sakta, atëherë tregoni një faqe (për përdoruesit e regjistruar), dhe nëse janë të gabuara, atëherë tregoni një faqe tjetër (për mysafirët).

Dhe e fundit. Si është bërë butoni? Dilni"? Shumë e thjeshtë. Duke shtypur këtë buton, biskotë, ose seancë. Kështu, përdoruesi del automatikisht nga faqja.

Siç mund ta shihni, gjithçka është elementare, por kur zbatoni këtë algoritëm, patjetër që do të keni shumë pyetje. Për shembull, çfarë të bëni kur regjistroni një përdorues, identifikimi i të cilit është tashmë në bazën e të dhënave. Zbatimi i kontrolleve të ndryshme të hyrjeve, zbatimi i kontrollit të ekzistencës e-mail dhe kështu me radhë - e gjithë kjo është mjaft e ndërlikuar nëse e bëni për herë të parë. Megjithatë, unë dhashë më shumë lëng. Nëse keni ndonjë pyetje gjatë zbatimit, atëherë pyesni ose në forum ose në komente.

Pershendetje te gjitheve. Pra, kemi mësuar 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 bëjmë dhe lidhim nënshkrime me to.

Fusha e parë është për emrin e përdoruesit, e dyta është për fjalëkalimin. Dhe e dyta nuk është aq e thjeshtë. Sepse për momentin është vetëm një fushë e futjes së tekstit.

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ë. Domethënë, për të zëvendësuar 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ë bëni një buton që do të përdoret për të dorëzuar formularin. Problemi 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 nëse do ta emërtoni ose jo butonin, nëse e bëni këtë, serveri do të marrë këtë emër, si dhe vlerën e butonit.

Në mënyrë tipike, emri i butonit të paraqitjes së një formulari nevojitet kur formulari ka shumë 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 në cilin buton ka klikuar përdoruesi dhe çfarë, në përputhje me rrethanat, duhet të bëhet.

Si rezultat, kodi ynë i formës do të duket si ky:

Rezultati në shfletues:

Unë sjell në vëmendjen tuaj një shumë të thjeshtë dhe funksionale skript për regjistrim dhe autorizim në faqe, i cili përbëhet nga 3 skedarë PHP me lidhjen e 2 skripteve java, me ndihmën e të cilave shfaqen gabimet në vetë formularin pa ringarkuar faqen.

Skripti është testuar me sukses në PHP 5.3.3 dhe PHP 5.6.3

Çfarë mund dhe ka një skenar

  • Regjistro përdorues të rinj;
  • Autorizoni përdoruesit dhe ruani cookie-t për një periudhë të caktuar (nuk ka nevojë të identifikoheni çdo herë);
  • Trego dhe fsheh informacione të caktuara për të autorizuar dhe jo të autorizuar, përkatësisht;
  • Ai ka një PANEL ADMIN, ku mund të modifikoni të gjitha të dhënat dhe të fshini përdoruesit.

Po aty DEMO dhe Paneli Admin

1 HAPI.
Nëse përdorni skriptin për regjistrim dhe autorizim në një kompjuter lokal duke përdorur DENWER, atëherë nuk keni nevojë të bëni ndryshime në skedarë për t'u lidhur me bazën e të dhënave.
Përndryshe, hapni skedarët: stayt.php , classes/Auth.class.php dhe adminka/connect.php, dhe në krye zëvendësoni të dhënat për t'u lidhur me bazën e të dhënave me tuajat.

2 HAPI.
Shkoni (nëse përdorni DENWER) në adresën: http://localhost/Tools/phpmyadmin/, nëse strehon, atëherë klikoni Bazat e të dhënave dhe krijoni një bazë të dhënash të re me emrin: regjistr dhe krahasim: utf8_general_ci.
Sigurisht, ju mund të specifikoni emrin tuaj, por më pas duhet ta zëvendësoni atë në skedarë për t'u lidhur me bazën e të dhënave (shih hapin 1).

3 HAPI.
Klikoni në regjistrin e krijuar të bazës së të dhënave dhe më pas në skedën e sipërme SQL dhe në dritaren e shfaqur për hyrje, ngjitni këtë kod dhe klikoni OK.

KRIJO TABELA NËSE NUK EKZISTON `my_users` (`id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `emrat` varchar(15) NOT NULL, `fjalëkalimi` varchar(255) JO NULL, `kripë` varchar(100) JO NULL, ÇELËSI KRYESOR (`id`)) MOTORI=MyISAM SEKTORI DEFAULT CHARSET=utf8;

Gjithçka! Shkoni te shfletuesi në adresën tuaj, provoni dhe eksperimentoni.

Paneli i administratorit

Pasi të keni bërë të paktën një regjistrim, mund të shkoni në ADMINKU.
Identifikohu në PANELI ADMIN:

Http://Your_site.ru/adminka/

Mos harroni të mbroni këtë dosje me fjalëkalim dhe gjithashtu mund ta riemërtoni.
Kur hapni panelin e administratorit, shtypni butonin KËRKO dhe do të shihni të gjithë përdoruesit e regjistruar, ku kur klikoni në një numër specifik ID, do të hapni të dhënat e përdoruesit për redaktim.

Ju gjithashtu mund të gjeni shpejt një përdorues me postën e tij elektronike, thjesht shkruani një e-mail të njohur në fushën KËRKO dhe klikoni mbi butonin.
Unë nuk rekomandoj përdorimin e butonit ADD, pasi përdoruesi shtohet në sistem pa një fjalëkalim. Dhe nuk e kam idenë pse e bënë fare.

Kjo është gjithçka që nuk funksionon ose nuk është e qartë - bëni pyetje.


Gjatë rrugës, mund të përpiqeni të shesni informacion (mallra).

Procesi i krijimit të një sistemi regjistrimi është mjaft punë. Ju duhet të shkruani kodin që kontrollon vlefshmërinë e adresave të emailit, dërgon email konfirmimi, ofron rikuperim të fjalëkalimit, ruan fjalëkalimet në një vend të sigurt, vërteton formularët e hyrjes dhe më shumë. Edhe kur i bëni të gjitha këto, përdoruesit do të hezitojnë të regjistrohen, pasi edhe regjistrimi më minimal kërkon aktivitetin e tyre.

Në tutorialin e sotëm, ne do të zhvillojmë një sistem të thjeshtë identifikimi ku nuk ju nevojitet asnjë fjalëkalim! Si rezultat, ne do të marrim një sistem që mund të modifikohet ose integrohet lehtësisht në një faqe ekzistuese PHP. Nëse jeni të interesuar, vazhdoni të lexoni.

PHP

Tani jemi gati për të arritur te kodi PHP. Funksionaliteti kryesor i sistemit të regjistrimit ofrohet nga klasa User, të cilën mund ta shihni më poshtë. Klasa përdor (), e cila është një bibliotekë minimaliste e bazës së të dhënave. Klasa e Përdoruesit është përgjegjëse për aksesin në bazat e të dhënave, gjenerimin e argumenteve për hyrje dhe vërtetimin e tyre. Ai na ofron një ndërfaqe të thjeshtë që mund të përfshihet lehtësisht në sistemin e regjistrimit në sajtet tuaja të bazuara në PHP.

user.class.php

// Shembull ORM privat
privat $orm;

/**
* Gjeni një përdorues me një varg token. Merren vetëm argumentet e vlefshme
* konsideratë. Një shenjë është e vlefshme për 10 minuta pasi të jetë krijuar.
* @param string $token Shenja për të kërkuar
* @returnUser
*/

funksioni statik publik findByToken($token)(

// gjeni atë në bazën e të dhënave dhe sigurohuni që vula kohore të jetë e saktë


->where ("token", $token)
->where_raw ("vlefshmëria_token > TANI()")
-> find_one();

Nëse(!$rezultat)(
kthej false;
}

Kthehu përdoruesin e ri ($result);
}

/**
* Ose identifikohuni ose regjistrohuni një përdorues.
* @returnUser
*/

Funksioni publik statik loginOrRegjistro($email)(

// Nëse një përdorues i tillë ekziston tashmë, kthejeni atë

Nëse(Përdoruesi::ekziston($email))(
ktheni përdoruesin e ri ($email);
}

// Përndryshe, krijoni atë dhe kthejeni atë

Return User::create($email);
}

/**
* Krijoni një përdorues të ri dhe ruajeni në bazën e të dhënave
* @param string $email Adresa e emailit të përdoruesit
* @returnUser
*/

Funksioni statik privat krijimi ($email)(

// Shkruani një përdorues të ri në bazën e të dhënave dhe kthejeni atë

$rezultat = ORM::for_table ("reg_users")->create();
$rezultat->email = $email;
$rezultat->save();

Kthehu përdoruesin e ri ($result);
}

/**
* Kontrolloni nëse një përdorues i tillë ekziston në bazën e të dhënave dhe ktheni një boolean.
* @param string $email Adresa e emailit të përdoruesit
* @return boolean
*/

Ekziston funksioni publik statik ($email)(

// A ekziston përdoruesi në bazën e të dhënave?
$result = ORM::for_table ("reg_përdoruesit")
->where ("email", $email)
->count();

kthe $rezultat == 1;
}

/**
* Krijoni një objekt të ri përdoruesi
* @param $param shembull ORM, id, email ose null
* @returnUser
*/

Funksioni publik __construct($param = null)(

Nëse ($param shembulli ORM)(

// U kalua një shembull ORM
$this->orm = $param;
}
tjeter if(is_string($param))(

// U kalua një email
$this->
->where ("email", $param)
-> find_one();
}
tjeter(

Nëse(është_numerike($param))(
// Një ID e përdoruesit u kalua si parametër
$id = $param;
}
else if(isset($_SESSION["loginid"]))(

// Nuk u kalua asnjë ID e përdoruesit, shikoni seancën
$id = $_SESSION["loginid"];
}

$this->orm = ORM::for_table("reg_users")
->where ("id", $id)
-> find_one();
}

/**
* Gjeneron një shenjë të re hyrje SHA1, e shkruan atë në bazën e të dhënave dhe e kthen atë.
* @return varg
*/

Funksioni publik generateToken()(
// gjeneroni një shenjë për përdoruesin e regjistruar. Ruajeni atë në bazën e të dhënave.

$token = sha1($this->email.time().rand(0, 1000000));

// Ruani shenjën në bazën e të dhënave,
// dhe shënojeni si të vlefshme vetëm për 10 minutat e ardhshme

$this->orm->set("token", $token);
$this->orm->set_expr("vlefshmëria_token", "ADDTIME(TANI(),"0:10")");
$this->orm->save();

Ktheni $token;
}

/**
* Identifikohu për këtë përdorues
* @return e pavlefshme
*/

identifikimi i funksionit publik()(

// Shënoni përdoruesin si të identifikuar
$_SESSION["loginid"] = $this->orm->id;

// Përditëso fushën last_login db
$this->orm->set_expr("Last_login", "TANI()");
$this->orm->save();
}

/**
* Shkatërroni seancën dhe dilni nga përdoruesi.
* @return e pavlefshme
*/

dalja e funksionit publik ()(
$_SESSION = grup();
unset ($_SESSION);
}

/**
* Kontrolloni nëse përdoruesi është i identifikuar.
* @return boolean
*/

Funksioni publik logedIn()(
kthen isset($this->orm->id) && $_SESSION["loginid"] == $this->orm->id;
}

/**
* Kontrolloni nëse përdoruesi është administrator
* @return boolean
*/

Funksioni publik ështëAdmin()(
ktheni $this->rank() == "administrator";
}

/**
* Gjeni llojin e përdoruesit. Mund të jetë ose administrator ose i rregullt.
* @return varg
*/

renditja e funksionit publik()(
if($this->orm->rank == 1)(
kthehu "administratori";
}

Kthehu "i rregullt";
}

/**
* Metoda magjike për të hyrë në elementët e privatit
* Shembulli $orm si vetitë e objektit të përdoruesit
* @param string $key Emri i vetive të aksesuara
* @kthim i përzier
*/

Funksioni publik __get($key)(
if(isset($this->orm->$key))(
ktheje $this->orm->$key;
}

kthej null;
}
}
Shenjat gjenerohen duke përdorur algoritmin dhe ruhen në bazën e të dhënave. Ne përdorim nga MySQL për të vendosur vlerën në kolonën token_validity në 10 minuta. Kur vërtetojmë një shenjë, ne i themi motorit që na duhet një shenjë, fusha e vlefshmërisë token nuk ka skaduar ende. Kështu, ne kufizojmë kohën gjatë së cilës shenja do të jetë e vlefshme.

Vini re se ne përdorim metodën magjike __get() në fund të dokumentit për të hyrë në vetitë e objektit të përdoruesit. Kjo na lejon të aksesojmë të dhënat e ruajtura në bazën e të dhënave si veti: $user->email, $user->token. Si shembull, le të shohim se si mund ta përdorim këtë klasë në fragmentin e mëposhtëm të kodit:


Një skedar tjetër që ruan funksionalitetin e nevojshëm është funksionet.php. Atje kemi disa funksione ndihmëse që na lejojnë ta mbajmë pjesën tjetër të kodit më të rregullt.

Funksionet.php

Funksioni send_email($from, $to, $subject, $message)(

// Funksioni ndihmës për dërgimin e emailit

$headers = "Versioni MIME: 1.0" . "\r\n";
$headers .= "Lloji i përmbajtjes: tekst/i thjeshtë; charset=utf-8" . "\r\n";
$headers .= "Nga: ".$from . "\r\n";

kthimi i postës ($to, $subject, $message, $headers);
}

funksioni get_page_url()(

// Gjeni URL-në e një skedari PHP

$url = "http".(bosh($_SERVER["HTTPS"])?"":"s")."://".$_SERVER["SERVER_NAME"];

If(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")(
$url.= $_SERVER["REQUEST_URI"];
}
tjeter(
$url.= $_SERVER["PATH_INFO"];
}

Ktheni $url;
}

funksioni norma_limit ($ip, $limit_hour = 20, $limit_10_min = 10)(

// Numri i përpjekjeve të hyrjes për orën e fundit nga kjo adresë IP

$count_hour = ORM::for_table ("reg_login_attempt")
->
->where_raw("ts > SUBTIME(TANI(),"1:00")")
->count();

// Numri i përpjekjeve të hyrjes për 10 minutat e fundit nga kjo adresë IP

$count_10_min = ORM::for_table ("reg_login_attempt")
->where("ip", sprintf("%u", ip2long($ip)))
->where_raw("ts > SUBTIME(TANI(),"0:10")")
->count();

If($count_hour > $limit_hour || $count_10_min > $limit_10_min)(
hedh një Përjashtim të ri ("Shumë përpjekje për hyrje!");
}
}

funksioni rate_limit_tick($ip, $email)(

// Krijo një rekord të ri në tabelën e përpjekjeve për hyrje

$login_attempt = ORM::for_table("reg_login_attempt")->create();

$login_attempt->email = $email;
$login_attempt->ip = sprintf("%u", ip2long($ip));

$login_attempt->save();
}

ridrejtimi i funksionit($url)(
header ("Vendndodhja: $url");
dalje;
}
Funksionet rate_limit dhe rate_limit_tick na lejojnë të kufizojmë numrin e përpjekjeve për autorizim për një periudhë të caktuar kohe. Përpjekjet për autorizim regjistrohen në bazën e të dhënave reg_login_attempt. Këto funksione ekzekutohen kur dorëzohet formulari i hyrjes, siç mund ta shihni në fragmentin e kodit të mëposhtëm.

Kodi më poshtë është marrë nga index.php dhe është përgjegjës për vërtetimin e formularit të hyrjes. Ai kthen një përgjigje JSON e cila drejtohet nga kodi jQuery që pamë në assets/js/script.js.

indeks.php

Nëse(!bosh($_POST) && është vendosur($_SERVER["HTTP_X_REQUESTED_WITH"]))(

// Nxjerr një kokë JSON

Header ("Lloji i përmbajtjes: aplikacion/json");

// A është e vlefshme adresa e emailit?

If(!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))(
hedh një përjashtim të ri ("Ju lutemi shkruani një email të vlefshëm.");
}

// Kjo do të bëjë një përjashtim nëse personi është lart
// kufijtë e lejuar të përpjekjes për hyrje (shih funksionet.php për më shumë):
norma_limit (SERVER_$["REMOTE_ADDR"]);

// Regjistro këtë përpjekje për hyrje
rate_limit_tick($_SERVER["REMOTE_ADDR"], $_POST["email"]);

// Dërgo mesazhin te përdoruesi

$message = "";
$email = $_POST["email"];
$subject = "Lidhja juaj e hyrjes";

Nëse(!Përdoruesi::ekziston($email))(
$subject = "Faleminderit për regjistrimin!";
$message = "Faleminderit për regjistrimin në faqen tonë!\n\n";
}

// Përpjekje për të identifikuar ose regjistruar personin
$user = Përdoruesi::loginOrRegister($_POST["email"]);

$message.= "Ju mund të identifikoheni nga kjo URL:\n";
$message.= get_page_url()."?tkn=".$user->generateToken()."\n\n";

$message.= "Lidhja do të skadojë automatikisht pas 10 minutash.";

$rezultat = dërgoni_email($fromEmail, $_POST["email"], $subject, $message);

Nëse(!$rezultat)(
hedh një 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ë spamit."
)));
}
}
kap (përjashtim $e)(

Die(json_encode(array(
"gabim"=>1,
"message" => $e->getMessage()
)));
}
Pas autorizimit ose regjistrimit të suksesshëm, kodi i mësipërm i dërgon një email një personi me një lidhje për autorizim. Token (token) bëhet i disponueshëm si ndryshorja $_GET "tkn" për shkak të URL-së së krijuar.

indeks.php

If(isset($_GET["tkn"]))(

// A është kjo një shenjë e vlefshme identifikimi?
$user = Përdoruesi::findByToken($_GET["tkn"]);

//Po! Identifikohu përdoruesin dhe ridrejtohu në faqen e mbrojtur.

$user->login();
ridrejto("protected.php");
}

// Shenja e pavlefshme. Ridrejtojeni përsëri në formularin e hyrjes.
ridrejtoj ("index.php");
}
Ekzekutimi i $user->login() do të krijojë variablat e nevojshëm për sesionin, duke e lejuar përdoruesin të mbetet i kyçur në hyrjet e mëvonshme.

Dalja nga sistemi zbatohet afërsisht në të njëjtën mënyrë:

Indeksi.php

If(isset($_GET["logout"]))(

$përdorues = Përdorues i ri();

Nëse($user->LogedIn())(
$user->logout();
}

ridrejtoj ("index.php");
}
Në fund të kodit, ne e ridrejtojmë përdoruesin përsëri te index.php, kështu që parametri ?logout=1 në URL është i përjashtuar.

Skedari ynë index.php gjithashtu do të ketë nevojë për mbrojtje - ne nuk duam që përdoruesit e regjistruar tashmë të shohin formularin. Për ta bërë këtë, ne përdorim metodën $user->loggedIn():

Indeksi.php

$përdorues = Përdorues i ri();

if($user->logedIn())(
ridrejto("protected.php");
}
Së fundi, le të shohim se si mund të siguroni një faqe në faqen tuaj dhe ta bëni atë të disponueshme vetëm pasi të identifikoheni:

të mbrojtura.php

// Për të mbrojtur çdo faqe php në faqen tuaj, përfshini main.php
// dhe krijoni një objekt të ri Përdoruesi. Është kaq e thjeshtë!

request_once "përfshin/main.php";

$përdorues = Përdorues i ri();

if(!$user->logedIn())(
ridrejtoj ("index.php");
}
Pas këtij kontrolli, mund të jeni i sigurt se përdoruesi ka hyrë me sukses. Ju gjithashtu do të keni akses në të dhënat e ruajtura në bazën e të dhënave si veti të objektit $user. Për të shfaqur emailin e përdoruesit dhe renditjen e tij, përdorni kodin e mëposhtëm:

echo "Email-i juaj: ".$user->email;
echo "Ranku juaj: ".$user->rank();
Këtu, rank() është një metodë sepse kolona e renditjes në një bazë të dhënash zakonisht përmban numra (0 për përdoruesit normalë dhe 1 për administratorët), dhe ne duhet ta konvertojmë të gjithë këtë në emra të renditjes, gjë që zbatohet duke përdorur këtë metodë. Për të kthyer një përdorues normal në një administrator, thjesht modifikoni hyrjen e përdoruesit në phpmyadmin (ose ndonjë program tjetër të bazës së të dhënave). Si administrator, përdoruesi nuk do të jetë i pajisur me ndonjë aftësi të veçantë. Ju vetë keni të drejtë të zgjidhni se çfarë të drejtash t'i jepni administratorëve.

Gati!

Për këtë, sistemi ynë i thjeshtë i regjistrimit është gati! Mund ta përdorni në një sajt ekzistues PHP, ose mund ta përmirësoni sipas nevojave tuaja.

Artikujt kryesorë të lidhur