Domov programy Vytvárame neuveriteľne jednoduchý registračný systém v PHP a MySQL. Vytvorenie neuveriteľne jednoduchého registračného systému v PHP a MySQL Vyhýbanie sa registrácii členov php

Vytvárame neuveriteľne jednoduchý registračný systém v PHP a MySQL. Vytvorenie neuveriteľne jednoduchého registračného systému v PHP a MySQL Vyhýbanie sa registrácii členov php

Vytvorenie stránky založenej na členstve sa spočiatku javí ako náročná úloha. Ak ste to niekedy chceli urobiť sami, potom ste to vzdali, keď ste začali premýšľať, ako to poskladať pomocou svojich zručností PHP, potom je tento článok určený pre vás. Prevedieme vás každým aspektom vytvárania členskej lokality so zabezpečenou členskou oblasťou chránenou heslom.

Celý proces pozostáva z dvoch veľkých častí: registrácie používateľa a autentifikácie používateľa. V prvej časti sa budeme venovať vytváraniu registračného formulára a ukladaniu údajov do databázy MySQL. V druhej časti vytvoríme prihlasovací formulár a pomocou neho umožníme používateľom prístup do zabezpečenej oblasti.

Stiahnite si kód

Celý zdrojový kód pre registračný/prihlasovací systém si môžete stiahnuť z nižšie uvedeného odkazu:

Konfigurácia a nahrávanie
Súbor ReadMe obsahuje podrobné pokyny.

Otvor source\include\membersite_config.php súbor v textovom editore a aktualizujte konfiguráciu. (Prihlásenie do databázy, názov vašej webovej stránky, vaša e-mailová adresa atď.).

Nahrajte celý obsah adresára. Otestujte register.php odoslaním formulára.

Registračný formulár

Aby sme mohli vytvoriť používateľský účet, musíme od používateľa získať minimálne množstvo informácií. Potrebujeme jeho meno, e-mailovú adresu a požadované používateľské meno a heslo. Samozrejme, v tomto bode môžeme požiadať o ďalšie informácie, ale dlhý formulár je vždy na odvrátenie. Obmedzme sa teda len na tieto polia.

Tu je registračný formulár:

Registrovať

Takže máme textové polia pre meno, e-mail a heslo. Všimnite si, že používame pre lepšiu použiteľnosť.

Overenie formulára

V tomto bode je dobré vložiť nejaký overovací kód formulára, aby sme sa uistili, že máme všetky údaje potrebné na vytvorenie používateľského účtu. Musíme skontrolovať, či je vyplnené meno, e-mail a heslo a či je e-mail v správnom formáte.

Spracovanie odoslania formulára

Teraz musíme spracovať údaje formulára, ktoré sú odoslané.

Tu je postupnosť (pozri súbor fg_membersite.php v stiahnutom zdroji):

function RegisterUser() ( if(!isset($_POST["submitted"])) ( 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); vráti true; )

Najprv overíme odoslanie formulára. Potom zhromažďujeme a „dezinfikujeme“ údaje o odoslaní formulára (vždy to urobte pred odoslaním e-mailu, uložením do databázy atď.). Odoslaný formulár sa potom uloží do databázovej tabuľky. Používateľovi pošleme e-mail so žiadosťou o potvrdenie. Potom oznámime správcovi, že sa používateľ zaregistroval.

Ukladanie údajov do databázy

Teraz, keď sme zhromaždili všetky údaje, musíme ich uložiť do databázy.
Takto uložíme odoslaný formulár do databázy.

function SaveToDatabase(&$formvars) ( if(!$this->DBLogin()) ( $this->HandleError("Prihlásenie do databázy zlyhalo!"); return false; ) if(!$this->Ensuretable()) ( return false; ) if(!$this->IsFieldUnique($formvars,"email")) ( $this->HandleError("Tento e-mail je už zaregistrovaný"); return false; ) if(!$this->IsFieldUnique( $formvars,"username")) ( $this->HandleError("Toto používateľské meno sa už používa. Skúste iné používateľské meno"); return false; ) if(!$this->InsertIntoDB($formvars)) ( $this- >HandleError("Vloženie do databázy zlyhalo!"); return false; ) return true; )

Všimnite si, že ste nakonfigurovali prihlasovacie údaje do databázy v súbore membersite_config.php. Vo väčšine prípadov môžete ako hostiteľ databázy použiť „localhost“.
Po prihlásení sa presvedčíme, že tabuľka existuje. (Ak nie, skript vytvorí požadovanú tabuľku).
Potom sa uistíme, že používateľské meno a e-mail sú jedinečné. Ak nie je jedinečný, vrátime chybu späť používateľovi.

Štruktúra databázovej tabuľky

Toto je štruktúra tabuľky. Funkcia CreateTable() v súbore fg_membersite.php vytvorí tabuľku. Tu je kód:

function CreateTable() ( $qry = "Vytvoriť tabuľku $this->názov tabuľky (. "id_user INT NOT NULL AUTO_INCREMENT ," "meno VARCHAR(128) NOT NULL," "e-mail VARCHAR(64) NOT NULL," " "telefónne číslo VARCHAR(16) NOT NULL," "používateľské meno VARCHAR(16) NOT NULL," "heslo VARCHAR(32) NOT NULL," "potvrdiť kód VARCHAR(32)," "PRIMARY KEY (id_user)." ")"; if( !mysql_query($qry,$this->connection)) ( $this->HandleDBError("Chyba pri vytváraní tabuľky \ndotaz bol\n $qry"); return false; ) return true; )

Pole id_user bude obsahovať jedinečné ID používateľa a je tiež primárnym kľúčom tabuľky. Všimnite si, že povoľujeme 32 znakov pre pole hesla. Robíme to preto, že ako dodatočné bezpečnostné opatrenie uložíme heslo do databázy zašifrované pomocou MD5. Upozorňujeme, že pretože MD5 je jednosmerná metóda šifrovania, nebudeme môcť obnoviť heslo v prípade, že ho používateľ zabudne.

Vloženie registrácie do tabuľky

Tu je kód, ktorý používame na vkladanie údajov do databázy. Všetky naše údaje budeme mať k dispozícii v poli $formvars.

function InsertIntoDB(&$formvars) ( $confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "vložiť do ".$this->tablename."(meno, email, užívateľské meno, heslo, potvrdiť kód) values ​​​​("" . $this->SanitizeForSQL($formvars["name"]) . "", "" . $this->SanitizeForSQL($formvars["e-mail"]) . "", "" $ this->SanitizeForSQL($formvars["používateľské meno"]) . "", "" . md5($formvars["heslo"]) . "", "" . $confirmcode . "")"; if(! mysql_query( $insert_query ,$this->connection)) ( $this->HandleDBError("Chyba pri vkladaní údajov do tabuľky\nquery:$insert_query"); return false; ) return true; )

Všimnite si, že na zašifrovanie hesla pred vložením do databázy používame PHP funkciu md5().
Jedinečný potvrdzovací kód tiež vytvárame z e-mailovej adresy používateľa.

Odosielanie emailov

Teraz, keď máme registráciu v našej databáze, pošleme používateľovi potvrdzujúci e-mail. Na dokončenie procesu registrácie musí používateľ kliknúť na odkaz v potvrdzovacom e-maile.

function SendUserConfirmationEmail(&$formvars) ( $mailer = nový PHPMailer(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["name"]) ; $mailer->Subject = "Vaša registrácia s ".$this->sitename; $mailer->From = $this->GetFromAddress(); $confirmcode = urlencode($this->MakeConfirmationMd5($formvars["email" ])); $confirm_url = $this->GetAbsoluteURLFolder()."/confirmreg.php?code=".$confirmcode; $mailer->Body ="Dobrý deň ".$formvars["name"]."\r\ n\r\n". "Ďakujeme za Vašu registráciu pomocou ".$this->sitename."\r\n". "Kliknutím na odkaz nižšie potvrďte svoju registráciu.\r\n." "$confirm_url\r \n". "\r\n". "S pozdravom\r\n". "Správca webu\r\n". $this->sitename; if(!$mailer->Send()) ( $this-> HandleError("Odoslanie e-mailu s potvrdením registrácie zlyhalo."); return false; ) return true; )

Aktualizácie

9. januára 2012
Boli pridané funkcie Obnoviť heslo/Zmeniť heslo
Kód je teraz zdieľaný na GitHub.

Vitaj späťUserFullName(); ?>!

Licencia


Kód je zdieľaný pod licenciou LGPL. Môžete ho voľne používať na komerčných alebo nekomerčných webových stránkach.

Žiadne súvisiace príspevky.

Komentáre k tomuto záznamu sú uzavreté.

Za posledných pár rokov prešiel webhosting dramatickou zmenou. Webhostingové služby zmenili spôsob, akým fungujú webové stránky. Existuje niekoľko druhov služieb, ale dnes budeme hovoriť o možnostiach, ktoré sú k dispozícii pre predajcov hostingu. Sú to Linux Reseller Hosting a Windows Reseller Hosting. Predtým, ako pochopíme základné rozdiely medzi nimi, poďme zistiť, čo je hosting predajcu.

Reseller Hosting

Zjednodušene povedané, reseller hosting je forma webhostingu, kde vlastník účtu môže využiť svoj vyhradený priestor na pevnom disku a pridelenú šírku pásma na účely ďalšieho predaja na webové stránky tretích strán. Niekedy si predajca môže prenajať dedikovaný server od hostiteľskej spoločnosti (Linux alebo Windows) a ďalej ho prenajať tretím stranám.

Väčšina používateľov webových stránok používa Linux alebo Windows. Súvisí to s dobou prevádzkyschopnosti. Obe platformy zaisťujú, že váš web je v 99 % prípadov.

1. Prispôsobenie

Jedným z hlavných rozdielov medzi hostingovým plánom predajcu Linuxu a plánom poskytovaným systémom Windows je prispôsobenie. Aj keď môžete experimentovať s oboma prehrávačmi niekoľkými spôsobmi, Linux je oveľa prispôsobiteľnejší ako Windows. Ten má viac funkcií ako jeho náprotivok, a preto mnohí vývojári a správcovia považujú Linux za veľmi priateľský.

2. Aplikácie

Rôzne hostingové služby predajcov majú rôzne aplikácie. Linux aj Windows majú svoju vlastnú škálu aplikácií, no tá druhá má výhodu, pokiaľ ide o počet a všestrannosť. Súvisí to s open source povahou Linuxu. Každý vývojár môže nahrať svoju aplikáciu na platformu Linux, čo z nej robí atraktívneho poskytovateľa hostingu pre milióny vlastníkov webových stránok.

Upozorňujeme však, že ak používate Linux na webhosting, ale zároveň používate OS Windows, niektoré aplikácie nemusia jednoducho fungovať.

3. Stabilita

Zatiaľ čo obe platformy sú stabilné, Linux Reseller Hosting je z týchto dvoch stabilnejší. Je to platforma s otvoreným zdrojovým kódom a môže pracovať v niekoľkých prostrediach. Túto platformu možno každú chvíľu upravovať a rozvíjať.

4. .NET kompatibilita

Nie je to tak, že Linux je lepší ako Windows vo všetkých možných smeroch. Pokiaľ ide o kompatibilitu .NET, Windows kradne pozornosť. Webové aplikácie možno ľahko vyvíjať na hostiteľskej platforme Windows.

5. Cenové výhody

Obe hostingové platformy sú cenovo dostupné. Ak však pociťujete nedostatok peňazí, mali by ste sa rozhodnúť pre Linux. Je zadarmo, a preto si ho zvolilo toľko vývojárov a systémových administrátorov po celom svete.

6. Jednoduché nastavenie

Systém Windows sa nastavuje jednoduchšie ako jeho náprotivok. Všetko povedané a urobené, systém Windows si po celé tie roky stále zachováva svoju užívateľskú prívetivosť.

7.Bezpečnosť

Rozhodnite sa pre hosting predajcu Linuxu, pretože je bezpečnejší ako Windows. To platí najmä pre ľudí, ktorí prevádzkujú svoje elektronické obchody.

Záver

Výber medzi týmito dvomabude závisieť od vašej požiadavky a nákladovej flexibility. Obe hostingové služby majú jedinečné výhody. Zatiaľ čo systém Windows sa ľahko nastavuje, Linux je nákladovo efektívny, bezpečný a všestrannejší.



V marci tohto roku som mal veľmi zlú skúsenosť s mediálnou spoločnosťou, ktorá mi odmietla zaplatiť a odpovedať na moje e-maily. Stále mi dlžia tisíce dolárov a pocit hnevu, ktorý mám, preniká každý deň. Ukázalo sa však, že nie som sám a stovky ďalších vlastníkov webových stránok sú na rovnakej lodi. Je to porovnateľné s digitálnou reklamou.

Úprimne povedané, tento blog mám už dlho a v minulosti som poskakoval po rôznych reklamných sieťach. Po odstránení reklamných jednotiek z tejto spoločnosti, ktorá ma zneistila, som bol späť na začiatku. Mal by som tiež poznamenať, že Produkt Google AdSense sa mi nikdy celkom nepáčil, len preto, že mi pripadal ako „spodok suda“ grafických reklám. Nie z hľadiska kvality, ale z hľadiska príjmu.

Z toho, čo som pochopil, chcete na svojej stránke inzerovať Google, ale chcete, aby to robili aj iné veľké spoločnosti a agentúry. Týmto spôsobom maximalizujete dopyt a výnosy.

Po mojej negatívnej skúsenosti som odporučil spoločnosť Newor Media. A ak mám byť úprimný, najprv ma nepredali hlavne preto, že som o nich nenašiel veľa informácií. Našiel som pár slušných recenzií na iných stránkach a po rozhovore s niekým som sa rozhodol, že to skúsim .Poviem, že sú SUPER nápomocní. Každá sieť, s ktorou som kedy pracoval, bola so mnou dosť krátka, pokiaľ ide o odpovede a rozbehnutie. Odpovedali na každú otázku a bol to skutočne povzbudzujúci proces.

Reklamy som spúšťal niekoľko mesiacov a zárobky sú približne v súlade s tým, čo som zarábal s inou spoločnosťou. Takže naozaj nemôžem povedať, či sú o toľko lepšie ako ostatné, ale kde vynikajú je bod, ktorý chcem naozaj povedať. Komunikácia s nimi sa nepodobá žiadnej inej sieti, s ktorou som kedy pracoval. Tu je prípad, keď sú skutočne odlišné:

Prvú platbu mi posunuli načas cez Paypal. Ale pretože nie som v USA (a to sa stáva každému, myslím si), že mi Paypal vybral poplatok. Poslal som o tom svojmu zástupcovi e-mail s otázkou, či existuje spôsob, ako sa tomu v budúcnosti vyhnúť.

Povedali, že sa nemôžu vyhnúť poplatku, ale že by VRÁTANE VŠETKÝCH POPLATKOV.... VRÁTANE NAJNOVŠEJ PLATBY! Nielen to, ale úhrada bola prijatá do 10 MINÚT! Kedy sa vám niekedy podarilo podať takúto žiadosť bez toho, aby ste ju museli preposlať „finančnému oddeleniu“, aby ste na ňu nikdy neodpovedali.

Pointa je, že milujem túto spoločnosť. Možno by som mohol zarobiť viac niekde inde, nie som si istý, ale majú so mnou doživotného vydavateľa. Nie som veľká stránka a nevytváram veľa príjmov, ale cítim sa ako Veľmi dôležitý klient, keď s nimi hovorím. Je to skutočne čerstvý vzduch v odvetví, ktoré je zrelé na podvody a nereagovanie.

Mikropočítače, ktoré v roku 2012 vytvorila nadácia Raspberry Pi Foundation, boli mimoriadne úspešné v podnecovaní kreativity u malých detí a táto spoločnosť so sídlom v Spojenom kráľovstve začala ponúkať spúšťacie programy na učenie sa kódovania ako pi-top an Kano. Teraz existuje nový startup, ktorý využíva elektroniku Pi a zariadenie je známe ako Pip, ručná konzola, ktorá ponúka dotykovú obrazovku, viacero portov, ovládacie tlačidlá a reproduktory. Myšlienkou tohto zariadenia je zaujať mladších jednotlivcov pomocou herného zariadenia, ktoré je retro, ale zároveň ponúka zážitok z učenia sa kódu prostredníctvom webovej platformy.

Úžasná softvérová platforma, ktorú ponúka Pip, ponúkne možnosť začať kódovať v Pythone, HTML/CSS, JavaScript, Lua a PHP. Zariadenie ponúka návody krok za krokom, aby deti začali s kódovaním, a umožňuje im dokonca rozblikať LED diódy. Aj keď je Pip stále prototypom, určite bude obrovským hitom v tomto odvetví a zapojí deti, ktoré majú záujem o kódovanie, a poskytne im vzdelanie a zdroje potrebné na to, aby začali s kódovaním v mladom veku.

Budúcnosť kódovania

Kódovanie má veľkú budúcnosť a aj keď deti nebudú používať kódovanie ako svoju kariéru, môžu mať prospech z toho, že sa naučia kódovať pomocou tohto nového zariadenia, ktoré to uľahčuje ako kedykoľvek predtým. S Pip sa dokonca aj najmladší nadšenci kódovania naučia rôzne jazyky a budú na dobrej ceste k vytváraniu vlastných kódov, vlastných hier, vlastných aplikácií a podobne. Je to budúcnosť elektronickej éry a Pip umožňuje zvládnuť základné stavebné kamene kódovania.
Informatika sa stala dôležitou súčasťou vzdelávania a so zariadeniami, ako je nový Pip, môžu deti začať zdokonaľovať svoje vzdelanie doma a zároveň sa zabaviť. Kódovanie ďaleko presahuje jednoduché vytváranie webových stránok alebo softvéru. Môže sa použiť na zvýšenie bezpečnosti v meste, na pomoc pri výskume v oblasti medicíny a oveľa viac. Keďže teraz žijeme vo svete, v ktorom dominuje softvér, kódovanie je budúcnosť a pre všetky deti je dôležité, aby aspoň základne rozumeli tomu, ako to funguje, aj keď tieto zručnosti nikdy nevyužijú ako svoju kariéru. Z hľadiska budúcnosti bude kódovanie kritickou súčasťou každodenného života. Bude to jazyk sveta a neznalosť počítačov alebo ich fungovania môže predstavovať výzvy, ktoré je rovnako ťažké prekonať ako negramotnosť.
Kódovanie tiež prinesie veľké zmeny v hernom svete, najmä pokiaľ ide o online hranie, vrátane prístupu online kasín. Ak chcete vidieť, ako už kódovanie zlepšilo herný svet, pozrite sa na niekoľko najlepšie hodnotených kasínových stránok, ktoré sa spoliehajú na kódovanie. Nahliadnite a pozrite sa, ako môže kódovanie prezentovať realistické prostredie online.

Ako Pip zapája deti

Pokiaľ ide o možnosť naučiť sa kódovať, deti majú veľa možností. Existuje množstvo zariadení a hardvérových vecí, ktoré je možné zakúpiť, ale Pip má k ich zariadeniu iný prístup. Prenosnosť zariadenia a dotyková obrazovka ponúkajú výhodu iným kódovacím zariadeniam, ktoré sú na trhu. Pip bude plne kompatibilný s elektronickými komponentmi okrem systému Raspberry Pi HAT. Zariadenie používa štandardné jazyky a má základné nástroje a je perfektným zariadením pre každého začínajúceho programátora. Cieľom je odstrániť akékoľvek bariéry medzi nápadom a tvorbou a sprístupniť nástroje okamžite na použitie. Jednou z ďalších veľkých výhod Pipu je, že používa SD kartu, takže ho možno použiť aj ako stolný počítač, keď je pripojený k monitoru a myši.
Zariadenie Pip by pomohlo deťom a zainteresovaným nováčikom v oblasti kódovania s nadšením pri učení a precvičovaní kódovania. Tým, že ponúka kombináciu dokončovania úloh a majstrovania pri riešení problémov, zariadenie určite zaujme mladšiu generáciu. Zariadenie potom umožňuje týmto mladým programátorom prejsť na pokročilejšie úrovne kódovania v rôznych jazykoch, ako je JavaScript a HTML/CSS. Keďže zariadenie kopíruje hernú konzolu, okamžite upúta pozornosť detí a zapojí ich do poznávania kódovania v mladom veku. Dodáva sa aj s niektorými predinštalovanými hrami na udržanie pozornosti, ako napríklad Pac-Man a Minecraft.

Inovácie, ktoré prídu

Budúca inovácia do značnej miery závisí od aktuálnej schopnosti dieťaťa kódovať a od jeho celkového chápania procesu. Keď sa deti učia kódovať v ranom veku pomocou zariadení, ako je nový Pip, získajú zručnosti a znalosti na vytváranie úžasných vecí v budúcnosti. Mohlo by to byť predstavenie nových hier alebo aplikácií alebo dokonca nápadov, ktoré môžu ožiť, aby pomohli pri lekárskom výskume a liečbe. Možností je nekonečne veľa. Keďže naša budúcnosť bude riadená softvérom a počítačmi, začať mladý je najlepší spôsob, ako ísť, a preto je nový Pip zameraný na mladý dav. Ponukou konzolového zariadenia, ktoré dokáže hrať hry a zároveň učiť kódovacie zručnosti, sú mladí členovia spoločnosti na dobrej ceste stať sa v budúcnosti tvorcami softvéru, ktorý zmení celý náš život. Toto je len začiatok, ale je to niečo, čo sa milióny detí na celom svete začínajú učiť a ovládať. S používaním zariadení ako Pip sú základy kódovania pokryté a deti sa rýchlo naučia rôzne kódovacie jazyky, ktoré môžu viesť úžasnými cestami, keď vstúpia do dospelosti.

Návod pre úplných začiatočníkov! Bez ohľadu na to, kam na internete idete, existuje základ, ktorý nájdete takmer všade – registrácia používateľov. Či už potrebujete, aby sa vaši používatelia zaregistrovali kvôli bezpečnosti alebo len kvôli pridanej funkcii, nie je dôvod to neurobiť pomocou tohto jednoduchého návodu. V tomto návode si prejdeme základy správy používateľov a skončíme s jednoduchou členskou oblasťou, ktorú môžete implementovať na svojej vlastnej webovej stránke.

Ak potrebujete ďalšiu pomoc alebo potrebujete skratku, pozrite si škálu poskytovateľov služieb PHP na Envato Studio. Títo skúsení vývojári vám môžu pomôcť s čímkoľvek, od rýchlej opravy chýb až po vývoj celej aplikácie od začiatku. Stačí si teda prezrieť poskytovateľov, prečítať si recenzie a hodnotenia a vybrať si toho pravého pre vás.

Úvod

V tomto návode prejdeme každým krokom vytvárania systému správy používateľov spolu so systémom súkromných správ medzi používateľmi. Urobíme to pomocou PHP s databázou MySQL na ukladanie všetkých informácií o používateľovi. Tento tutoriál je zameraný na úplných začiatočníkov v PHP, takže nie sú potrebné žiadne predchádzajúce znalosti - v skutočnosti sa môžete trochu nudiť, ak ste skúsený používateľ PHP!

Tento tutoriál je určený ako základný úvod do Sessions a do používania databáz v PHP. Aj keď sa vám konečný výsledok tohto návodu nemusí hneď zdať užitočný, zručnosti, ktoré získate z tohto návodu, vám umožnia pokračovať vo vytváraní vlastného systému členstva; vyhovujúce vašim vlastným potrebám.

Pred začatím tohto návodu sa uistite, že máte po ruke nasledujúce informácie:

  • Názov hostiteľa databázy- toto je server, na ktorom je hosťovaná vaša databáza, vo väčšine situácií to bude jednoducho „localhost“.
  • Názov databázy, Užívateľské meno databázy, Heslo databázy- pred spustením tohto tutoriálu by ste si mali vytvoriť databázu MySQL, ak máte možnosť, alebo máte po ruke informácie na pripojenie k existujúcej databáze. Tieto informácie sú potrebné počas celého tutoriálu.

Ak tieto informácie nemáte, váš poskytovateľ hostingu by vám ich mal vedieť poskytnúť.

Teraz, keď máme formality z cesty, začnime s tutoriálom!

Krok 1 - Počiatočná konfigurácia

Nastavenie databázy

Ako je uvedené v Úvode, potrebujete databázu, aby ste mohli pokračovať cez tento bod tutoriálu. Na začiatok si v tejto databáze vytvoríme tabuľku na uloženie informácií o našich používateľoch.

Tabuľka, ktorú potrebujeme, bude uchovávať naše používateľské informácie; pre naše účely použijeme jednoduchú tabuľku, ale bolo by ľahké uložiť viac informácií do ďalších stĺpcov, ak to potrebujete. V našom systéme potrebujeme nasledujúce štyri stĺpce:

  • ID používateľa (Primárny kľúč)
  • Používateľské meno
  • heslo
  • Emailová adresa

Z hľadiska databázy, a Primárny kľúč je pole, ktoré jednoznačne identifikuje riadok. V tomto prípade bude naším primárnym kľúčom UserID. Keďže chceme, aby sa to zvýšilo vždy, keď sa používateľ zaregistruje, použijeme špeciálnu voľbu MySQL - auto_increment .

SQL dotaz na vytvorenie našej tabuľky je zahrnutý nižšie a zvyčajne sa spustí na karte "SQL" v phpMyAdmin.

CREATE TABLE `users` (`UserID` INT(25) NOT NULL AUTO_INCREMENT PRIMARY KEY , `Username` VARCHAR(65) NOT NULL , `Heslo` VARCHAR(32) NOT NULL , `EmailAddress` VARCHAR(255) NOT);

Vytvorenie základného súboru

Aby sme zjednodušili vytváranie nášho projektu, vytvoríme základný súbor, ktorý môžeme zahrnúť do každého súboru, ktorý vytvoríme. Tento súbor bude obsahovať informácie o pripojení k databáze spolu s určitými konfiguračnými premennými, ktoré nám pomôžu na ceste.

Začnite vytvorením nového súboru: base.php a zadajte doň nasledujúci kód:

Poďme sa pozrieť na niekoľko z týchto riadkov? Je tu niekoľko funkcií, ktoré sme použili a ešte sme ich nevysvetlili, takže si ich rýchlo prezrime a pochopme ich význam – ak už rozumiete základom PHP, možno budete chcieť toto vysvetlenie preskočiť.

Session_start();

Táto funkcia spustí reláciu pre nového používateľa a neskôr v tomto návode uložíme informácie v tejto relácii, aby sme mohli rozpoznať používateľov, ktorí sa už prihlásili. Ak už bola relácia vytvorená, táto funkcia to rozpozná a prenesie túto reláciu na ďalšiu stránku.

Mysql_connect($dbhost, $dbuser, $dbpass) or die("Chyba MySQL: " . mysql_error()); mysql_select_db($dbname) or die("Chyba MySQL: " . mysql_error());

Každá z týchto funkcií vykonáva samostatnú, ale prepojenú úlohu. Funkcia mysql_connect pripojí náš skript k databázovému serveru pomocou informácií, ktoré sme mu poskytli vyššie, a funkcia mysql_select_db potom vyberie, ktorú databázu použijeme so skriptom. Ak sa niektorá z funkcií nepodarí dokončiť, funkcia matrice automaticky zasiahne a zastaví spracovanie skriptu - všetkým používateľom zostane správa, že došlo k chybe MySQL.

Krok 2 – Späť na frontend

Čo musíme urobiť ako prvé?

Najdôležitejšou položkou na našej stránke je prvý riadok PHP; tento riadok bude obsahovať súbor, ktorý sme vytvorili vyššie (base.php), a v podstate nám umožní prístup k čomukoľvek z tohto súboru v našom aktuálnom súbore. Urobíme to s nasledujúcim riadkom kódu PHP. Vytvorte súbor s názvom index.php a umiestnite tento kód na začiatok.

Spustite stránku HTML

Prvá vec, ktorú urobíme pre náš frontend, je vytvoriť stránku, na ktorej môžu používatelia zadať svoje údaje na prihlásenie, alebo ak sú už prihlásení na stránke, môžu si vybrať, čo chcú robiť. V tomto návode predpokladám, že používatelia majú základné znalosti o fungovaní HTML/CSS, a preto nebudem tento kód podrobne vysvetľovať; v súčasnosti budú tieto prvky zbavené štýlu, ale budeme to môcť zmeniť neskôr, keď vytvoríme našu šablónu so štýlmi CSS.

Pomocou súboru, ktorý sme práve vytvorili (index.php), zadajte nasledujúci HTML kód pod riadok PHP, ktorý sme už vytvorili.

Čo im ukážeme?

Pred výstupom zvyšku stránky si musíme položiť niekoľko otázok:

  1. Je už používateľ prihlásený?
  • Áno- Musíme im ukázať stránku s možnosťami, ktoré si môžu vybrať.
  • Nie
  • Odoslal už používateľ svoje prihlasovacie údaje?
    • Áno- musíme skontrolovať ich údaje a ak sú správne, prihlásime ich na stránku.
    • Nie- pokračujeme ďalšou otázkou.
  • Ak boli zodpovedané obe vyššie uvedené Nie, môžeme teraz predpokladať, že musíme používateľovi zobraziť prihlasovací formulár.
  • Tieto otázky sú v skutočnosti rovnaké otázky, ktoré sa chystáme implementovať do nášho kódu PHP. Urobíme to vo forme príkazov if. Bez toho, aby sme čokoľvek zadávali do ktoréhokoľvek z vašich nových súborov, pozrime sa najprv na logiku, ktorú použijeme.

    Vyzerá to zmätočne, však? Rozdeľme to na menšie časti a prejdime si ich jednu po druhej.

    If(!empty($_SESSION["LoggedIn"]) && !empty($_SESSION["Username"])) ( // umožniť používateľovi prístup na hlavnú stránku )

    Keď sa používateľ prihlási na našu webovú stránku, uložíme jeho informácie v relácii – kedykoľvek potom môžeme k týmto informáciám pristupovať v špeciálnom globálnom poli PHP – $_SESSION . Na kontrolu, či je premenná prázdna, používame funkciu empty s operátorom ! pred ním. Preto hovoríme:

    Ak premenná $_SESSION["LoggedIn"] nie je prázdna a $_SESSION["Username"] nie je prázdna, vykonajte túto časť kódu.

    Ďalší riadok funguje rovnakým spôsobom, len tentoraz s použitím globálneho poľa $_POST. Toto pole obsahuje všetky údaje odoslané z prihlasovacieho formulára, ktorý vytvoríme neskôr v tomto návode. Posledný riadok sa vykoná iba vtedy, ak nie je splnený ani jeden z predchádzajúcich príkazov; v tomto prípade zobrazíme užívateľovi prihlasovací formulár.

    Takže, keď už rozumieme logike, vložme medzi tieto sekcie nejaký obsah. Vo svojom súbore index.php nižšie zadajte, čo už máte.

    Členská oblasť

    a vaša e-mailová adresa je .

    Úspech"; echo"

    Teraz vás presmerujeme do členskej oblasti.

    "; echo" ";) inak (echo"

    Chyba

    "; echo"

    Ľutujeme, váš účet sa nepodarilo nájsť. Prosím kliknite sem a skúste to znova.

    ";)) inak (?>

    Prihlásenie užívateľa

    Ďakujeme za návštevu! Prosím prihláste sa nižšie alebo kliknite sem a zaregistrujte sa.



    Dúfajme, že vás prvý a posledný blok kódu príliš nezmätie. Teraz sa naozaj musíme zaseknúť je to, kvôli čomu ste všetci prišli na tento tutoriál - kód PHP. Teraz prejdeme cez druhú sekciu jeden riadok po druhom a vysvetlím, na čo je tu každý bit kódu určený.

    $username = mysql_real_escape_string($_POST["používateľské meno"]); $password = md5(mysql_real_escape_string($_POST["heslo"]));

    Existujú dve funkcie, ktoré je potrebné vysvetliť. Po prvé, mysql_real_escape_string - veľmi užitočná funkcia na čistenie vstupu do databázy. Nie je to bezpečné opatrenie, ale ochráni sa tak pred väčšinou škodlivých hackerov tým, že odstráni nežiaduce časti všetkého, čo bolo vložené do nášho prihlasovacieho formulára. Po druhé, md5. Tu by nebolo možné zachádzať do podrobností, ale táto funkcia jednoducho zašifruje všetko, čo sa jej odovzdá – v tomto prípade heslo používateľa – aby sa zabránilo zvedavým očiam, aby to prečítali.

    $checklogin = mysql_query("SELECT * FROM users WHERE Username = "".$username."" AND Password = "".$password."""); if(mysql_num_rows($checklogin) == 1) ( $row = mysql_fetch_array($checklogin); $email = $row["EmailAddress"]; $_SESSION["Username"] = $username; $_SESSION["EmailAddress"] = $email; $_SESSION["Prihlásené"] = 1;

    Tu máme jadro nášho prihlasovacieho kódu; najprv spustíme dotaz na našu databázu. V tomto dopyte hľadáme všetko, čo sa týka člena, ktorého používateľské meno a heslo sa zhodujú s hodnotami $username a $password, ktoré používateľ zadal. V ďalšom riadku máme príkaz if, v ktorom kontrolujeme, koľko výsledkov sme dostali - ak žiadne výsledky nie sú, táto sekcia sa nespracuje. Ak však existuje výsledok, vieme, že používateľ existuje, a preto ho prihlásime.

    Nasledujúce dva riadky slúžia na získanie e-mailovej adresy používateľa. Tieto informácie už máme z dotazu, ktorý sme už spustili, takže k týmto informáciám môžeme ľahko pristupovať. Najprv získame pole údajov, ktoré boli získané z databázy - v tomto prípade používame funkciu PHP mysql_fetch_array. Potom som priradil hodnotu poľa EmailAddress do premennej, aby sme ju mohli neskôr použiť.

    Teraz nastavíme reláciu. V relácii ukladáme používateľské meno a e-mailovú adresu používateľa spolu so špeciálnou hodnotou, aby sme vedeli, že bol prihlásený pomocou tohto formulára. Po tom, čo je toto všetko povedané a urobené, bude presmerovaný do členskej oblasti pomocou META REFRESH v kóde.

    Ako teda momentálne vyzerá náš projekt pre používateľa?

    Skvelé! Teraz je čas posunúť sa ďalej, aby ste sa uistili, že ľudia sa skutočne dostanú na vašu stránku.

    Nechajte ľudí prihlásiť sa

    Mať prihlasovací formulár na vašej stránke je v poriadku, ale teraz musíme umožniť používateľom, aby ho mohli používať – musíme vytvoriť prihlasovací formulár. Vytvorte súbor s názvom register.php a vložte doň nasledujúci kód.

    Systém správy používateľov (Tom Cameron pre NetTuts)

    Chyba"; echo"

    Ľutujeme, toto používateľské meno je už zabraté. Vráťte sa späť a skúste to znova.

    "; ) else ( $registerquery = mysql_query("INSERT INTO users (Username, Password, EmailAddress) VALUES("".$username."), ".$password.", ".$email."") " ); if($registerquery) ( echo "

    Úspech

    "; echo"

    Váš účet bol úspešne vytvorený. Prosím kliknite sem pre prihlásenie.

    ";) inak (echo"

    Chyba

    "; echo"

    Ľutujeme, vaša registrácia zlyhala. Vráťte sa späť a skúste to znova.

    ";))) inak (?>

    Registrovať

    Pre registráciu zadajte svoje údaje nižšie.




    Takže v tejto časti nie je veľa nového PHP, čo sme sa ešte nenaučili. Poďme sa však rýchlo pozrieť na tento dotaz SQL a uvidíme, či dokážeme zistiť, čo robí.

    $registerquery = mysql_query("INSERT INTO users (Username, Password, EmailAddress) VALUES("".$username.", ".$password.", ".$email."")");

    Takže tu pridávame používateľa do našej databázy. Tentoraz namiesto načítania údajov ich vkladáme; takže najprv špecifikujeme, do ktorých stĺpcov údaje zadávame (nezabudnite, naše ID používateľa sa automaticky zvýši). V oblasti VALUES() sme povedať mu, čo má vložiť do každého stĺpca; v tomto prípade naše premenné, ktoré pochádzajú zo vstupu používateľa. Tak to skúsme; akonáhle si vytvoríte účet vo svojom úplne novom registračnom formulári, tu je to, čo uvidíte pre oblasť člena.

    Uistite sa, že sa môžu odhlásiť

    Už sme takmer na konci tejto časti, ale je tu ešte jedna vec, ktorú potrebujeme, kým tu skončíme – spôsob, ako sa používatelia môžu odhlásiť zo svojich účtov. Je to veľmi jednoduché (našťastie pre nás); vytvorte nový súbor s názvom logout.php a zadajte doň nasledujúce.

    V tomto najprv resetujeme naše globálne pole $_SESSION a potom reláciu úplne zničíme.

    A to je koniec tejto sekcie a koniec kódu PHP. Prejdime teraz k našej poslednej sekcii.

    Krok 3 – Upravte sa

    V tejto časti nebudem veľa vysvetľovať - ​​ak nerozumiete HTML/CSS, veľmi by som vám odporučil, kedy z mnohých vynikajúcich tutoriálov na tejto webovej stránke začať. Vytvorte nový súbor s názvom style.css a zadajte doň nasledovné; toto naštylizuje všetky stránky, ktoré sme doteraz vytvorili.

    * ( margin: 0; padding: 0; ) body ( font-family: Trebuchet MS; ) a ( color: #000; ) a:hover, a:active, a:visited (text-decoration: none; ) #main ( šírka: 780px; margin: 0 auto; margin-top: 50px; padding: 10px; border: 1px solid #CCC; background-color: #EEE; ) form fieldset ( border: 0; ) form fieldset p br ( clear: left; ) label ( margin-top: 5px; display: block; width: 100px; padding: 0; float: left; ) input ( font-family: Trebuchet MS; border: 1px solid #CCC; margin-bottom: 5px; background-color: #FFF; padding: 2px; ) input:hover ( border: 1px solid #222; background-color: #EEE; )

    Teraz sa pozrime na niekoľko snímok obrazovky, ako by mal náš finálny projekt vyzerať:

    Prihlasovací formulár.

    Členská oblasť.

    Registračný formulár.

    A nakoniec...

    A to je všetko! Teraz máte členskú oblasť, ktorú môžete použiť na svojej stránke. Vidím, ako veľa ľudí krúti hlavami a kričí na svoje monitory, že im to nie je na nič - máte pravdu. Dúfam však, že všetci začiatočníci v PHP sa naučili základy používania databázy a používania relácií na ukladanie informácií. Životne dôležité zručnosti na vytvorenie akejkoľvek webovej aplikácie.

    • Prihláste sa na odber RSS kanála NETTUTS a získajte viac denných rád a článkov o vývoji webu.

    Dnes sa pozrieme na využitie kritickej 1-dňovej zraniteľnosti v populárnom redakčnom systéme Joomla, ktorý explodoval na internete koncom októbra. Budeme hovoriť o zraniteľnosti s číslami CVE-2016-8869, CVE-2016-8870 A CVE-2016-9081. Všetky tri pochádzajú z jedného kusu kódu, ktorý sa v hlbinách frameworku ukrýval dlhých päť rokov a čakal v krídlach, aby sa potom oslobodil a priniesol so sebou chaos, hacknuté stránky a slzy nevinných používateľov tejto Joomly. Len tí najudatnejší a najodvážnejší vývojári, ktorých oči sú červené od svetla monitorov a ktorých klávesnice sú posiate omrvinkami, dokázali vyzvať zúrivých zlých duchov a položiť hlavu na oltár opráv.

    POZOR

    Všetky informácie sú poskytované len na informačné účely. Redakcia ani autor nezodpovedajú za prípadné škody spôsobené materiálmi tohto článku.

    Kde to všetko začalo

    6. októbra 2016 Demis Palma vytvoril tému na Stack Exchange, v ktorej sa pýtal: prečo vlastne v Joomla verzii 3.6 existujú dve metódy na registráciu používateľov s rovnakým menom register()? Prvý je v ovládači UsersControllerRegistration a druhý je v ovládači UsersControllerUser. Damis chcel vedieť, či bola niekde použitá metóda UsersControllerUser::register(), alebo či to bol len evolučný anachronizmus, ktorý zostal zo starej logiky. Jeho obavou bolo, že aj keď túto metódu nepoužíva žiadny pohľad, dá sa volať vytvoreným dotazom. Na čo som dostal odpoveď od vývojára pod prezývkou itoctopus, ktorý potvrdil: problém naozaj existuje. A poslal správu vývojárom Joomla.

    Potom sa udalosti vyvíjali najrýchlejšie. 18. októbra vývojári Joomly prijali správu od Damisa, ktorý v tom čase vypracoval PoC, ktorý by umožňoval registráciu používateľov. Na svojej webovej stránke zverejnil poznámku, v ktorej hovoril všeobecne o probléme, ktorý našiel, a svojich názoroch na túto záležitosť. V ten istý deň je vydaná nová verzia Joomla 3.6.3, ktorá stále obsahuje zraniteľný kód.

    Potom Davide Tampellini roztočí chybu do bodu, keď zaregistruje nie jednoduchého používateľa, ale správcu. A 21. októbra prichádza do bezpečnostného tímu Joomla nový prípad. Už hovorí o zvyšovaní privilégií. V ten istý deň sa na webovej stránke Joomla objavuje oznámenie, že v utorok 25. októbra bude vydaná ďalšia verzia so sériovým číslom 3.6.3, ktorá opravuje kritickú zraniteľnosť v jadre systému.

    25. október Tím Joomla Security Strike našiel najnovší problém vytvorený kúskom kódu, ktorý objavil Damis. Potom sa do hlavnej vetvy oficiálneho úložiska Joomla natlačí commit s dátumom 21. októbra s nenápadným názvom Prepare 3.6.4 Stable Release, ktorý nešťastnú chybu opravuje.

    Po tomto vydaní sa do komunity vývojárov pripojí množstvo zainteresovaných jednotlivcov – začnú propagovať zraniteľnosť a pripravovať exploity.

    27. októbra výskumník Harry Roberts nahrá hotový exploit do úložiska Xiphos Research, ktorý dokáže nahrať súbor PHP na server so zraniteľným CMS.

    Podrobnosti

    Pozadie je u konca, prejdime k najzaujímavejšej časti – analýze zraniteľnosti. Nainštaloval som Joomla 3.6.3 ako testovaciu verziu, takže všetky čísla riadkov budú relevantné pre túto verziu. A všetky cesty k súborom, ktoré uvidíte nižšie, budú uvedené vzhľadom na koreňový adresár nainštalovaného CMS.

    Vďaka objavu Damisa Palmu vieme, že existujú dve metódy, ktoré vykonávajú registráciu používateľov v systéme. Prvý z nich používa CMS a nachádza sa v súbore /components/com_users/controllers/registration.php:108. Druhý (ten, ktorý budeme musieť zavolať) žije v /components/com_users/controllers/user.php:293. Poďme sa na to pozrieť bližšie.

    286: /** 287: * Spôsob registrácie používateľa. 288: * 289: * @return boolean 290: * 291: * @od 1.6 292: */ 293: register verejnej funkcie () 294: ( 295: JSession::checkToken("post") alebo jexit(JText::_ ("JINVALID_TOKEN")); ... 300: // Získanie údajov formulára. 301: $data = $this->input->post->get("user", array(), "array"); . .. 315: $return = $model->validate($form, $data); 316: 317: // Kontrola chýb. 318: if ($return === false) 319: ( ... 345: / / Dokončite registráciu 346: $return = $model->register($data);

    Tu som nechal len zaujímavé riadky. Plnú verziu zraniteľnej metódy si môžete pozrieť v úložisku Joomla.

    Poďme zistiť, čo sa stane počas bežnej registrácie používateľa: aké údaje sa odosielajú a ako sa spracúvajú. Ak je v nastaveniach povolená registrácia používateľa, formulár nájdete na http://joomla.local/index.php/component/users/?view=registration.


    Legitímna žiadosť o registráciu používateľa vyzerá ako nasledujúca snímka obrazovky.


    Komponent com_users je zodpovedný za prácu s používateľmi. Venujte pozornosť parametru úlohy v požiadavke. Má formát $controller.$method . Pozrime sa na štruktúru súborov.

    Názvy skriptov v priečinku ovládače zodpovedajú menám volaných ovládačov. Keďže naša požiadavka teraz obsahuje $controller = "registrácia" , zavolá sa súbor registrácia.php a jeho metódu register().

    Pozor, otázka: ako preniesť spracovanie registrácie na zraniteľné miesto v kóde? Pravdepodobne ste to už uhádli. Názvy zraniteľných a skutočných metód sú rovnaké (register), takže stačí zmeniť názov volaného kontroléra. Kde sa nachádza náš zraniteľný kontrolór? Presne tak, v spise user.php. Ukázalo sa, že $controller = "user" . Keď všetko poskladáme, dostaneme task = user.register . Teraz je žiadosť o registráciu spracovaná metódou, ktorú potrebujeme.


    Druhá vec, ktorú musíme urobiť, je odoslať údaje v správnom formáte. Všetko je tu jednoduché. Legitimný register() od nás očakáva pole s názvom jform , do ktorého odovzdávame registračné údaje - meno, prihlasovacie meno, heslo, email (pozri snímku obrazovky so žiadosťou).

    • /components/com_users/controllers/registration.php: 124: // Získanie používateľských údajov. 125: $requestData = $this->input->post->get("jform", array(), "pole");

    Náš klient získava tieto údaje z poľa s názvom user.

    • /components/com_users/controllers/user.php: 301: // Získanie údajov formulára. 302: $data = $this->input->post->get("user", array(), "pole");

    Preto meníme názvy všetkých parametrov v požiadavke z jfrom na user .

    Naším tretím krokom je nájsť platný CSRF token, pretože bez neho nebude registrácia.

    • /components/com_users/controllers/user.php: 296: JSession::checkToken("post") alebo jexit(JText::_("JINVALID_TOKEN"));

    Vyzerá to ako MD5 hash a môžete si ho vziať napríklad z autorizačného formulára na stránke /index.php/component/users/?view=login.


    Teraz môžete vytvárať používateľov pomocou požadovanej metódy. Ak všetko fungovalo, gratulujeme - práve ste zneužili zraniteľnosť CVE-2016-8870"Chýba kontrola povolení na registráciu nových používateľov."

    Takto to vyzerá v „pracovnej“ metóde register() z radiča UsersControllerRegistration:

    • /components/com_users/controllers/registration.php: 113: // Ak je registrácia zakázaná - Presmerujte na prihlasovaciu stránku. 114: if (JComponentHelper::getParams("com_users")->get("allowUserRegistration") == 0) 115: ( 116: $this->setRedirect(JRoute::_("index.php?option=com_users&view=) login", false)); 117: 118: return false; 119: )

    A tak v zraniteľnom:

    • /components/com_users/controllers/user.php:

    Áno, v žiadnom prípade.

    Aby sme pochopili druhý, oveľa vážnejší problém, pošlime požiadavku, ktorú sme vytvorili, a pozrime sa, ako sa vykonáva v rôznych častiach kódu. Tu je časť, ktorá je zodpovedná za overenie údajov odoslaných používateľom v pracovnej metóde:

    Pokračovanie je dostupné len pre členov

    Možnosť 1. Pripojte sa ku komunite „stránky“ a prečítajte si všetky materiály na stránke

    Členstvo v komunite v určenom období vám umožní prístup ku VŠETKÝM materiálom Hackerov, zvýši vašu osobnú kumulatívnu zľavu a umožní vám nazbierať profesionálne hodnotenie Xakep Score!

    Ahoj! Teraz sa pokúsime implementovať najjednoduchšiu registráciu na stránke pomocou PHP + MySQL. Aby ste to dosiahli, musí byť na vašom počítači nainštalovaný Apache. Princíp fungovania nášho skriptu je uvedený nižšie.

    1. Začnime vytvorením tabuľky užívateľov v databáze. Bude obsahovať používateľské údaje (prihlasovacie meno a heslo). Poďme na phpmyadmin (ak vytvárate databázu na vašom PC http://localhost/phpmyadmin/). Vytvorte tabuľku používateľov, bude mať 3 polia.

    Ja ho vytvorím v databáze mysql, môžete si ho vytvoriť v inej databáze. Ďalej nastavte hodnoty ako na obrázku:

    2. Vyžaduje sa pripojenie k tejto tabuľke. Vytvorme súbor bd.php. Jej obsah:

    $db = mysql_connect("váš server MySQL","prihlásenie pre tento server","heslo pre tento server");
    mysql_select_db ("názov databázy, ku ktorej sa pripájame", $db);
    ?>

    V mojom prípade to vyzerá takto:

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

    Uložiť bd.php.
    Skvelé! V databáze máme tabuľku a spojenie s ňou. Teraz môžete začať vytvárať stránku, na ktorej používatelia zanechajú svoje údaje.

    3. Vytvorte súbor reg.php s obsahom (všetky komentáre v ňom):



    Registrácia


    Registrácia
















    4. Vytvorte súbor, ktorý zadá údaje do databázy a uloží užívateľa. save_user.php(komentáre vo vnútri):



    {
    }
    //ak je zadané prihlasovacie meno a heslo, spracujeme ich tak, aby značky a skripty nefungovali, nikdy neviete, čo môžu ľudia zadať


    //odstráni nadbytočné medzery
    $login = trim($login);
    $heslo = trim($heslo);
    // pripojenie k databáze
    // kontrola existencie používateľa s rovnakým prihlásením
    $result = mysql_query("SELECT id FROM users WHERE login="$login"",$db);
    if (!empty($myrow["id"])) (
    exit("Prepáčte, zadané prihlasovacie meno je už zaregistrované. Zadajte iné prihlasovacie meno.");
    }
    // ak to tak nie je, tak dáta uložte
    $result2 = mysql_query("INSERT INTO users (login,password) VALUES("$login","$password")");
    // Skontrolujte, či sa nevyskytli chyby
    if ($result2=="TRUE")
    {
    echo "Úspešne ste sa zaregistrovali! Teraz môžete vstúpiť na stránku. Domovská stránka";
    }
    inak(
    echo "Chyba! Nie ste zaregistrovaný.";
    }
    ?>

    5. Teraz sa môžu registrovať naši užívatelia!Ďalej musíte vytvoriť „dvere“ pre už registrovaných používateľov na vstup na stránku. index.php(komentáre vo vnútri):

    // celý postup funguje v reláciách. Je to miesto, kde sa ukladajú údaje používateľa, keď je na stránke. Je veľmi dôležité spustiť ich hneď na začiatku stránky!!!
    session_start();
    ?>


    Domovská stránka


    Domovská stránka











    Registrovať



    // Skontrolujte, či sú premenné login a user id prázdne
    if (prázdne ($_SESSION["login")] alebo prázdne ($_SESSION["id"]))
    {
    // Ak je prázdne, odkaz nezobrazujeme
    echo "Ste prihlásený ako hosť
    Tento odkaz je dostupný len pre registrovaných užívateľov“;
    }
    inak
    {

    V súbore index.php Zobrazíme odkaz, ktorý bude otvorený len pre registrovaných užívateľov. Toto je celý zmysel skriptu – obmedziť prístup k akýmkoľvek údajom.

    6. Zostáva súbor s overením zadaného loginu a hesla. testreg.php (komentáre vnútri):

    session_start();// celý postup funguje na reláciách. Je to miesto, kde sa ukladajú údaje používateľa, keď je na stránke. Je veľmi dôležité spustiť ich hneď na začiatku stránky!!!
    if (isset($_POST["login"])) ( $login = $_POST["login"]; if ($login == "") ( unset($login);) ) //zadajte prihlasovacie meno zadané používateľom používateľa do $login premennej, ak je prázdna, tak zničte premennú
    if (isset($_POST["heslo"])) ( $password=$_POST["heslo"]; if ($password =="") ( unset($password);) )
    //vložíme užívateľom zadané heslo do premennej $password, ak je prázdna, zničí premennú
    if (empty($login) alebo empty($password)) //ak používateľ nezadal prihlasovacie meno alebo heslo, vypíšeme chybu a zastavíme skript
    {
    exit("Nezadali ste všetky informácie, vráťte sa a vyplňte všetky polia!");
    }
    //ak je zadané prihlasovacie meno a heslo, spracujeme ich tak, aby značky a skripty nefungovali, nikdy neviete, čo môžu ľudia zadať
    $login = stripslashes($login);
    $login = htmlspecialchars($login);
    $heslo = stripslashes($password);
    $heslo = htmlspecialchars($heslo);
    //odstráni nadbytočné medzery
    $login = trim($login);
    $heslo = trim($heslo);
    // pripojenie k databáze
    include("bd.php");// súbor bd.php musí byť v rovnakom priečinku ako všetky ostatné, ak nie, stačí zmeniť cestu

    $vysledok = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //získať z databázy všetky údaje o užívateľovi so zadaným loginom
    $myrow = mysql_fetch_array($vysledok);
    if (empty($myrow["heslo"]))
    {
    //ak užívateľ so zadaným loginom neexistuje
    }
    inak(
    //ak existuje, skontrolujte heslá
    if ($myrow["password"]==$password) (
    //ak sa heslá zhodujú, spustíme pre používateľa reláciu! Môžete mu zablahoželať, dostal sa!
    $_SESSION["login"]=$myrow["login"];
    $_SESSION["id"]=$myrow["id"];//tieto údaje sa používajú veľmi často, takže prihlásený používateľ ich bude „nosiť so sebou“
    echo "Úspešne ste vstúpili na stránku! Domovská stránka";
    }
    inak(
    //ak sa heslá nezhodujú

    Exit ("Prepáčte, zadané prihlasovacie meno alebo heslo je nesprávne.");
    }
    }
    ?>

    OK, teraz je po všetkom! Lekcia môže byť nudná, ale veľmi užitočná. Tu je zobrazená iba myšlienka registrácie, potom ju môžete vylepšiť: pridať ochranu, dizajn, dátové polia, načítanie avatarov, odhlásenie z účtu (ak to chcete urobiť, jednoducho zničte premenné z relácie pomocou funkcie odstaviť) a tak ďalej. Veľa štastia!

    Všetko som skontroloval, funguje to správne!

    Novinka na stránke

    >

    Najpopulárnejší