Krijimi i një sistemi të thjeshtë regjistrimi të përdoruesve në PHP dhe MySQL. Krijimi i një sistemi jashtëzakonisht të thjeshtë regjistrimi në PHP dhe MySQL Regjistrimi frikacak i përdoruesve php

Nëse ju duhet të bëni një nga seksionet e faqes tuaj të internetit të aksesueshme për një rreth të kufizuar, por të paspecifikuar 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ë autorizuar përdoruesit. Mund të përdorni si mjetet e serverit të uebit ashtu edhe mjetet e gjuhës së programimit. Do të flasim për rastin kur përdoren sesionet PHP.

Ju ndoshta do të dëshironit të shihni një mënyrë më moderne për të krijuar këtë formë. Ende nuk kam plane ta prezantoj plotësisht në një mënyrë moderne dhe relevante, por mund të shihni se formulari i komenteve mund të ndërtohet duke përdorur teknika të orientuara nga objekti në PHP.

Së pari, le të diskutojmë të gjitha hapat që do të ndërmarrim më pas. Madje çfarë na duhet? Ne kemi nevojë për një skript që do të regjistrojë përdoruesin, do të autorizojë përdoruesin, 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ë forma HTML. Ne do të ruajmë informacionin për përdoruesit e regjistruar në një bazë të dhënash. Kjo do të thotë se ne kemi ende nevojë për një skript për t'u lidhur me DBMS. E gjithë puna jonë do të bëhet nga funksionet që i shkruajmë vetë. 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ë jetë e pakuptimtë nëse nuk keni një tabelë përkatëse në bazën e të dhënave. Hapni mjetin tuaj të menaxhimit të DBMS (PhpMyAdmin ose linjën e komandës, cilado që është më e përshtatshme) dhe ekzekutoni pyetjen e mëposhtme në të:

KRIJO TABELA `përdorues` (`id` int(11) NOT NULL AUTO_INCREMENT, NOT NULL char(16) NOT NULL, `fjalëkalim` char(40) NOT NULL, vula kohore `reg_date` NOT NULL DEFAULT CURRENT_TIMEYSTAMP, PRI id`)) MOTORI=MyISAM PARAKULLAR KARSET=utf8 AUTO_INCREMENT=1 ;

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

  • 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 me DBMS. E keni parë tashmë. 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ë një dokument të 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 hyrjes, përdoruesi duhet të shohë një formular autorizimi. Le ta bejme.

Autorizimi i përdoruesit

regjistrohen.



Tani formularit tonë duhet t'i jepet një formë. Në të njëjtën kohë, ne do të përcaktojmë rregulla për elementë të tjerë. Duke parë përpara, unë do të paraqes përmbajtjen e fletës së stilit të plotë.

/* skedar style.css */ .row ( margin-bottom:10px; gjerësi:220px; ) .etiketë rreshti ( display:block; font-weight:bold; ) .row input.text ( font-size:1.2em; mbushje:2px 5px;) .to_reg ( madhësia e shkronjave: 0.9em; ) .instruksioni ( madhësia e shkronjave: 0.8em; ngjyra:#aaaaaa; margin-left:2px; kursori:default; ) .gabim ( ngjyra: e kuqe; margjina-majtas: 3px;)

Nëse gjithçka është bërë si duhet, duhet të keni sa vijon 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 të formularëve, përmbajtja e kontejnerëve të krijuar për të shfaqur gabime. 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 dhe simbole "_", "-", ".". Emri i përdoruesit nuk duhet të jetë më i shkurtër se 4 karaktere dhe jo më i gjatë se 16 karaktere
Në fjalëkalimin tuaj, mund të përdorni vetëm karaktere latine, numra dhe simbole "_", "!", "(", ")". Fjalëkalimi nuk duhet të jetë më i shkurtër se 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, gjatë paraqitjes së të dhënave të formularit, ato do të përpunohen në të njëjtin skenar nga i cili është dërguar. Kjo do të thotë që ne duhet të shkruajmë kodin që përpunon të dhënat e formularit. Por le të diskutojmë së pari 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 ri-specifikuar duhet të përputhet me të dhe, përveç kësaj, ato duhet të jenë identike. Nëse ndonjë prej këtyre kushteve nuk plotësohet, përpunimi i të dhënave të formularit duhet të ndalojë, duhet të shkruhet një alarm i duhur në grupin e mesazheve të gabimit dhe ai duhet t'i shfaqet përdoruesit. Për lehtësinë e përdoruesit, ne do ta ruajmë hyrjen që ai ka futur (nëse e ka specifikuar) duke shkruar vlerën e tij në grupin $fields.

Nëse gjithçka është në rregull, në dritaren e shfletuesit tuaj, kur hyni në dokumentin register.php, duhet të shihni diçka si kjo:

Tani, le të themi se përdoruesi klikoi në butonin e regjistrimit dhe nuk i plotësoi fushat e formularit. Sipas algoritmit tonë, hyrja dhe fjalëkalimi nuk mund të jenë bosh. Nëse ky kusht nuk plotësohet, regjistrimi nuk është i mundur. Ne kemi parasysh se përpunimi i të dhënave të formularit ndodh në skenarin aktual. Kjo do të thotë që ne duhet të ndryshojmë kodin e tij duke shtuar kontrollet e duhura. Le të diskutojmë menjëherë kontrollet e mëposhtme. Nëse keni futur një hyrje dhe një fjalëkalim, duhet të kontrolloni përputhshmërinë e tyre me kërkesat e specifikuara. Për të verifikuar hyrjen dhe fjalëkalimin, ne do të krijojmë funksione të personalizuara në skedarin functions.php.

/** * funksionet.php * Skedari me funksione të personalizuara */ // Lidhe skedarin me parametrat e lidhjes me DBMS-në require_once("database.php"); // Kontrollimi i funksionit të emrit të përdoruesit checkLogin($str) ( // Inicializoni një variabël me një mesazh gabimi të mundshëm $error = ""; // Nëse linja e hyrjes mungon, ktheni një mesazh gabimi if(!$str) ( $error = " Nuk keni futur një emër përdoruesi"; ktheni $error; ) /** * Kontrolloni emrin e përdoruesit duke përdorur shprehje të rregullta * Hyrja nuk duhet të jetë më e shkurtër se 4, jo më shumë se 16 karaktere * Duhet të përmbajë karaktere të alfabetit latin, numrat, * mund të përmbajë karakteret "_", "-", "." */ $pattern = "/^[-_.a-z\d](4,16)$/i"; $result = preg_match ($pattern, $str) ; // Nëse kontrolli dështon, ktheni një mesazh gabimi if(!$result) ( $error = "Karakteret e pavlefshme në emrin e përdoruesit ose emri i përdoruesit është shumë i shkurtër (i gjatë)"; ktheni $error; ) // Nëse gjithçka është në rregull, ktheni vlerën true return true; ) // Kontrollimi i funksionit të fjalëkalimit të përdoruesit checkPassword($str) ( // Inicializoni një variabël me një mesazh gabimi të mundshëm $error = ""; // Nëse ka nuk ka linjë identifikimi, ktheni një mesazh gabimi nëse(!$ str) ( $error = "Nuk keni futur një fjalëkalim"; kthej $gabim; ) /** * 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ë shkronja latine, numra, * mund të përmbajë karakteret "_", "!", " (", ")" */ $pattern = "/^[_!)(.a-z\d](6,16)$/i"; $result = preg_match($pattern, $str); // Nëse kontrolli nuk kaloi, kthe një mesazh gabimi if(!$result) ( $error = "Karakteret e pavlefshme në fjalëkalimin e përdoruesit ose fjalëkalimi është shumë i shkurtër (i gjatë)"; ktheje $error; ) // Nëse gjithçka është në rregull, kthehu vlera e vërtetë kthehet e vërtetë;)

Tani duhet të modifikojmë skedarin register.php për të aktivizuar funksionet që deklaruam. Ne do të shtojmë një kusht në skript që kontrollon nëse 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 shfaqim përsëri 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 header() 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 ndodh, shkoni tek ajo duke përdorur lidhjen e drejtpërdrejtë.

"; header("Rifresko: 5; URL = login.php"); ) // Përndryshe, informo përdoruesin për gabimin other ( $errors["full_error"] = $reg; ) ) ) ?> Regjistrimi i përdoruesit
" />
Emri i përdoruesit mund të përmbajë vetëm karaktere latine, numra dhe simbole "_", "-", ".". Emri i përdoruesit nuk duhet të jetë më i shkurtër se 4 karaktere dhe jo më i gjatë se 16 karaktere
Në fjalëkalimin tuaj, mund të përdorni vetëm karaktere latine, numra dhe simbole "_", "!", "(", ")". Fjalëkalimi nuk duhet të jetë më i shkurtër se 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ë skript - register() . Por ne nuk e kemi shpallur ende. Le ta bejme ate.

// Regjistrimi i funksionit të regjistrimit të përdoruesit ($login, $password) ( // Inicializoni një variabël me një mesazh gabimi të mundshëm $error = ""; // Nëse nuk ka linjë identifikimi, ktheni një mesazh gabimi if(!$login) ( $error = "Nuk është specifikuar hyrje"; ktheni $error; ) elseif(!$password) ( $error = "Nuk është specifikuar fjalëkalim"; ktheni $error; ) // Kontrolloni nëse përdoruesi është i regjistruar tashmë // Lidhu me DBMS connect() ; // Shkruani një varg pyetjesh $sql = "SELECT `id` FROM `users` WHERE `login`="" . $login . """; // Bëni një pyetje në bazën e të dhënave $query = mysql_query ($sql) ose die( ""); // Ne shikojmë numrin e përdoruesve me këtë hyrje, nëse ka të paktën një, // kthejmë një mesazh gabimi nëse(mysql_num_rows($query) > 0) ( $error = "Përdoruesi 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 `users` (`id`,` login`,`password`) VLERAT (NULL, "" . $login . " ","" . $fjalëkalim. "")"; // 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(); // Ktheni vlerën true, 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. Provoni 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 thjesht 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. Kjo do të thotë që 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 tani kemi një funksion tjetër të panjohur - autorizim() . Ky funksion duhet të autorizojë përdoruesin duke kontrolluar fillimisht nëse një përdorues i regjistruar me të njëjtin hyrje dhe fjalëkalim ekziston në bazën e të dhënave. Nëse një përdorues i tillë nuk gjendet, autorizimi do të ndërpritet dhe do të shfaqet një mesazh dështimi. Nëse kontrolli është i suksesshëm, funksioni i autorizimit () do të nisë një sesion dhe do të shkruajë në të vlerat e hyrjes dhe fjalëkalimit të përdoruesit, do të informojë skriptin se autorizimi ishte i suksesshëm dhe skripti do ta ridrejtojë përdoruesin në një faqe burimi të mbrojtur.

/** * Funksioni i autorizimit të përdoruesit. * Autorizimi i përdoruesit 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 if(!$login) ( $error = " Identifikimi nuk është specifikuar"; ktheni $error; ) elseif(!$password) ( $error = "Fjalëkalimi nuk është specifikuar"; ktheni $error; ) // Kontrolloni nëse përdoruesi është i regjistruar tashmë // Lidhu me lidhjen DBMS( ); // Duhet të kontrollojmë nëse një përdorues i tillë është ndër të regjistruarit // Krijoni një varg pyetjesh $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" DHE ` password`="".$password ."""; // 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 if(mysql_num_rows($query) == 0) ( $error = "Përdoruesi me të dhënat e specifikuara nuk është i regjistruar"; ktheni $error; ) // Nëse përdoruesi ekziston, filloni sesionin session_start(); // Dhe shkruani hyrjen dhe fjalëkalimin e përdoruesit në të // Për këtë përdorim grupin superglobal $_SESSION $_SESSION["login"] = $login; $_SESSION[ "fjalëkalimi"] = $fjalëkalim; / / Mos harroni të mbyllni lidhjen me bazën e të dhënave mysql_close(); // Kthejeni të vërtetë për të treguar kthimin e vërtetë të autorizimit të suksesshëm të përdoruesit; )

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

Funksioni checkAuth($login, $password) ( // Nëse nuk ka hyrje ose fjalëkalim, kthe false nëse(!$login || !$password) kthe false; // Kontrollo nëse një përdorues i tillë është i regjistruar // Lidhu me DBMS connect(); // Krijo një varg pyetësor $sql = "ZGJEDH `id` NGA `users` WHERE `login`="".$login."" AND `password`="".$fjalëkalim.""" ; // 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; if(mysql_num_rows($query) == 0) ( return false; ) // Mos harroni të mbyllni lidhjen me bazën e të dhënave mysql_close(); // Përndryshe ktheje kthimin e vërtetë të vërtetë; )

Tani që përdoruesi ka mbërritur në faqen e mbrojtur, duhet të thërrasim funksionin për të kontrolluar të dhënat e autorizimit. Ne do ta vendosim skriptin e thirrjes dhe verifikimit në një skedar të veçantë checkAuth.php dhe do ta lidhim atë me ato faqe që do të jenë të mbyllura për akses publik.

/** * Skript për kontrollimin e autorizimit të përdoruesit */ // Filloni një sesion nga i cili do të nxjerrim hyrjen dhe fjalëkalimin // të përdoruesve të autorizuar session_start(); // Lidhni një skedar me funksionet e personalizuara require_once("functions.php"); /** * Për të përcaktuar nëse një përdorues është i autorizuar, na duhet * për të kontrolluar nëse ekzistojnë 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ëse nuk ka autorizim, ne thjesht e ridrejtojmë * përdoruesin në faqen e autorizimit. */ // Nëse sesioni përmban të dhëna të hyrjes dhe fjalëkalimit, // kontrolloni ato if(isset($_SESSION["login"]) && $_SESSION["login"] && isset($_SESSION["fjalëkalimi" ]) && $_SESSION["fjalëkalimi"]) ( // Nëse kontrollimi i të dhënave ekzistuese dështon nëse(!checkAuth($_SESSION["login"], $_SESSION["fjalëkalimi"])) ( // Ridrejtoni përdoruesin në kokën e faqes së hyrjes( "lokacioni: login.php"); // Ndalo ekzekutimin e daljes së skriptit; ) ) // Nëse nuk ka të dhëna për hyrjen ose fjalëkalimin e përdoruesit, // supozojmë se nuk ka autorizim, ridrejtojmë përdoruesin // në faqen tjetër të autorizimit ( header("location: login.php"); // Ndalo ekzekutimin e daljes së 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 jashtë.



Siç mund ta shihni, në një dokument të mbrojtur ne përfshijmë vetëm një skedar - checkAuth.php. Të gjithë skedarët e tjerë janë të lidhur 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 * identifikohen përmes sesioneve, identifikimi dhe fjalëkalimi i tyre ruhen * në grupin superglobal $_SESSION. Për të * dalë nga sistemi, thjesht shkatërroni vlerat * të grupit $_SESSION["login"] dhe $_SESSION["fjalëkalimi"], pas së cilës ne * ridrejtojmë përdoruesin në faqen e identifikimit */ // Be Sigurohuni që të filloni seancën session_start(); unset($_SESSION["identifikimi"]); unset($_SESSION["fjalëkalimi"]); header ("lokacioni: login.php");

Skripti i regjistrimit, autorizimit dhe verifikimit të përdoruesit është gati. Mund ta përdorni për vete, ta plotësoni, ta ndryshoni sipas nevojave tuaja. Nëse keni ndonjë pyetje, mund t'i bëni ato në komente. Ju mund të shkarkoni të gjithë skedarët e diskutuar këtu, të paketuar në një arkiv.

P.S. E di që është më mirë të shkruani kod të orientuar nga objekti, e di që nuk ia vlen të transmetoni dhe ruani një fjalëkalim në tekst të qartë, se informacioni i futur në bazën e të dhënave duhet të kontrollohet paraprakisht. E di. 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 funksionimit të skenarit tonë është paraqitur më poshtë.

1. Le të fillojmë duke krijuar tabelën e përdoruesve në bazën e të dhënave. Ai do të përmbajë të dhënat e përdoruesit (identifikimi dhe fjalëkalimi). Le të shkojmë te phpmyadmin (nëse po krijoni një bazë të dhënash 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 në një bazë të dhënash tjetër. Më pas vendosni vlerat si në figurë:

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 për këtë server", "fjalëkalimi për 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", "përdorues", "1234");
mysql_select_db("mysql",$db);
?>

Ruaj bd.php.
E shkëlqyeshme! Ne kemi një tabelë në bazën e të dhënave dhe një lidhje me të. Tani mund të filloni të krijoni një faqe në të cilën përdoruesit do të lënë të dhënat e tyre.

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



Regjistrimi


Regjistrimi


















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 hyrja dhe fjalëkalimi janë futur, 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


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

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

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


Faqja kryesore


Faqja kryesore











Regjistrohu



// Kontrolloni nëse variablat e hyrjes dhe ID-së së përdoruesit janë bosh
nëse (bosh ($_SESSION["login"]) 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. Mbetet një skedar me verifikimin e hyrjes dhe fjalëkalimit të futur. testreg.php (komentet brenda):

session_start();// e gjithë procedura funksionon në sesione. Është vendi ku ruhen të dhënat e përdoruesit ndërsa ai është në sit. Është shumë e rëndësishme t'i hapni ato që në fillim të faqes!!!
if (isset($_POST["login"])) ($login = $_POST["login"]; if ($login == "") ( unset($login);) ) //hyni hyrjen e futur nga përdoruesi në ndryshoren $login, nëse është bosh, atëherë shkatërrojeni variablin
if (isset($_POST["fjalëkalimi"])) ( $password=$_POST["fjalëkalimi"]; if ($password =="") ( unset($password);) )
//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 një hyrje ose fjalëkalim, atëherë ne nxjerrim një gabim dhe ndalojmë skriptin
{
exit ("Nuk i keni futur të gjitha informacionet, kthehuni dhe plotësoni të gjitha fushat!");
}
//nëse hyrja dhe fjalëkalimi janë futur, 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);
$fjalëkalim = stripslashes ($fjalëkalim);
$fjalëkalim = htmlspecialchars ($fjalëkalim);
//hiq hapësirat shtesë
$login = trim($login);
$fjalëkalim = shkurtoj($fjalëkalim);
// lidheni me bazën e të dhënave
include("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); //merr 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
}
tjeter(
//nëse ekziston, atëherë kontrolloni fjalëkalimet
nëse ($myrow["password"]==$fjalëkalimi) (
//nëse fjalëkalimet përputhen, atëherë ne nisim një sesion për përdoruesin! Mund ta përgëzoni, ai hyri!
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//këto të dhëna përdoren shumë shpesh, kështu që përdoruesi i identifikuar do ta "bartë me vete"
echo "Ju keni hyrë me sukses në faqe! Faqja kryesore";
}
tjeter(
//nëse fjalëkalimet nuk përputhen

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

OK tani ka mbaruar! 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, ngarkimin e avatarëve, daljen nga llogaria (për ta bërë këtë, thjesht shkatërroni variablat nga seanca me funksionin i pavendosur) dhe kështu me radhë. Paç fat!

Kontrollova gjithçka, funksionon siç duhet!

Krijimi i një siti të bazuar në anëtarësim duket si një detyrë e frikshme në fillim. Nëse keni dashur ndonjëherë ta bëni këtë vetë, atëherë thjesht hoqët dorë kur filluat të mendoni se si do ta bashkoni atë duke përdorur aftësitë tuaja PHP, atëherë ky artikull është për ju. Ne do t'ju përcjellim në çdo aspekt të krijimit të një sajti të bazuar në anëtarësim, me një zonë të sigurt anëtarësh të mbrojtur me fjalëkalim.

I gjithë procesi përbëhet nga dy pjesë të mëdha: regjistrimi i përdoruesit dhe vërtetimi i përdoruesit. Në pjesën e parë, do të trajtojmë krijimin e formularit të regjistrimit dhe ruajtjen e të dhënave në një bazë të dhënash MySQL. Në pjesën e dytë, ne do të krijojmë formularin e hyrjes dhe do ta përdorim për të lejuar përdoruesit të kenë akses në zonën e sigurt.

Shkarkoni kodin

Ju mund të shkarkoni të gjithë kodin burimor për sistemin e regjistrimit/hyrjes nga lidhja e mëposhtme:

Konfigurimi dhe ngarkimi
Skedari ReadMe përmban udhëzime të hollësishme.

Hape burim\include\membersite_config.php skedari në një redaktues teksti dhe përditësoni konfigurimin. (Hyrja në bazën e të dhënave, emri i faqes suaj të internetit, adresa juaj e emailit etj).

Ngarko të gjithë përmbajtjen e drejtorisë. Testoni register.php duke dorëzuar formularin.

Formulari i regjistrimit

Për të krijuar një llogari përdoruesi, duhet të mbledhim një sasi minimale informacioni nga përdoruesi. Ne kemi nevojë për emrin e tij, adresën e tij të emailit dhe emrin e përdoruesit dhe fjalëkalimin e dëshiruar. Sigurisht, ne mund të kërkojmë më shumë informacion në këtë pikë, por një formë e gjatë është gjithmonë një mbyllje. Pra, le të kufizohemi vetëm në ato fusha.

Këtu është formulari i regjistrimit:

Regjistrohu

Pra, ne kemi fusha teksti për emrin, emailin dhe fjalëkalimin. Vini re se ne po përdorim për përdorim më të mirë.

Vleresimi i formularit

Në këtë pikë, është një ide e mirë të vendosni një kod të vërtetimit të formularit, kështu që ne sigurohemi që të kemi të gjitha të dhënat e nevojshme për të krijuar llogarinë e përdoruesit. Duhet të kontrollojmë nëse emri, emaili dhe fjalëkalimi janë plotësuar dhe nëse emaili është në formatin e duhur.

Trajtimi i paraqitjes së formularit

Tani duhet të trajtojmë të dhënat e formularit që dorëzohen.

Këtu është sekuenca (shih skedarin fg_membersite.php në burimin e shkarkuar):

funksioni RegisterUser() ( if(!isset($_POST["dorëzuar"])) ( return false; ) $formvars = array(); if(!$this->ValidateRegistrationSubmission()) ( return false; ) $this- >CollectRegistrationSubmission($formvars); if(!$this->SaveToDatabase($formvars)) ( return false; ) if(!$this->SendUserConfirmationEmail($formvars)) ( return false; ) $this->SendAdminIntimationEmail($ formvars); ktheje e vërtetë;)

Së pari, ne vërtetojmë paraqitjen e formularit. Më pas ne mbledhim dhe ‘sanitizojmë’ të dhënat e paraqitjes së formularit (bëjeni gjithmonë këtë përpara se të dërgoni email, të ruani në bazën e të dhënave etj). Dorëzimi i formularit më pas ruhet në tabelën e bazës së të dhënave. Ne i dërgojmë një email përdoruesit duke kërkuar konfirmim. Më pas informojmë administratorin që një përdorues ka regjistruar.

Ruajtja e të dhënave në bazën e të dhënave

Tani që kemi mbledhur të gjitha të dhënat, duhet t'i ruajmë në bazën e të dhënave.
Ja se si e ruajmë paraqitjen e formularit në bazën e të dhënave.

funksioni SaveToDatabase(&$formvars) ( if(!$this->DBLlogin()) ( $this->HandleError("Hyrja në bazën e të dhënave dështoi!"); kthe false; ) if(!$this->Ensuretable()) ( kthe false; ) if(!$this->IsFieldUnique($formvars,"email")) ( $this->HandleError("Ky email është regjistruar tashmë"); kthe false; ) if(!$this->IsFieldUnique( $formvars,"username")) ( $this->HandleError ("Ky Emri i përdoruesit është përdorur tashmë. Ju lutemi provoni një emër tjetër përdoruesi"); kthe false; ) if(!$this->InsertIntoDB($formvars)) ( $this- >HandleError ("Futja në bazën e të dhënave dështoi!"); kthe e gabuar; ) kthe e vërtetë; )

Vini re se i keni konfiguruar detajet e hyrjes në bazën e të dhënave në skedarin Memberite_config.php. Në shumicën e rasteve, ju mund të përdorni "localhost" për hostin e bazës së të dhënave.
Pas hyrjes, sigurohemi që tabela të jetë ekzistuese. (Nëse jo, skripti do të krijojë tabelën e kërkuar).
Pastaj sigurohemi që emri i përdoruesit dhe emaili të jenë unik. Nëse nuk është unik, ia kthejmë gabimin përdoruesit.

Struktura e tabelës së bazës së të dhënave

Kjo është struktura e tabelës. Funksioni CreateTable() në skedarin fg_membersite.php krijon tabelën. Këtu është kodi:

funksion CreateTable() ( $qry = "Krijo tabelën $this->emri i tabelës (". "id_user INT NOT NULL AUTO_INCREMENT ," "emri VARCHAR(128) NOT NULL ," "email VARCHAR(64) NOT NULL," " "numri_telefonit VARCHAR(16) NOT NULL ," "emri i përdoruesit VARCHAR(16) NOT NULL ," "fjalëkalimi VARCHAR(32) NOT NULL ," "konfirmoni kodin VARCHAR(32) ," "ÇELËSI PRIMARY (id_përdoruesi)." ")"; nëse( !mysql_query($qry,$this->lidhja)) ( $this->HandleDBError("Gabim në krijimin e tabelës \npyetja ishte\n $qry"); kthe false; ) kthe e vërtetë; )

Fusha id_user do të përmbajë ID-në unike të përdoruesit dhe është gjithashtu çelësi kryesor i tabelës. Vini re se ne lejojmë 32 karaktere për fushën e fjalëkalimit. Ne e bëjmë këtë sepse, si një masë sigurie e shtuar, ne do ta ruajmë fjalëkalimin në bazën e të dhënave të koduar duke përdorur MD5. Ju lutemi vini re se për shkak se MD5 është një metodë enkriptimi njëkahëshe, ne nuk do të jemi në gjendje ta rikuperojmë fjalëkalimin në rast se përdoruesi e harron atë.

Futja e regjistrimit në tabelë

Këtu është kodi që përdorim për të futur të dhëna në bazën e të dhënave. Të gjitha të dhënat tona do t'i kemi të disponueshme në grupin $formvars.

funksioni InsertIntoDB(&$formvars) ($confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "insert në ".$this->emri i tabelës."(emri, emaili, emri i përdoruesit, fjalëkalimi, kodi i konfirmimit) vlerat ("" . $this->SanitizeForSQL($formvars["emri"]). "", "" . $this->SanitizeForSQL($formvars["email"]) . "", "" $ this->SanitizeForSQL($formvars["emri i përdoruesit"]) . "", "" . md5($formvars["fjalëkalimi"]) . "", "" . $confirmcode . "")"; if(! mysql_query( $insert_query ,$this->lidhja)) ( $this->HandleDBError("Gabim gjatë futjes së të dhënave në tabelë\nquery:$insert_query"); kthe false; ) kthe e vërtetë; )

Vini re se ne përdorim funksionin PHP md5() për të enkriptuar fjalëkalimin përpara se ta fusim atë në bazën e të dhënave.
Gjithashtu, ne bëjmë kodin unik të konfirmimit nga adresa e emailit të përdoruesit.

Dërgimi i emaileve

Tani që kemi regjistrimin në bazën tonë të të dhënave, ne do t'i dërgojmë një email konfirmimi përdoruesit. Përdoruesi duhet të klikojë një lidhje në emailin e konfirmimit për të përfunduar procesin e regjistrimit.

funksioni SendUserConfirmationEmail(&$formvars) ($mailer = PHPMailer i ri(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["name"]) ; $mailer->Subject = "Regjistrimi juaj me ".$this->emri i faqes; $mailer->From = $this->GetFromAddress(); $confirmcode = urlencode($this->MakeConfirmationMd5($formvars["email" ])); $confirm_url = $this->GetAbsoluteURLFolder()."/confirmreg.php?code=".$confirmcode; $mailer->Body ="Përshëndetje ".$formvars["name"]."\r\ n\r\n". "Faleminderit për regjistrimin tuaj me ".$this->sitename."\r\n". "Ju lutemi klikoni lidhjen më poshtë për të konfirmuar regjistrimin tuaj.\r\n." "$confirm_url\r \n". "\r\n". "Me respekt,\r\n". "Webmaster\r\n". $this->emri i faqes; if(!$mailer->Dërgo()) ( $this-> HandleError ("Dështoi dërgimi i emailit të konfirmimit të regjistrimit."); kthe false; ) kthe i vërtetë; )

Përditësimet

9 janar 2012
Funksionet e rivendosjes së fjalëkalimit/ndryshimit të fjalëkalimit janë shtuar
Kodi tani ndahet në GitHub.

Mirëse u ktheveUserFullName(); ?>!

Liçensë


Kodi ndahet nën licencën LGPL. Mund ta përdorni lirisht në faqet e internetit komerciale ose jokomerciale.

Nuk ka postime të lidhura.

Komentet për këtë hyrje janë të mbyllura.

Ndryshuar për herë të fundit më 23 korrik 2019 nga Vincy.

Regjistrimi ose regjistrimi i përdoruesve është një pjesë integrale e shumë aplikacioneve në ueb dhe është thelbësore që të bëhet siç duhet për suksesin e aplikacionit. Është pika fillestare e angazhimit të përdoruesit me aplikacionin tuaj.

Duhet të jetë sa më e thjeshtë që të jetë e mundur me UI / UX më të mirë. Zbatimi i funksionalitetit të regjistrimit të përdoruesve duke përdorur PHP është një detyrë e thjeshtë dhe unë do t'ju përshkruaj hapat me shembull në këtë artikull.

Çfarë ka brenda?

Si funksionon ky shembull i regjistrimit të përdoruesit PHP?

Ky kod shembull mund të ndahet në 3 pjesë.

  1. Marrja e informacionit të përdoruesit përmes një formulari HTML.
  2. Vleresimi i informacionit të dorëzuar nga përdoruesi në formularin e dorëzimit.
  3. Trajtimi i bazës së të dhënave për të ruajtur përdoruesin e regjistruar në bazën e të dhënave pas vërtetimit.

Hapi i tretë do të ekzekutohet pasi të sigurohet që përdoruesi nuk është shtuar tashmë. Ky vërtetim i unikitetit të të dhënave do të kryhet bazuar në emailin dhe emrin e përdoruesit të futur prej tyre.

Gjatë regjistrimit ne përgjithësisht mbledhim informacione të përdoruesve, të cilët janë gati të regjistrohen me aplikacionin tonë. Disa prej tyre do të jenë të detyrueshme dhe disa prej tyre do të jenë fakultative.

Pra, ky funksionalitet mund të përfshijë edhe pjesën e vlefshmërisë për t'u siguruar për moszbrazëtinë dhe formatin e të dhënave të përdoruesit. Vërtetimi mund të bëhet ose në anën e klientit ose në anën e serverit.

Të kesh vërtetim në anën e serverit është gjithmonë më mirë. Mund të zgjidhni ta keni në anën e klientit edhe për lehtësinë e përdorimit të përdoruesve. Por të kesh në anën e serverit nuk është opsionale dhe një kërkesë minimale.

Struktura e skedarit

Formulari HTML për të lejuar përdoruesin të regjistrohet

Në këtë shembull, formulari i regjistrimit përmban fushat Emri i përdoruesit, Emri (Emri i ekranit), Fjalëkalimi dhe Email. Ai gjithashtu ka fushën Konfirmo fjalëkalimin për të lejuar përdoruesin të rifusë fjalëkalimin e tij për konfirmim. Këto dy fjalëkalime do të krahasohen më vonë në kohën e një .

Duke dorëzuar këtë formular, përdoruesi pritet të pajtohet me termat dhe kushtet. Pra, një fushë e kutisë së kontrollit shtohet përpara butonit Regjistrohu për ta siguruar atë.

Formulari i Regjistrimit të Përdoruesit PHP

Regjistrohu
"; } ?>
">
">
">
Unë pranoj termat dhe kushtet


Dhe stilet janë,

Trupi ( font-familja: Arial; ngjyra: #333; madhësia e shkronjave: 0.95em; ) .form-head ( ngjyra: #191919; pesha e shkronjave: normale; pesha e shkronjave: 400; margjina: 0; rreshtimi i tekstit : qendër; madhësia e shkronjave: 1,8em; ) .mesazhi i gabimit ( mbushja: 7px 10px; sfondi: #fff1f2; kufiri: #ffd5da 1px solid; ngjyra: #d6001c; rreze-kufi: 4px; margjina: 30px 10px 0p ; ). #ffffff; hapësira kufitare: fillestare; margjina: 15 px automatike; thyerja e fjalëve: fjala e thyer; paraqitja e tabelës: automatik; lartësia e rreshtit: 1.8em; ngjyra: #333; rreze-kufitare: 4 px; mbushje : 20px 40px; gjerësia: 380px; kufiri: 1px solid; kufiri-ngjyra: #e5e6e9 #dfe0e4 #d0d1d5; ) .demo-table .label (ngjyra: #888888; ) .demo-tabela .padding:1 0px; ) .demo-input-box ( mbushje: 13px; kufiri: #CCC 1px solid; kufiri-radius: 4px; gjerësia: 100%; ) .btnRegjistro (mbushje: 13px; ngjyra e sfondit: #5d9cec; ngjyra: #f5f7fa; kursori: treguesi; kufiri-rreze: 4px; gjerësia: 100%; kufiri: #5791da 1px solid; madhësia e shkronjave: 1.1em; ) .response-text (gjerësia maksimale: 380 px; madhësia e shkronjave: 1,5em; rreshtimi i tekstit: në qendër; sfondi: #fff3de; mbushja: 42 px; kufiri-radius: 3 px; kufiri: #f5e9d4 1px; font-family : arial; lartësia e rreshtit: 34 px; diferenca: 15 px automatike; ) .terms (diferencë-fund: 5px; )

Si të vërtetoni informacionin e përdoruesit në formularin e dorëzimit

Një skrip i vlefshmërisë së formularit nga ana e serverit shtohet në këtë shembull për vërtetimin e të dhënave të regjistrimit të përdoruesit. Ky skript i vlefshmërisë PHP do të thirret me dorëzimin e formularit të regjistrimit.

Ky skript vërteton të gjitha fushat e formularit për të kontrolluar mungesën e zbrazëtisë për secilën fushë. Më pas vërteton formatin e emailit të përdoruesit duke përdorur funksionin PHP filter_var().

Meqenëse regjistrimi përfshin veçorinë e konfirmimit të fjalëkalimit, krahasimi i fjalëkalimit do të bëhet në këtë pjesë të këtij shembulli.

Së fundi, skripti i vlefshmërisë do të kontrollojë nëse përdoruesi pranon termin dhe kushtin duke kontrolluar kutinë e duhur në formular.

Pasi të përfundojë i gjithë vlefshmëria duke e kthyer të vërtetën boolean, atëherë do të zhvillohet procesi aktual i regjistrimit.

Funksioni validateMember() ( $valid = true; $errorMessage = array(); foreach ($_POST as $key => $value) (nëse (empty($_POST[$key])) ($valid = false; ) ) if($valid == e vërtetë) (if ($_POST["password"] != $_POST["confirm_password"]) ($errorMessage = "Fjalëkalimet duhet të jenë të njëjta."; $valid = false; ) if (! isset ($error_message)) ( if (! filter_var($_POST["userEmail"], FILTER_VALIDATE_EMAIL)) ( $errorMessage = "Adrese e pavlefshme emaili."; $valid = false; ) ) if (! isset( $error_message)) ( if (! isset($_POST["terms"])) ( $errorMessage = "Prano termat dhe kushtet."; $valid = false; ) ) ) else ( $errorMessage = "Të gjitha fushat janë të nevojshme. "; ) nëse ($valid == false) (ktheje $errorMessage; ) ktheje;)

Kodi PHP MySQL për të hyrë në bazën e të dhënave për të ruajtur përdoruesin e regjistruar

Vlefshmëria e formularit të përdoruesit nga ana e serverit

Kjo është pika e hyrjes PHP për të trajtuar të gjithë skriptin e serverit për të vërtetuar formën dhe për të trajtuar operacionet e bazës së të dhënave bazuar në rezultatin e vlefshmërisë.

validateMember ($username, $displayName, $password, $email); if (bosh($errorMessage)) ( $memberCount = $member->isMemberExists($username, $email); if ($memberCount == 0) ( $insertId = $member->insertMemberRecord($username, $displayName, $ fjalëkalimi, $email); nëse (! bosh ($insertId)) ( header ("Vendndodhja: thankyou.php"); ) ) other ( $errorMessage = "Përdoruesi ekziston tashmë."; ) ) ) ?>

Kontrolloni nëse përdoruesi ekziston tashmë

Funksioni isMemberExists() përdoret për të kontrolluar veçantinë e të dhënave të përdoruesit bazuar në emailin e tyre dhe emrin e përdoruesit. Nëse emri i përdoruesit ose emaili i futur ekziston në bazën e të dhënave të përdoruesve, atëherë procesi i regjistrimit do të ndalet me kthim dhe konfirmim.

Ky njohje do të njoftojë se "përdoruesi ekziston tashmë". Kodi është

Funksioni ështëMemberExists($username, $email) ( $query = "select * FROM registered_users WHERE user_name = ? OSE email = ?"; $paramType = "ss"; $paramArray = grup ($username, $email); $memberCount = $this->ds->numRows ($query, $paramType, $paramArray); ktheni $memberCount;)

Futni të dhënat e anëtarëve në bazën e të dhënave

Nëse kthen 0, do të thotë që nuk ekzistojnë përdorues të tillë me emailin ose emrin e përdoruesit të futur. Dhe kështu, të dhënat e regjistrimit do të futen në bazën e të dhënave. Kodi i mëposhtëm tregon metodën e futjes së anëtarëve.

Funksioni insertMemberRecord($username, $displayName, $password, $email) ( $passwordHash = md5($password); $query = "INSERT INTO registered_users (user_name, display_name, password, email) VALUES (?, ?, ?, ? )"; $paramType = "ssss"; $paramArray = grup ($emri i përdoruesit, $displayName, $passwordHash, $email); $insertId = $this->ds->insert($query, $paramType, $paramArray); kthe $insertId;)

Burimi i të Dhënave.php

Kjo është klasa e përgjithshme e burimit të të dhënave në PHP për të kryer operacionet e bazës së të dhënave. Ai përfshin funksione për të lidhur bazën e të dhënave dhe për të ekzekutuar pyetje të ndryshme për të marrë rezultatin e bazës së të dhënave, numërimin e rreshtave, ekzekutimin e futjes dhe më shumë.

Kjo klasë e burimit të të dhënave është e përgjithshme dhe mbahet sa më e thjeshtë që të jetë e mundur. Është efikas dhe e përdor në shumicën e mikroprojekteve dhe tutorialeve të mia. Jeni të lirë ta shkarkoni dhe ta përdorni.

Gjëja e rëndësishme është mos harroni kurrë të përdorni Deklaratat e Përgatitura. Ju ndihmon të mbroni nga sulmet e injektimit SQL dhe është hapi i parë në drejtim të zbatimit të sigurisë në një aplikacion në internet.

lidhje = $this->getConnection(); ) /** * Nëse nevojitet objekti i lidhjes, përdorni këtë metodë dhe merrni akses në të. * Përndryshe, përdorni metodat e mëposhtme për futjen / përditësimin / etj. * * @return \mysqli */ funksioni publik getConnection() ( $conn = i ri \mysqli(self::HOST, vet::USERNAME, vet::PASSWORD, vet::DATABASENAME); nëse (mysqli_connect_errno()) ( trigger_error ("Problem me lidhjen me bazën e të dhënave."); ) $conn->set_charset("utf8"); kthe $conn;) /** * Për të marrë rezultatet e bazës së të dhënave * @param string $query * @param string $paramType * @ grup param $paramArray * @return grup */ funksioni publik zgjidhni($query, $paramType="", $paramArray=array()) ( $stmt = $this->conn->prepare($query); if(! bosh($paramType) && !empty($paramArray)) ($this->bindQueryParams($sql, $paramType, $paramArray); ) $stmt->ekzekutoj();$rezultat = $stmt->merr_rezultatin(); nëse ($result->num_rows > 0) ( ndërsa ($row = $result->fetch_assoc()) ( $resultset = $row; ) ) nëse (! bosh ($resultset)) ( ktheni $resultset; ) ) / ** * Për të futur * @param string $query * @param string $paramType * @param varg $paramArray * @return int */ insert funksionin publik($query, $paramType, $paramArray) ( print $query; $stmt = $this->conn->prepare($query); $this->bindQueryParams($stmt, $paramType, $paramArray); $stmt->ekzekutoni(); $insertId = $stmt->insert_id; ktheni $insertId; ) /** * Për të ekzekutuar pyetjen * @param string $query * @param string $paramType * @param array $paramArray */ funksionin publik ekzekutoni($query, $paramType="", $paramArray=array()) ( $ stmt = $this->conn->prepare($query); if(!empty($paramType) && !empty($paramArray)) ($this->bindQueryParams($stmt, $paramType="", $paramArray= array()); ) $stmt->execute(); ) /** * 1. Përgatit lidhjen e parametrave * 2. Lidh parametrat në deklaratën sql * @param string $stmt * @param string $paramType * @param array $ paramArray */ funksion publik bindQueryParams($stmt, $paramType, $paramArray=array()) ( $paramValueReference = & $paramType; për ($i = 0; $i< count($paramArray); $i ++) { $paramValueReference = & $paramArray[$i]; } call_user_func_array(array($stmt, "bind_param"), $paramValueReference); } /** * To get database results * @param string $query * @param string $paramType * @param array $paramArray * @return array */ public function numRows($query, $paramType="", $paramArray=array()) { $stmt = $this->conn->prepare($query); if(!empty($paramType) && !empty($paramArray)) ( $this->bindQueryParams($stmt, $paramType, $paramArray); ) $stmt->ekzekutoni(); $stmt->store_result(); $recordCount = $stmt->num_rows; ktheni $recordCount; ) )

Skripti i bazës së të dhënave

Ky skript i bazës së të dhënave ka deklaratën e krijimit për tabelën e regjistruar_përdoruesit. Importoni këtë skript në mjedisin tuaj të zhvillimit për të ekzekutuar këtë kod.

Struktura e tabelës për "përdoruesit e_regjistruar" -- KRIJO TABELA NËSE NUK EKZISTON `përdoruesit e_regjistruar` (`id` int(8) NUK NULL AUTO_INCREMENT, `emri_përdorues` varchar(255) NUK NULL, `emri i parë` varchar(255) JO NULL, emri i fundit` varchar(255) NOT NULL, `fjalëkalimi` varchar(25) JO NULL, `email` varchar(55) NOT NULL, `gjinia` varchar(20) JO NULL, ÇELËSI PRIMAR (`id`));

Nëse vërtetimi i formularit të regjistrimit dështon, atëherë mesazhi i gabimit do t'i shfaqet përdoruesit si më poshtë.

Komentet për "Formulari i Regjistrimit të Përdoruesit PHP (Regjistrohuni) me bazën e të dhënave MySQL"

    Përshëndetje Vincy, kam gabimet e mëposhtme kur ekzekutoj kodin e regjistrit, ju lutem më ndihmoni.

    INSERT INTO registered_users (user_name, display_name, password, email) VALUES (?, ?, ?, ?)
    Paralajmërim: call_user_func_array() pret që parametri 1 të jetë një kthim i vlefshëm, anëtari i grupit të parë nuk është një emër ose objekt i vlefshëm klase në C:\xampp\htdocs\PHP\JAMII-CASH\DataSource.php në linjën 136

    Gabim fatal: Gabim i pakapur: Thirrja e një funksioni anëtari execute() në boolean në C:\xampp\htdocs\PHP\JAMII-CASH\DataSource.php:99 Gjurma e grumbullit: #0 C:\xampp\htdocs\PHP\JAMII -CASH\Member.php(83): Phppot\DataSource->insert('INSERT INTO reg...', 'ssss', Array) #1 C:\xampp\htdocs\PHP\JAMII-CASH\index.php (20 ): Phppot\Member->insertMemberRecord('chuki10', 'Ray', '202020', 'raf.yah.s.1@gma...') #2 (kryesore) hedhur në C:\xampp\htdocs\ PHP\ JAMII-CASH\DataSource.php në linjën 99

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, përfshirë hyrjen dhe fjalëkalimin. Formulari i dërgon 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 të njëjtin hyrje dhe fjalëkalim.
  3. Nëse përdoruesi gjendet, informacioni për këtë regjistrohet në një sesion ose cookie.
  4. Në faqet e faqes, bëhet një kontroll për të parë nëse seanca përmban të dhëna 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ë regjistroni disa të dhëna të përdoruesit për t'u shfaqur në faqe, për shembull, një emër ose pseudonim. Vendimi nëse do të përdoren sesione ose cookie merret çdo faqe. 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, e cila do të përmbajë të dy formularët dhe në të do të shfaqen të dhënat e përdoruesit. Tani për tani do të përmbajë vetëm kod HTML, por menjëherë do të krijojmë një skedar PHP, sepse në të ardhmen do të jetë një skrip. Le ta quajmë atë formreg.php. Kodi i faqes do të jetë si ky:

formreg.php:

Regjistrimi

Ne do të regjistrojmë të dhënat e regjistrimit të përdoruesit 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["login"]; $pas=$_POST["fjalëkalim"]; $db=mysqli_connect("localhost", "root", "", "mybase"); $query="INSERT INTO përdoruesit (hyrja, pas) VALUES ("$login", "$pas""); $rezultat=mysqli_query($db, $query); if ($result) header ("Vendndodhja: formreg.php"); mysqli_close ($db);

Në rreshtin 9 e vendosëm që të kthehet në faqen e formularëve. Meqenëse ekzekutimi i skriptit dhe ringarkimi i faqes ndodh shumë shpejt në serverin lokal, 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 hyrjet e reja shfaqen në bazën e të dhënave.

Autorizimi

Formulari i autorizimit ekzekuton skedarin autorization.php në server. Ky skript merr një rol identifikimi dhe primar dhe kontrollon nëse ekziston një përdorues i tillë. Nëse ka, atëherë identifikimi do të regjistrohet në seancë. Nëse një përdorues i tillë nuk gjendet, 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ë hyrje 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["login"]; $pas=$_POST["fjalëkalim"]; $db=mysqli_connect("localhost", "root", "", "mybase"); $query="ZGJEDHJE * NGA përdoruesit WHERE login="$login" DHE BINARY "$pas""; $rezultat=mysqli_query($db, $query); if (mysqli_num_rows($result)) $_SESSION["login"]=$login; other $_SESSION["login"]="er login"; header ("Vendndodhja: formreg.php"); mysqli_close ($db);

Në rreshtin 7, krijohet një kërkesë për të zgjedhur një rresht me hyrjen dhe fjalëkalimin e marrë nga formulari. Fjala kyçe BINARY shkruhet para fushës pas. Është e nevojshme në mënyrë që gjatë krahasimit duke përdorur këtë fushë, të merret parasysh rasti i karaktereve. Nëse keni nevojë që rasti të merret parasysh kur krahasoni hyrjen, atëherë BINARY duhet të shkruhet përpara tij. 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 e të cilave 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, atëherë në vend të hyrjes shkruhet vargu “er login”. Mund të shkruani një tekst tjetër, por duhet të jeni të sigurt se nuk do të përputhet me asnjë hyrje. Më pas ktheheni në faqen me formularë.

Faqet e faqes duhet të përmbajnë 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 të bëjmë një provë për të. 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 ka një hyrje në seancë, por përmban rreshtin "er login", atëherë shfaqet një mesazh që identifikimi ose fjalëkalimi është i pasaktë. Pasi të shfaqet mesazhi, identifikimi bëhet bosh. Kjo bëhet në mënyrë që mesazhi të shfaqet vetëm një herë dhe të mos shfaqet kur kaloni në faqet e tjera. Nëse identifikimi është i ndryshëm, atëherë përdoruesi autorizohet dhe faqja krijohet si për përdoruesit e regjistruar. 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ë një funksioni regjistrimi dhe autorizimi. Në faqet reale është më e ndërlikuar. Formularët duhet t'u shfaqen vetëm përdoruesve të paautorizuar. Përveç kësaj, duhet të shtoni një buton "Logout", i cili anulon autorizimin. Kur regjistroheni, duhet të kontrolloni formularin, të kontrolloni uniken e hyrjes dhe të shtoni konfirmimin e fjalëkalimit.