Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Skrip i thjeshtë regjistrimi php dhe mysql. Krijimi i një sistemi të thjeshtë regjistrimi të përdoruesve në PHP dhe MySQL

Skrip i thjeshtë regjistrimi php dhe mysql. Krijimi i një sistemi të thjeshtë regjistrimi të përdoruesve në PHP dhe MySQL

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:

Çdokush që zhvillon faqet e internetit herët a vonë përballet me një detyrë të tillë si autorizimi dhe vërtetimi i përdoruesit zbatohet duke përdorur gjuhën e programimit dhe duke mos përdorur standardin e protokollit http. Sot do të shikojmë një shembull të krijimit të një autorizimi të thjeshtë duke përdorur gjuhën e programimit PHP dhe do të ruajmë të dhënat e përdoruesit në një bazë të dhënash MySQL.

Metoda e dhënë më poshtë është një e thjeshtë ose, si të thuash, bazë për krijimin e një autorizimi normal, por mund ta përdorni mjaft, pasi funksionon mjaft mirë, mund ta përmirësoni këtë metodë dhe ta zbatoni në faqen tuaj të internetit.

Kjo metodë bazohet në sesione, por unë përdor edhe cookie këtu, në mënyrë që shfletuesi të kujtojë përdoruesin që vërtetoi herën e fundit, në mënyrë që sa herë që nuk futni hyrjen, sigurisht që mund të ruani fjalëkalimin në cookie, por kjo nuk është e sigurt, edhe nëse është e koduar. Në mënyrë që seanca të përfundojë, thjesht mbyllni shfletuesin dhe rihapni atë.

Krijimi i objekteve në bazën e të dhënave

Le të zbresim në praktikë. Së pari, le të krijojmë një tabelë për ruajtjen e të dhënave të përdoruesit në bazën e të dhënave MySQL. Unë sugjeroj përdorimin e një strukture të thjeshtë tabele ( Ju, sigurisht, mund ta plotësoni atë me diçka, baza ime quhet test, dhe tabela e përdoruesve):

KRIJO TABLE test.përdoruesit (user_id INT (11) I PUNISIGNED NOT NULL AUTO_INCREMENT, user_login VARCHAR (30) NOT NULL, user_password VARCHAR (32) NOT NULL, PRIMARY KEY (user_id) CONTEGENATE_8LUTARY = ENGINETGENERLUTARY

Dhe le të shtojmë menjëherë një rekord në këtë tabelë:

Fut vlerat në test.users (user_login, user_password) ("mylogin", "202cb962ac59075b964b07152d234b70")

Në total kemi marrë:

  • Identifikohu- mylogin;
  • Fjalëkalimi -;

Sigurisht, ne do ta ruajmë fjalëkalimin në një formë hash, pasi ruajtja e fjalëkalimit në tekst të qartë është, për ta thënë butë, jo e sigurt. Ne kemi mbi fjalëkalimin hash 123, kështu që kur futim fjalëkalimin në formular, do të shënojmë saktësisht 123, jo.

Krijo një formular regjistrimi

Në mënyrë që përdoruesi të regjistrohet vetë, krijoni një formular, të dhënat nga i cili do të dërgohen në dosjen e përpunimit të regjistrimit, d.m.th. shkruani në bazën e të dhënave. Për shembull, këtu është mënyra më e thjeshtë:

0) ($ gabim = "Ka tashmë një përdorues me këtë hyrje";) // Nëse jo, atëherë shtoni një përdorues të ri nëse (! Isset ($ gabim)) ($ login = mysql_real_escape_string (trim (htmlspecialchars ($ _ POST ["login" ]))); // Hiq hapësirat dhe hash fjalëkalimin $ password = md5 (trim ($ _ POST ["password"])); mysql_query ("INSERT INTO users SET user_login = " ". $ Identifikohu. " ", User_password =" ". $ fjalëkalim." ""); echo "Jeni regjistruar me sukses me hyrjen -". $ login; dil ();) tjetër (// nëse ka një hyrje të tillë, atëherë flasim rreth tij echo $ error;)) // si parazgjedhje të dhënat do të dërgohen në të njëjtin skedar printimi<<< html

Identifikohu
Fjalëkalimi
html; ?>

Nga rruga, me këtë metodë, është më mirë të përdorni shkronja latine për hyrje ( ato. anglisht), nëse doni të shkruani një hyrje në Rusisht, do të duhet të korrigjoni pak kodin. Ju mund ta emërtoni skedarin si të doni ( për testin kam përdorur reg.html).

Shënim! Për testim, përdor vetëm një skedar, të cilin e emërova mylogin.html (kodi i skedarit më poshtë). Ju mund t'i përdorni në skedarët tuaj dhe t'i emërtoni si të dëshironi, unë e përshkruaj procesin e autorizimit këtu, kështu që mund ta aplikoni kudo. Nga rruga, në të gjithë skedarët do të duhet të përdorni funksionin session_start (); në mënyrë që të mund të kontrolloni nëse përdoruesi është i autorizuar apo jo. Dhe një gjë tjetër, sigurisht, shkruani cilësimet tuaja për t'u lidhur me bazën e të dhënave.

Krijimi i një formulari autorizimi

"." Jeni të identifikuar
ato. ne kontrolluam seancën dhe mund të hapim akses në të dhëna të caktuara ";) tjetër ($ login = " "; // kontrolloni skedarin e skedarit, ndoshta ai tashmë është futur këtu nëse (isset ($ _ COOKIE [" CookieMy "])) ($ login = htmlspecialchars ( $ _COOKIE ["CookieMy"]);) // printim i formës së thjeshtë<<< html

Identifikohu
Fjalëkalimi
html; )?>

Shënim! Nëse papritmas analizuesi juaj php refuzon të punojë, d.m.th. vetë kodi php shfaqet në ekran, atëherë thjesht nuk e keni të aktivizuar përpunimin php në skedarët html. Cilësimet bëhen në skedarin e konfigurimit të serverit të uebit httpd.conf (nëse apache):

Aplikacioni AddType / x-httpd-php .php .html

Në IIS, në dritaren Add Module Mapping, shtoni * .html në * .php, të ndara me presje. Kjo është nëse e bëni në shtëpi në serverin tuaj të internetit, dhe nëse i bëni të gjitha këto në hoster, atëherë do t'ju duhet t'i shkruani dhe t'i kërkoni të bëjnë ndryshimet e nevojshme, disa hoste tashmë i kanë bërë ato.

Unë komentova kodin, kështu që mendoj se gjithçka duhet të jetë e qartë. Edhe një herë, ju kujtoj se në të gjithë skedarët, përmbajtja e të cilave nuk dëshironi t'u tregoni përdoruesve të paautorizuar, duhet të shkruani session_start, dhe, me siguri, kjo është e gjitha. Nëse keni ndonjë pyetje, pyesni në komente. Paç fat!

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ë përmbush 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ërdoruesve, por në këtë artikull do të analizoj të preferuarin tim - përmes mekanizmit të sesionit ose cookie-t.

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ë rregullt, në skedar XML, ose në bazën e të dhënave. Dy opsionet e para janë shumë të rrezikshme, ndaj nuk ju rekomandoj t'i përdorni. Dhe këtu është opsioni i tretë - ruajtja e informacionit për përdoruesit në një bazë të dhënash- më e popullarizuara, dhe është kjo metodë e ruajtjes së informacionit që ju këshilloj të përdorni.

Ne vendosëm për vendndodhjen e ruajtjes. Tani le të shkojmë drejtpërdrejt në algoritmi i autorizimit:

  1. Krijoni një formular regjistrimi në HTML.
  2. Merrni të dhëna nga një formular në një skript mbajtës.
  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. Opsioni më i thjeshtë është ruajtja e informacionit në një seancë (ose në biskotë). Dhe tani algoritmi:

  1. Krijo një formular autorizimi të përdoruesit në HTML, ku përdoruesi do të 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ë jeni bindur dhe ruani fjalëkalime të koduara në bazën e të dhënave, atëherë kodoni së pari fjalëkalimin e marrë. Nëse baza e të dhënave përmban fjalëkalime të hapura, atëherë enkriptimi nuk është i nevojshëm.
  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 hyrja 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 e cila ruhet në të 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 verifikoni atë në të njëjtën mënyrë si kontrollimi i formularit të autorizimit. Kjo është, ju lexoni nga biskotë(sesioni) identifikimin 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ë pasakta, atëherë tregoni një faqe tjetër (për mysafirët).

Dhe gjëja e fundit. si është butoni " Dilni"? Shumë e thjeshtë. Kur shtypni 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, sigurisht që do të keni shumë pyetje. Për shembull, çfarë të bëni kur regjistroni një përdorues, identifikimi i të cilit tashmë ekziston 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 vështirë nëse e bëni për herë të parë. Megjithatë, lëngun e dhashë vetë. Nëse keni ndonjë pyetje gjatë zbatimit, atëherë pyesni ose në forum ose në komente.

Nëse ju duhet të bëni një nga seksionet e faqes tuaj të disponueshme për një rreth të kufizuar, por të pacaktuar njerëzish, mënyra më e lehtë për ta bërë këtë është duke regjistruar dhe autorizuar përdoruesit. Ka shumë mënyra për të vërtetuar përdoruesit. Mund të përdoren si mjetet e serverit të uebit ashtu edhe mjetet e gjuhës programuese. Do të flasim për rastin kur përdoren sesionet PHP.

Së pari, le të diskutojmë të gjithë hapat që do të ndërmarrim në vijim. Madje çfarë na duhet? Ne kemi nevojë për një skript që do të regjistrojë një përdorues, do të autorizojë një përdorues, do ta ridrejtojë përdoruesin diku pas autorizimit. Do të na duhet gjithashtu të krijojmë një faqe që do të mbrohet nga aksesi nga përdorues të paautorizuar. Për regjistrim dhe autorizim, do të na duhet të krijojmë formularë HTML. Ne do të ruajmë informacionin për përdoruesit e regjistruar në një bazë të dhënash. Kjo do të thotë që ne kemi ende nevojë për një skript për t'u lidhur me DBMS. E gjithë puna jonë do të kryhet nga funksionet që ne vetë do t'i shkruajmë. Ne do t'i ruajmë këto funksione në një skedar të veçantë.

Pra, na duhen skedarët e mëposhtëm:

  • lidhje me DBMS;
  • funksione me porosi;
  • autorizimi;
  • regjistrimi;
  • faqe e mbrojtur;
  • skript i mbylljes së përdoruesit;
  • një skript që kontrollon statusin e autorizimit të përdoruesit;
  • fletë stili për dizajnin më të thjeshtë të faqeve tona.

E gjithë kjo do të ishte e kotë nëse nuk keni një tabelë përkatëse në bazën e të dhënave tuaja. Hapni mjetin tuaj të menaxhimit të DBMS (PhpMyAdmin ose linja e komandës, cilado që është më e përshtatshme) dhe ekzekutoni pyetjen e mëposhtme në të:

KRIJO TABELA `përdoruesit` (` id` int (11) NOT NULL AUTO_INCREMENT, karakteri `login` (16) NOT NULL,` karakteri i fjalëkalimit (40) NOT NULL, vula kohore e `reg_date` NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY id`)) MOTORI = SEKTORI I PARAKTUAR I MYISAM = utf8 AUTO_INCREMENT = 1;

Unë do t'i emërtoj skedarët tanë të skriptit si ky (ato do të jenë të gjithë në të njëjtin drejtori):

  • database.php;
  • funksionet.php;
  • login.php;
  • regjistrim.php;
  • index.php;
  • logout.php;
  • checkAuth.php;
  • stil.css.

Qëllimi i secilit prej tyre, jam i sigurt, është i qartë për ju. Le të fillojmë me skriptin e lidhjes DBMS. E keni parë më parë. Thjesht ruani kodin për këtë skript në një skedar të quajtur database.php. Ne do të deklarojmë funksione të personalizuara në skedarin functions.php. Si do të funksionojë e gjithë kjo? Një përdorues i paautorizuar përpiqet të hyjë në dokumentin e mbrojtur index.php, sistemi kontrollon nëse përdoruesi është i autorizuar, nëse përdoruesi nuk është i autorizuar, ai ridrejtohet në faqen e autorizimit. Në faqen e autorizimit, përdoruesi duhet të shohë një formular autorizimi. Le ta bejme.

Autorizimi i përdoruesit

regjistroheni.

Tani duhet t'i japim formës sonë një pamje të caktuar. Në të njëjtën kohë, ne do të përcaktojmë rregullat për elementët e tjerë. Unë do t'ju jap përmbajtjen e plotë të fletës së stilit, duke u bërë përpara vetes.

/ * Skedari style.css * / .row (margin-fund: 10px; gjerësia: 220px;) .etiketa e rreshtit (ekrani: bllok; pesha e shkronjave: bold;) .input.tekst i rreshtit (madhësia e shkronjave: 1.2em; mbushje: 2px 5px;) .to_reg (madhësia e shkronjave: 0.9em;) udhëzim (madhësia e shkronjave: 0.8em; ngjyra: #aaaaaa; margjina majtas: 2 px; kursori: default;) .gabim (ngjyra: e kuqe; margjina majtas: 3 px;)

Nëse gjithçka është bërë si duhet, duhet të keni sa më poshtë në shfletuesin tuaj:

Natyrisht, ne nuk kemi ende një përdorues të vetëm të regjistruar dhe për të hyrë duhet të regjistroheni. Le të bëjmë një formular regjistrimi.

Regjistrimi i përdoruesit

" />

Ju ndoshta keni vënë re se ka variabla PHP në kodin HTML. Ato janë përmbajtja e atributeve të fushave të tekstit në forma, përmbajtja e kontejnerëve për shfaqjen e gabimeve. Por ne nuk i kemi inicializuar këto variabla. Le ta bejme ate.

Regjistrimi i përdoruesit

" />
Emri i përdoruesit mund të përmbajë vetëm karaktere latine, numra, simbole "_", "-", ".". Gjatësia e emrit të përdoruesit duhet të jetë së paku 4 karaktere dhe jo më shumë se 16 karaktere
Në fjalëkalimin, mund të përdorni vetëm karaktere latine, numra, simbole "_", "!", "(", ")". Fjalëkalimi duhet të jetë së paku 6 karaktere dhe jo më i gjatë se 16 karaktere
Përsëriteni fjalëkalimin e futur më parë

Nuk ka asnjë parametër të specifikuar në atributin e veprimit të etiketës së formës. Në këtë rast, kur të dhënat e formularit dorëzohen, ato do të përpunohen në të njëjtin skenar nga i cili janë dorëzuar. Pra, ne duhet të shkruajmë kodin që përpunon të dhënat e formularit. Por së pari, le të diskutojmë algoritmin për përpunimin e tyre.

Ne kemi nevojë që fushat e hyrjes dhe fjalëkalimit të mos jenë bosh. Pastaj ju duhet të kontrolloni hyrjen për pajtueshmërinë me kërkesat. Fjalëkalimi duhet gjithashtu të plotësojë kërkesat e përshkruara, dhe fjalëkalimi i përsëritur duhet të përputhet me të dhe, për më tepër, ato duhet të jenë identike. Nëse ndonjë nga këto kushte nuk plotësohet, përpunimi i të dhënave të formularit duhet të ndërpritet, njoftimi përkatës duhet të shkruhet në grupin e mesazheve të gabimit dhe duhet t'i shfaqet përdoruesit. Për lehtësinë e përdoruesit, ne do të ruajmë hyrjen e futur prej tij (nëse ai e ka treguar), duke shkruar vlerën e tij në grupin e fushave $.

Nëse gjithçka është në rregull, në dritaren e shfletuesit tuaj, duke iu referuar dokumentit register.php, duhet të shihni diçka si kjo:

Tani, le të themi se përdoruesi klikon në butonin e regjistrimit pa plotësuar fushat e formularit. Sipas algoritmit tonë, identifikimi dhe fjalëkalimi nuk mund të jenë bosh. Nëse ky kusht nuk plotësohet, regjistrimi nuk është i mundur. Kemi parasysh që përpunimi i të dhënave të formularit bëhet në skriptin aktual. Kjo do të thotë që ne duhet të ndryshojmë kodin e tij duke shtuar kontrollet e duhura. Ne do të përcaktojmë menjëherë kontrollet e mëposhtme. Nëse futen të dy hyrjen dhe fjalëkalimin, duhet të kontrolloni përputhshmërinë e tyre me kërkesat e specifikuara. Për të kontrolluar hyrjen dhe fjalëkalimin, ne do të krijojmë funksione të personalizuara në skedarin functions.php.

/ ** * funksionet.php * Skedari me funksione të personalizuara * / // Përfshi një skedar me parametra për t'u lidhur me DBMS require_once ("database.php"); // Kontrollimi i funksionit të emrit të përdoruesit checkLogin ($ str) (// Inicializoni variablin me një mesazh gabimi të mundshëm $ error = ""; // Nëse nuk ka varg identifikimi, ktheni një mesazh gabimi nëse (! $ Str) ($ error = " Nuk keni futur një emër përdoruesi "; ktheni gabimin $;) / ** * Kontrolloni emrin e përdoruesit duke përdorur shprehje të rregullta * Hyrja duhet të jetë së paku 4, jo më shumë se 16 karaktere * Duhet të përmbajë karaktere latine, numra, * mund të të jenë karaktere "_", "-", "." * / $ model = "/^ [-_.az\d ](4,16)$/i"; $ rezultat = preg_match ($ model, $ str) ; // Nëse kontrolli dështon, ktheni një mesazh gabimi nëse (! $ Result) ($ error = "Karakteret e pavlefshme në emrin e përdoruesit ose emri i përdoruesit është shumë i shkurtër (i gjatë)"; ktheni gabimin $;) // Nëse gjithçka është në rregull , ktheni kthimin e vërtetë të vërtetë;) // Kontrolloni funksionin e fjalëkalimit të përdoruesit checkPassword ($ str) (// Inicializoni variablin me një mesazh gabimi të mundshëm $ error = ""; // Nëse nuk ka shfaqet një varg me një hyrje, ktheni një mesazh gabimi nëse (! $ str) ($ error = "Nuk keni futur një fjalëkalim"; ktheni gabimin $; ) / ** * Kontrolloni fjalëkalimin e përdoruesit duke përdorur shprehje të rregullta * Fjalëkalimi duhet të jetë jo më i shkurtër se 6, jo më i gjatë se 16 karaktere * Duhet të përmbajë karaktere latine, numra, * mund të përmbajë karaktere "_", "!", " ( ",") "* / $ model =" /^ [_!)(.az\d *(6,16)$/i "; $ rezultat = preg_match ($ model, $ str); // Nëse kontrolli dështoi, kthe një mesazh gabimi nëse (! $ rezultat) ($ error = "Karakteret e pavlefshme në fjalëkalimin e përdoruesit ose fjalëkalimi është shumë i shkurtër (i gjatë)"; ktheje gabimin e $;) // Nëse gjithçka është në rregull, kthehu i vërtetë kthimi i vërtetë ;)

Tani duhet të modifikojmë skedarin register.php për të përdorur funksionet që kemi deklaruar. Ne do të shtojmë një kusht në skript për të kontrolluar që butoni i regjistrimit është klikuar. Brenda këtij kushti, fillon një kontroll i hyrjes dhe fjalëkalimeve. Nëse ndonjë nga kontrollet dështon, ne e ri-transmetojmë formularin dhe shfaqim një mesazh gabimi. Nëse nuk ka gabime, ne e regjistrojmë përdoruesin, nuk e shfaqim më formularin e regjistrimit, e informojmë përdoruesin për regjistrimin e suksesshëm dhe duke përdorur funksionin e kokës () e ridrejtojmë atë në formularin e autorizimit.

Ju jeni regjistruar me sukses në sistem. Tani do të ridrejtoheni në faqen e hyrjes. Nëse kjo nuk ndodhi, shkoni tek ajo duke përdorur një lidhje të drejtpërdrejtë.

"; header (" Rifresko: 5; URL = login.php ");) // Përndryshe informoni përdoruesin për gabimin tjetër ($ gabime [" full_error "] = $ reg;)))?> Regjistrimi i përdoruesit
" />
Emri i përdoruesit mund të përmbajë vetëm karaktere latine, numra, simbole "_", "-", ".". Gjatësia e emrit të përdoruesit duhet të jetë së paku 4 karaktere dhe jo më shumë se 16 karaktere
Në fjalëkalimin, mund të përdorni vetëm karaktere latine, numra, simbole "_", "!", "(", ")". Fjalëkalimi duhet të jetë së paku 6 karaktere dhe jo më i gjatë se 16 karaktere
Përsëriteni fjalëkalimin e futur më parë

Duhet të kishit vënë re një funksion tjetër të ri në skenar - regjistrimi (). Dhe ne nuk e kemi shpallur ende. Le ta bejme ate.

( ($ error = "Identifikimi nuk është specifikuar"; ktheni gabimin e $;) elseif (! $ fjalëkalimin) ($ error = "Fjalëkalimi nuk është specifikuar"; ktheni gabimin $;) // Kontrolloni nëse përdoruesi është i regjistruar tashmë // Lidhu me Lidhja DBMS () ; // Shkruani një varg pyetjesh $ sql = "SELECT` id` FROM `users` WHERE` login` = "". $ Identifikohu. "" "; // Bëni një pyetje në bazën e të dhënave $ query = mysql_query ($ sql) ose die ( ""); // Shikoni numrin e përdoruesve me këtë hyrje, nëse ka të paktën një, // ktheni një mesazh gabimi nëse (mysql_num_rows ($ query)> 0) ($ gabim = "Një përdorues me hyrjen e specifikuar është regjistruar tashmë"; ktheni gabimin $;) // Nëse nuk ka një përdorues të tillë, regjistrojeni // Shkruani një varg pyetjesh $ sql = "INSERT INTO` përdoruesit" (`id`,` login `, `password`) VLERAT (NULL," ". $ login." "," ". fjalëkalimi $. "") "; // Bëni një pyetje në bazën e të dhënave $ query = mysql_query ($ sql) ose die ("

Nuk mund të shtohet përdoruesi: ". Mysql_error ().". Ndodhi një gabim në rreshtin ". __LINE__."

"); // Mos harroni të shkëputeni nga DBMS mysql_close (); // Kthejeni të vërtetë, duke treguar kthimin e vërtetë të regjistrimit të suksesshëm të përdoruesit;)

Nëse gjithçka është në rregull, përdoruesi juaj do të regjistrohet. Ju mund ta provoni formularin. Mundohuni të regjistroni përdoruesit me të njëjtat hyrje. Pas regjistrimit të suksesshëm, përdoruesi do të ridrejtohet në formularin e autorizimit. Më parë, ne sapo krijuam shënimin për të shfaqur këtë formë. Meqenëse nuk ka asnjë parametër të specifikuar në atributin e tij të veprimit, të dhënat e paraqitura nga formulari do të përpunohen në të njëjtin skenar. Pra, ne duhet të shkruajmë kodin për përpunim, dhe ta shtojmë atë në dokumentin login.php.

Autorizimi i përdoruesit

;">

Nëse nuk jeni të regjistruar në sistem, regjistrohuni.

Ju ndoshta keni vënë re se në skriptin e autorizimit kemi një funksion tjetër të panjohur - autorizimin (). Ky funksion duhet të autorizojë përdoruesin duke kontrolluar fillimisht nëse ka një përdorues të regjistruar në bazën e të dhënave me të njëjtin emër përdoruesi dhe fjalëkalim. Nëse një përdorues i tillë nuk gjendet, autorizimi do të ndërpritet dhe një mesazh dështimi do të shfaqet në ekran. Nëse kontrolli është i suksesshëm, funksioni i autorizimit () do të fillojë një seancë dhe do të shkruajë në të vlerat e emrit të përdoruesit dhe fjalëkalimit, do të informojë skriptin për suksesin e autorizimit dhe skripti do ta ridrejtojë përdoruesin në faqen e burimit të mbrojtur.

/ ** * Funksioni i autorizimit të përdoruesit. * Autorizimi i përdoruesve me ne do të kryhet * duke përdorur sesionet PHP. * / autorizimi i funksionit ($ login, $ password) (// Inicializoni një variabël me një mesazh gabimi të mundshëm $ error = ""; // Nëse nuk ka linjë identifikimi, ktheni një mesazh gabimi nëse (! $ login) ($ error = " Identifikimi nuk është specifikuar "; ktheni gabimin $;) elseif (! $ Fjalëkalimi) ($ error =" Fjalëkalimi nuk është specifikuar "; ktheni gabimin e $;) // Kontrolloni nëse përdoruesi është i regjistruar tashmë // Lidhu me lidhjen DBMS ( ); // Duhet të kontrollojmë nëse ka një përdorues të tillë midis të regjistruarve // ​​Përbërja e një vargu pyetësor $ sql = "SELECT` id` FROM `users` WHERE` login` = "". $ Identifikohu. "" DHE `password` =" ". $ Fjalëkalimi . "" "; // Ekzekutoni pyetjen $ query = mysql_query ($ sql) ose die ("

Pyetja nuk mund të ekzekutohet: ". Mysql_error ().". Ndodhi një gabim në rreshtin ". __LINE__."

"); // Nëse nuk ka përdorues me të dhëna të tilla, ktheni një mesazh gabimi nëse (mysql_num_rows ($ query) == 0) ($ error =" Përdoruesi me të dhënat e specifikuara nuk është i regjistruar "; ktheni gabimin $;) // Nëse përdoruesi ekziston, filloni sesionin session_start (); // Dhe shkruani emrin e përdoruesit dhe fjalëkalimin në të // Për këtë përdorim grupin superglobal $ _SESSION $ _SESSION ["login"] = $ login; $ _SESSION [" fjalëkalimi"] = $ fjalëkalim; / / Mos harroni të mbyllni lidhjen e bazës së të dhënave mysql_close (); // Kthejeni të vërtetë për mesazhin për autorizimin e suksesshëm të përdoruesit, kthejeni të vërtetë;)

Kur një përdorues hyn në një faqe të mbrojtur, duhet të kontrolloni saktësinë e të dhënave të tij të autorizimit. Për këtë na duhet një funksion tjetër i personalizuar. Le ta quajmë checkAuth (). Detyra e tij do të jetë të kontrollojë të dhënat e autorizimit të përdoruesit me ato që ruhen në bazën tonë të të dhënave. Nëse të dhënat nuk përputhen, përdoruesi do të ridrejtohet në faqen e autorizimit.

Funksioni checkAuth ($ login, $ password) (// Nëse nuk ka emër përdoruesi ose fjalëkalim, kthe false nëse (! $ Identifikohu ||! $ Fjalëkalimi) ktheje false; // Kontrollo nëse një përdorues i tillë është i regjistruar // Lidhu me Lidhja e DBMS (); // Krijo një varg pyetjesh $ sql = "SELECT` id` FROM `users` WHERE` login` = "". $ Identifikohu. "" AND `password` =" ". $ Fjalëkalimi." "" ; // Ekzekutoni pyetjen $ query = mysql_query ($ sql) ose die ("

Pyetja nuk mund të ekzekutohet: ". Mysql_error ().". Ndodhi një gabim në rreshtin ". __LINE__."

"); // Nëse nuk ka përdorues me të dhëna të tilla, ktheni false; nëse (mysql_num_rows ($ query) == 0) (return false;) // Mos harroni të mbyllni lidhjen e bazës së të dhënave mysql_close (); // Përndryshe , kthe kthimin e vërtetë të vërtetë;)

Tani që përdoruesi është në faqen e sigurt, duhet të thërrasim funksionin e vërtetimit të të dhënave të autorizimit. Ne do ta vendosim skriptin e thirrjes dhe kontrollit në një skedar të veçantë checkAuth.php dhe do ta lidhim atë me faqet që do të mbyllen për akses publik.

/ ** * Skript për kontrollin e autorizimit të përdoruesit * / // Filloni një sesion, nga i cili do të nxjerrim hyrjen dhe fjalëkalimin // të përdoruesve të regjistruar session_start (); // Përfshi një skedar me funksione të personalizuara request_once ("functions.php"); / ** * Për të përcaktuar nëse një përdorues është i identifikuar, duhet të * kontrollojmë nëse ka të dhëna në bazën e të dhënave për hyrjen * dhe fjalëkalimin e tij. Për ta bërë këtë, ne do të përdorim funksionin e personalizuar * për të kontrolluar korrektësinë e të dhënave të përdoruesit të regjistruar. * Nëse ky funksion kthehet false, atëherë nuk ka autorizim. * Në mungesë të autorizimit, ne thjesht ridrejtojmë * përdoruesin në faqen e autorizimit. * / // Nëse sesioni përmban të dhëna për hyrjen dhe fjalëkalimin, // kontrolloni ato nëse (isset ($ _ SESSION ["login"]) && $ _SESSION ["login"] && isset ($ _ SESSION ["fjalëkalimi" ] ) && $ _SESSION ["fjalëkalimi"]) (// Nëse vërtetimi i të dhënave ekzistuese dështon nëse (! CheckAuth ($ _ SESSION ["identifikimi"], $ _SESSION ["fjalëkalimi"])) (// Ridrejtoni përdoruesin te titulli i faqes së autorizimit ("lokacioni: login.php"); // Ndalo daljen e ekzekutimit të skriptit;)) // Nëse nuk ka të dhëna as për hyrjen, as për fjalëkalimin e përdoruesit, // mendojmë se nuk ka autorizim, ridrejtojmë përdoruesi // në faqen tjetër të autorizimit ( titulli ("lokacioni: login.php"); // Anuloni daljen e skriptit;)

Tani le të krijojmë kodin për faqen tonë të sigurt. Do të jetë mjaft e thjeshtë.

Autorizimi dhe regjistrimi i përdoruesit

Autorizim i suksesshëm.

Ju keni hyrë në një faqe të sigurt. Mund të dilni nga sistemi.

Siç mund ta shihni, në dokumentin e mbrojtur ne përfshijmë vetëm një skedar - checkAuth.php. Të gjithë skedarët e tjerë përfshihen në skriptet e tjera. Prandaj, kodi ynë nuk duket i rëndë. Ne organizuam regjistrimin dhe autorizimin e përdoruesve. Tani ju duhet të lejoni përdoruesit të dalin. Për ta bërë këtë, ne do të krijojmë një skript në skedarin logout.php.

/ ** * Skripti i daljes nga përdoruesi. Meqenëse përdoruesit janë * të autorizuar përmes sesioneve, identifikimi dhe fjalëkalimi i tyre ruhen * në grupin supergloban $ _SESSION. Për të dalë nga sistemi, thjesht shkatërroni vlerat * të grupit $ _SESSION ["login"] dhe $ _SESSION ["fjalëkalimi"], pas së cilës * ne e ridrejtojmë përdoruesin në faqen e autorizimit * / // Sigurohuni për të filluar seancën sesion_fillimi (); unset ($ _ SESSION ["identifikimi"]); unset ($ _ SESSION ["fjalëkalim"]); header ("lokacioni: login.php");

Skripti për regjistrimin, autorizimin dhe verifikimin e përdoruesit është gati. Mund ta përdorni në shtëpi, ta plotësoni, ta ndryshoni sipas nevojave tuaja. Nëse keni ndonjë pyetje, mund t'i bëni ato në komente. Ju mund t'i shkarkoni vetë të gjithë skedarët e përmendur këtu, të paketuar në një arkiv.

P.S. Jam i vetëdijshëm që është më mirë të shkruhet kodi i orientuar nga objekti, e di që nuk ia vlen të transmetohet dhe të ruhet fjalëkalimi në tekst të qartë, se informacioni i futur në bazën e të dhënave duhet të kontrollohet paraprakisht. E di. Unë nuk do të flas për këtë këtu.

Përshëndetje! Tani do të përpiqemi të zbatojmë regjistrimin më të thjeshtë në sit duke përdorur PHP + MySQL. Për ta bërë këtë, Apache duhet të instalohet në kompjuterin tuaj. Parimi i skenarit tonë është paraqitur më poshtë.

1. Le të fillojmë duke krijuar pllakën e përdoruesve në bazën e të dhënave... Ai do të përmbajë të dhënat e përdoruesit (hyrje dhe fjalëkalim). Le të shkojmë te phpmyadmin (nëse krijoni një bazë në kompjuterin tuaj http: // localhost / phpmyadmin /). Krijo një tabelë përdoruesit, do të ketë 3 fusha.

Unë e krijoj atë në bazën e të dhënave mysql, ju mund ta krijoni atë në një bazë të dhënash tjetër. Më pas, vendosni vlerat, si në foto:

2. Kërkohet një lidhje me këtë tabelë. Le të krijojmë një skedar bd.php... Përmbajtja e tij:

$ db = mysql_connect ("serveri juaj MySQL", "hyrja në këtë server", "fjalëkalimi në këtë server");
mysql_select_db ("emri i bazës së të dhënave me të cilën po lidhemi", $ db);
?>

Në rastin tim, duket kështu:

$ db = mysql_connect ("localhost", "user", "1234");
mysql_select_db ("mysql", $ db);
?>

Ne kursejmë bd.php.
Mirë! Ne kemi një tabelë në bazën e të dhënave, një lidhje me të. Tani mund të filloni të krijoni një faqe ku përdoruesit do të lënë të dhënat e tyre.

3. Krijoni një skedar reg.php me përmbajtje (të gjitha komentet brenda):



regjistrimin


regjistrimin
















4. Krijo një skedar, i cili do të fusë të dhënat në bazën e të dhënave dhe do të ruajë përdoruesin. save_user.php(komentet brenda):



{
}
// nëse futen login dhe fjalëkalimin, atëherë ne i përpunojmë ato në mënyrë që etiketat dhe skriptet të mos funksionojnë, ju kurrë nuk e dini se çfarë mund të futin njerëzit


// hiqni hapësirat shtesë
$ login = trim ($ login);
$ fjalëkalim = shkurto ($ fjalëkalim);
// lidheni me bazën e të dhënave
// kontrolloni për ekzistencën e një përdoruesi me të njëjtin hyrje
$ result = mysql_query (" SELECT ID FROM users WHERE login =" $ login "", $ db);
nëse (! bosh ($ myrow ["id"])) (
exit ("Na falni, emri i përdoruesit që futët është tashmë i regjistruar. Ju lutemi vendosni një emër përdoruesi tjetër.");
}
// nëse jo, atëherë ruani të dhënat
$ result2 = mysql_query ("INSERT INTO users (hyrje, fjalëkalim) VALUES (" $ login "," $ password ")");
// Kontrolloni nëse ka ndonjë gabim
nëse ($ rezultat2 == "E VËRTETË")
{
echo "Je regjistruar me sukses! Tani mund të hysh në sajt. Faqja kryesore";
}
tjetër (
echo "Gabim! Nuk jeni regjistruar.";
}
?>

5. Tani përdoruesit tanë mund të regjistrohen! Tjetra, duhet të bëni një "derë" për të hyrë në sit për përdoruesit e regjistruar tashmë. indeks.php(komentet brenda):

// e gjithë procedura funksionon në sesione. Është në të që të dhënat e përdoruesit ruhen ndërsa ai është në sit. Është shumë e rëndësishme t'i ekzekutoni ato në fillim të faqes !!!
sesioni_fillimi ();
?>


Faqja kryesore


Faqja kryesore











Regjistrohu tani



// Kontrolloni nëse variablat e hyrjes dhe ID-së së përdoruesit janë bosh
nëse (bosh ($ _ SESSION ["identifikimi"]) ose bosh ($ _ SESSION ["id"]))
{
// Nëse bosh, atëherë ne nuk e shfaqim lidhjen
echo "Ju keni hyrë si i ftuar
Kjo lidhje është e disponueshme vetëm për përdoruesit e regjistruar ";
}
tjetër
{

Në dosje indeks.php ne do të shfaqim një lidhje që do të jetë e hapur vetëm për përdoruesit e regjistruar. Kjo është e gjithë pika e skenarit - për të kufizuar aksesin në çdo të dhënë.

6. Ekziston një skedar me verifikimin e emrit të përdoruesit dhe fjalëkalimit të futur. testreg.php (komentet brenda):

session_start (); // e gjithë procedura funksionon në sesione. Është në të që të dhënat e përdoruesit ruhen ndërsa ai është në sit. Është shumë e rëndësishme t'i ekzekutoni ato në fillim të faqes !!!
if (isset ($ _ POST ["login"])) ($ login = $ _POST ["login"]; if ($ login == "") (unset ($ login);)) // shkruani hyrjen e futur nga përdoruesi në variablin $ login, nëse është bosh, atëherë e shkatërrojmë variablin
if (isset ($ _ POST ["fjalëkalim"])) ($ fjalëkalim = $ _ POST ["fjalëkalim"]; if ($ fjalëkalim == "") (çvendos ($ fjalëkalim);))
// vendosni fjalëkalimin e futur nga përdoruesi në variablin $ password, nëse është bosh, atëherë shkatërroni variablin
nëse (bosh ($ login) ose bosh ($ fjalëkalim)) // nëse përdoruesi nuk ka futur hyrjen ose fjalëkalimin, atëherë ne lëshojmë një gabim dhe ndalojmë skriptin
{
dalje ("Nuk i keni futur të gjitha informacionet, kthehuni dhe plotësoni të gjitha fushat!");
}
// nëse futen login dhe fjalëkalimin, atëherë ne i përpunojmë ato në mënyrë që etiketat dhe skriptet të mos funksionojnë, ju kurrë nuk e dini se çfarë mund të futin njerëzit
$ login = stripslashes ($ login);
$ login = htmlspecialchars ($ login);
$ password = stripslashes ($ password);
$ password = htmlspecialchars ($ password);
// hiqni hapësirat shtesë
$ login = trim ($ login);
$ fjalëkalim = shkurto ($ fjalëkalim);
// lidheni me bazën e të dhënave
përfshijnë ("bd.php"); // skedari bd.php duhet të jetë në të njëjtën dosje si gjithë të tjerët, nëse nuk është, atëherë thjesht ndryshoni shtegun

$ result = mysql_query ("SELECT * FROM users WHERE login =" $ login "", $ db); // merrni nga baza e të dhënave të gjitha të dhënat rreth përdoruesit me hyrjen e futur
$ myrow = mysql_fetch_array ($ rezultat);
nëse (bosh ($ myrow ["fjalëkalim"]))
{
// nëse përdoruesi me hyrjen e futur nuk ekziston
}
tjetër (
// nëse ekziston, atëherë kontrolloni fjalëkalimet
nëse ($ myrow ["fjalëkalimi"] == fjalëkalimi $) (
// nëse fjalëkalimet përputhen, atëherë ne fillojmë seancën për përdoruesin! Mund ta përgëzoni, hyri!
$ _SESION ["login"] = $ myrow ["login"];
$ _SESSION ["id"] = $ myrow ["id"]; // këto të dhëna përdoren shumë shpesh, kështu që përdoruesi i regjistruar do të "bartë me vete"
echo "Ju keni hyrë me sukses në faqe! Faqja kryesore";
}
tjetër (
// nëse fjalëkalimet nuk përputhen

Dil ("Na falni, identifikimi që keni futur ose fjalëkalimi është i pasaktë.");
}
}
?>

OK, gjithçka mbaroi tani! Mësimi mund të jetë i mërzitshëm, por shumë i dobishëm. Këtu shfaqet vetëm ideja e regjistrimit, atëherë mund ta përmirësoni: shtoni mbrojtjen, dizajnin, fushat e të dhënave, ngarkoni avatarët, dilni nga llogaria (për këtë, thjesht shkatërroni variablat nga seanca me funksionin i pavendosur) etj. Paç fat!

Kontrollova gjithçka, funksionon siç duhet!

Artikujt kryesorë të lidhur