Godless auth registrácia php

05.10.2015 Romčik

Dobrý deň. V tomto článku použijeme príklad na analýzu registrácie používateľa v . Potom aktivujte používateľa potvrdením jeho e-mailovej adresy. A nakoniec autorizácia používateľa v . Autorizovaní by však mali byť iba aktívni používatelia.

Prvá vec, ktorú urobíme, je vytvoriť ovládač a pohľad na registráciu.

Vytvorenie registračného formulára

Prejdite do adresára so šablónami prostriedkov a vytvorte v ňom podadresár auth. Teraz v priečinku auth vytvoríme súbor register.blade.php s nasledujúcim kódom:

Registrácia

((--Errors--)) @if ($errors->has()) ×
    @foreach($errors->all() ako $error)
  • ((( $error )))
  • @endforeach
@endif (!! csrf_field() ! Email Пароль Повторите пароль Отправить !}

Nebudem vysvetľovať kód vyššie, tu je všetko jasné.

App/Http/Controllers/Auth/AuthController.php

Prepíšeme iba metódy ovládača AuthController.php. Na zobrazenie registračného formulára teda existuje metóda getRegister. Tejto metódy sa nedotýkame.

Teraz prejdime k trasám. Otvorte súbor:

A definujte cestu k našej metóde:

Route::get("auth/register", "Auth\AuthController@getRegister");

Teraz otvorme našu aplikáciu v prehliadači. Skvelé, vidíme registračný formulár.

Registrácia užívateľa v

Okamžite definujme cestu pre registráciu používateľa. Poďme k súboru:

App/Http/Controllers/routes.php

A pridajte nasledujúcu trasu:

Route::post("auth/register", "Auth\AuthController@postRegister");

Teraz vytvorte tabuľku na uloženie používateľov. Pre túto tabuľku už existuje migrácia, ale pre nás nie je vhodná. Poďme to zmeniť. Poďme k súboru:

Database/migrations/2014_10_12_create_users_table.php

A poďme zmeniť kód:

V mojom prípade to vyzerá takto:

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


Vaše prihlasovacie meno:




Tvoje heslo:








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

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 vnútri):




Domovská stránka


Domovská stránka


Vaše prihlasovacie meno:


Tvoje heslo:






Registrovať



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ť bezpečnosť, dizajn, dátové polia, načítať avatarov, odhlásiť sa z účtu (na tento účel jednoducho zničte premenné z relácie pomocou funkcie unset) a tak ďalej. Veľa štastia!

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

V tomto článku sa dozviete, ako vytvoriť registračný a prihlasovací formulár pomocou HTML, JavaScript, PHP a MySql. Takéto formuláre sa používajú takmer na každej webovej stránke bez ohľadu na jej typ. Sú vytvorené pre fórum, internetový obchod, sociálne siete (napríklad Facebook, Twitter, Odnoklassniki) a mnoho ďalších typov stránok.

Ak máte webovú stránku na svojom lokálnom počítači, dúfam, že už máte nainštalovaný a spustený lokálny server. Bez toho nebude fungovať nič.

Vytvorenie tabuľky v databáze

Na implementáciu registrácie používateľov potrebujeme v prvom rade Databázu. Ak ho už máte, je to skvelé, inak si ho musíte vytvoriť. V článku podrobne vysvetľujem, ako to urobiť.

A tak máme Databázu (skrátene DB), teraz musíme vytvoriť tabuľku používateľov do ktorého budeme pridávať našich registrovaných užívateľov.

V článku som tiež vysvetlil, ako vytvoriť tabuľku v databáze. Pred vytvorením tabuľky si musíme určiť, aké polia bude obsahovať. Tieto polia budú zodpovedať poliam z registračného formulára.

Pomysleli sme si, predstavili sme si, aké polia bude mať náš formulár a vytvorili sme tabuľku používateľov s týmito poliami:

  • id- Identifikátor. Lúka id Každá tabuľka v databáze by ho mala mať.
  • krstné meno- Ak chcete uložiť meno.
  • priezvisko- Zachovať priezvisko.
  • email- Na uloženie poštovej adresy. Ako prihlásenie použijeme e-mail, takže toto pole musí byť jedinečné, to znamená, že musí mať UNIKÁTNY index.
  • stav_e-mailu- Pole na označenie, či je e-mail potvrdený alebo nie. Ak je e-mail potvrdený, bude mať hodnotu 1, inak bude mať hodnotu 0.
  • heslo- Na uloženie hesla.


Ak chcete, aby váš registračný formulár obsahoval aj ďalšie polia, môžete ich pridať aj tu.

To je všetko, náš stôl používateľov pripravený. Prejdime k ďalšej fáze.

Pripojenie k databáze

Vytvorili sme databázu, teraz sa k nej potrebujeme pripojiť. Pripojíme sa pomocou PHP rozšírenia MySQLi.

V priečinku našej stránky vytvorte súbor s názvom dbconnect.php a napíšte do neho nasledujúci skript:

Tento súbor dbconnect.php bude potrebné pripojiť k obslužným programom formulárov.

Všimnite si premennú $address_site, tu som uviedol názov mojej testovacej stránky, na ktorej budem pracovať. Označte podľa toho názov svojej stránky.

Štruktúra stránky

Teraz sa pozrime na štruktúru HTML našej stránky.

Hlavičku a pätu stránky presunieme do samostatných súborov, hlavička.php A footer.php. Zahrnieme ich na všetky strany. Konkrétne na hlavnej stránke (súbor index.php), na stránku s registračným formulárom (súbor formulár_register.php) a na stránku s autorizačným formulárom (súbor form_auth.php).

Blokujte pomocou našich odkazov, registrácia A autorizáciu, pridajte ich do hlavičky lokality, aby sa zobrazovali na všetkých stránkach. Jeden odkaz vstúpi na stránku s registračným formulárom (súbor formulár_register.php) a druhý na stránku s autorizačným formulárom (súbor form_auth.php).

Obsah súboru header.php:

Názov našej stránky

V dôsledku toho naša hlavná stránka vyzerá takto:


Samozrejme, vaša stránka môže mať úplne inú štruktúru, ale to pre nás teraz nie je dôležité. Hlavná vec je, že existujú odkazy (tlačidlá) na registráciu a autorizáciu.

Teraz prejdime k registračnému formuláru. Ako ste už pochopili, máme to v záznamoch formulár_register.php.

Prejdite do databázy (v phpMyAdmin), otvorte štruktúru tabuľky používateľov a pozrite sa, aké polia potrebujeme. To znamená, že potrebujeme polia na zadanie mena a priezviska, pole na zadanie poštovej adresy (Email) a pole na zadanie hesla. A z bezpečnostných dôvodov pridáme pole na zadanie captcha.

Na serveri sa v dôsledku spracovania registračného formulára môžu vyskytnúť rôzne chyby, kvôli ktorým sa používateľ nebude môcť zaregistrovať. Preto, aby používateľ pochopil, prečo registrácia zlyhá, je potrebné zobraziť správy o týchto chybách.

Pred zobrazením formulára pridajte blok na zobrazenie chybových hlásení z relácie.

A ešte jedna vec, ak je používateľ už autorizovaný a zo zvedavosti prejde na registračnú stránku priamo napísaním do adresného riadku prehliadača site_address/form_register.php, potom v tomto prípade namiesto registračného formulára zobrazíme hlavičku, že už je zaregistrovaný.

Vo všeobecnosti kód súboru formulár_register.php dostali sme toto:

Už si zaregistrovaný

V prehliadači vyzerá stránka s registračným formulárom takto:


Použitím požadovaného atribútu sme urobili všetky polia povinnými.

Venujte pozornosť kódu registračného formulára, kde sa zobrazuje captcha:


Cestu k súboru sme špecifikovali v hodnote atribútu src pre obrázok captcha.php, ktorý generuje tento captcha.

Pozrime sa na kód súboru captcha.php:

Kód je dobre komentovaný, takže sa zameriam len na jeden bod.

Vo vnútri funkcie imageTtfText(), je určená cesta k písmu verdana.ttf. Aby captcha fungovala správne, musíme vytvoriť priečinok písma a umiestnite tam súbor písma verdana.ttf. Môžete ho nájsť a stiahnuť z internetu alebo si ho vziať z archívu s materiálmi tohto článku.

So štruktúrou HTML sme skončili, je čas posunúť sa ďalej.

Kontrola platnosti emailu pomocou jQuery

Každý formulár potrebuje skontrolovať platnosť zadaných údajov, a to na strane klienta (pomocou JavaScriptu, jQuery) aj na strane servera.

Osobitnú pozornosť musíme venovať poľu Email. Je veľmi dôležité, aby bola zadaná poštová adresa platná.

Pre toto vstupné pole nastavujeme typ emailu (type="email"), čo nás mierne varuje pred nesprávnym formátom. To však nestačí, pretože prostredníctvom inšpektora kódu, ktorý nám prehliadač poskytuje, môžeme ľahko zmeniť hodnotu atribútu typu s email na text, a to je všetko, náš šek už nebude platný.


A v tomto prípade musíme vykonať spoľahlivejšiu kontrolu. Na to nám poslúži knižnica jQuery z JavaScriptu.

Ak chcete pripojiť knižnicu jQuery, v súbore hlavička.php medzi značkami , pred záverečnou značkou , pridajte tento riadok:

Ihneď za tento riadok pridáme overovací kód emailu. Tu pridáme kód na kontrolu dĺžky zadaného hesla. Jeho dĺžka musí byť aspoň 6 znakov.

Pomocou tohto skriptu skontrolujeme platnosť zadanej emailovej adresy. Ak používateľ zadal nesprávny e-mail, zobrazíme o tom chybové hlásenie a vypneme tlačidlo odoslania formulára. Ak je všetko v poriadku, chybu odstránime a aktivujeme tlačidlo odoslania formulára.

A tak sme skončili s validáciou formulára na strane klienta. Teraz to môžeme poslať na server, kde tiež urobíme pár kontrol a pridáme dáta do databázy.

Registrácia používateľa

Formulár odosielame do súboru na spracovanie register.php, prostredníctvom metódy POST. Názov tohto súboru obslužného programu je uvedený v hodnote atribútu akcie. A spôsob odoslania je špecifikovaný v hodnote atribútu metóda.

Otvorte tento súbor register.php a prvá vec, ktorú musíme urobiť, je napísať funkciu spustenia relácie a pripojiť súbor, ktorý sme vytvorili predtým dbconnect.php(V tomto súbore sme vytvorili pripojenie k databáze). A tiež okamžite vyhlásime bunky chybové_správy A úspešné_správy v poli globálnej relácie. IN error_mesages zaznamenáme všetky chybové hlásenia, ktoré sa vyskytnú počas spracovania formulára a v succes_messages, budeme zaznamenávať radostné správy.

Skôr ako budeme pokračovať, musíme skontrolovať, či bol formulár vôbec odoslaný. Útočník sa môže pozrieť na hodnotu atribútu akcie z formulára a zistite, ktorý súbor tento formulár spracúva. A môže mať nápad prejsť priamo na tento súbor zadaním nasledujúcej adresy do panela s adresou prehliadača: http://adresa_stránky/register.php

Musíme teda skontrolovať bunku v globálnom poli POST, ktorej názov sa zhoduje s názvom nášho tlačidla „Registrovať“ z formulára. Takto skontrolujeme, či bolo kliknuté na tlačidlo "Registrovať" alebo nie.

Ak sa útočník pokúsi prejsť priamo k tomuto súboru, zobrazí sa mu chybové hlásenie. Pripomínam, že premenná $address_site obsahuje názov stránky a bola deklarovaná v súbore dbconnect.php.

Hodnota captcha v relácii bola pridaná pri jej vygenerovaní do súboru captcha.php. Pre pripomenutie vám znova ukážem tento kúsok kódu zo súboru captcha.php, kde sa k relácii pridá hodnota captcha:

Teraz prejdime k samotnému overovaniu. V súbore register.php, vo vnútri bloku if, kde skontrolujeme, či bolo kliknuté na tlačidlo "Registrovať", alebo skôr, kde je uvedený komentár "" // (1) Priestor pre ďalšiu časť kódu"píšeme:

//Skontrolujte prijaté captcha //Orežte medzery od začiatku a konca riadku $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Porovnajte prijatú hodnotu s hodnotou z relácie. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Ak captcha nie je správny, vrátime používateľa na registračnú stránku a tam mu zobrazíme chybovú správu, že zadal nesprávny obrázok captcha $error_message = "

Chyba! Zadali ste nesprávny obrázok captcha

"; // Uložte chybovú správu do relácie. $_SESSION["error_messages"] = $error_message; // Vráťte používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: " .$address_site ."/form_register.php"); //Zastavenie skriptu exit(); ) // (2) Miesto pre ďalšiu časť kódu )else( //Ak captcha neprejde alebo je prázdny, ukončite ("

Chyba! Neexistuje žiadny overovací kód, teda captcha kód. Môžete prejsť na hlavnú stránku.

"); }

Ďalej musíme spracovať prijaté dáta z poľa POST. V prvom rade musíme skontrolovať obsah globálneho poľa POST, teda či sa tam nachádzajú bunky, ktorých názvy zodpovedajú názvom vstupných polí z nášho formulára.

Ak bunka existuje, odrežeme medzery od začiatku a konca riadku z tejto bunky, inak používateľa presmerujeme späť na stránku s registračným formulárom.

Ďalej po orezaní medzier pridáme riadok do premennej a skontrolujeme, či táto premenná nie je prázdna, ak nie je prázdna, ideme ďalej, inak užívateľa presmerujeme späť na stránku s registračným formulárom.

Vložte tento kód na určené miesto" // (2) Priestor pre ďalšiu časť kódu".

/* Skontrolujte, či existujú údaje odoslané z formulára v globálnom poli $_POST a zabaľte odoslané údaje do bežných premenných.*/ if(isset($_POST["first_name"]))( //Orezať medzery od začiatku a koniec reťazca $first_name = trim($_POST["first_name"]); //Skontrolujte, či je premenná prázdna if(!empty($first_name))( // Pre istotu skonvertujte špeciálne znaky na entity HTML $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // Uloženie chybovej správy do relácie. $_SESSION["error_messages"] .= "

Zadajte svoje meno

Chýba pole s názvom

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) if( isset($_POST["priezvisko"]))( //Orezať medzery od začiatku a konca riadku $priezvisko = trim($_POST["priezvisko"]); if(!empty($priezvisko)) ( // Kvôli bezpečnosti konvertujte špeciálne znaky na HTML entity $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Uložte chybovú správu do relácie. $_SESSION["error_messages"] .= "

Zadajte svoje priezvisko

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) )else ( // Uložte chybovú správu do relácie. $_SESSION["error_messages"] .= "

Chýba pole priezviska

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) if( isset($_POST["email"]))( //Orezať medzery od začiatku a konca riadku $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) Umiestnenie kódu na kontrolu formátu e-mailovej adresy a jej jedinečnosti )else( // Uložte chybovú správu do relácie. $_SESSION["error_messages"] .="

Zadajte svoj e-mail

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) )else ( // Uložte chybovú správu do relácie. $_SESSION["error_messages"] .= "

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) if( isset($_POST["heslo"]))( //Orezať medzery od začiatku a konca reťazca $password = trim($_POST["heslo"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //Zašifrovať heslo $password = md5($password."top_secret"); )else( // Uložiť chybovú správu do relácie. $_SESSION["error_messages"] .="

Zadajte svoje heslo

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) )else ( // Uložte chybovú správu do relácie. $_SESSION["error_messages"] .= "

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) // (4) Miesto pre kód na pridanie užívateľa do databázy

Mimoriadne dôležité je pole email. Musíme skontrolovať formát prijatej poštovej adresy a jej jedinečnosť v databáze. To znamená, je už zaregistrovaný nejaký používateľ s rovnakou e-mailovou adresou?

Na určenom mieste" // (3) Umiestnenie kódu na kontrolu formátu poštovej adresy a jej jedinečnosti“ pridajte nasledujúci kód:

//Skontrolujte formát prijatej e-mailovej adresy pomocou regulárneho výrazu $reg_email = "/^**@(+(*+)*\.)++/i"; //Ak sa formát prijatej e-mailovej adresy nezhoduje s regulárnym výrazom if(!preg_match($reg_email, $email))( // Uložte chybovú správu do relácie. $_SESSION["error_messages"] .= "

Zadali ste nesprávny email

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); ) // Skontrolujeme, či sa takáto adresa už nachádza v databáze. $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email."""); / /Ak je počet prijatých presne jeden riadok, čo znamená, že používateľ s touto e-mailovou adresou je už zaregistrovaný if($result_query->num_rows == 1)( //Ak výsledný výsledok nie je nepravdivý if(($row = $result_query->fetch_assoc()) != false) ( // Uložte chybovú správu do relácie. $_SESSION["error_messages"] .= "

Používateľ s touto e-mailovou adresou je už zaregistrovaný

"; //Vrátiť používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); )else( // Uložiť chybové hlásenie do relácie . $_SESSION["error_messages"] .= "

Chyba v databázovom dotaze

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); ) /* zatvorenie výberu */ $ result_query-> close(); //Zastavenie skriptu exit(); ) /* zatvorenie výberu */ $result_query->close();

A tak sme skončili so všetkými kontrolami, je čas pridať používateľa do databázy. Na určenom mieste" // (4) Miesto pre kód na pridanie užívateľa do databázy“ pridajte nasledujúci kód:

//Dopyt na pridanie používateľa do databázy $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, last_name, email, password) VALUES ("".$first_name."", "".$last_name ." ", ".$email.", ".$heslo."")"); if(!$result_query_insert)( // Uloženie chybovej správy do relácie. $_SESSION["error_messages"] .= "

Chyba v požiadavke na pridanie používateľa do databázy

"; //Vrátenie používateľa na hlavičku registračnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_register.php"); //Zastavenie skriptu exit(); )else( $_SESSION["success_messages"] = "

Registrácia úspešne dokončená!!!
Teraz sa môžete prihlásiť pomocou svojho používateľského mena a hesla.

"; //Odoslanie používateľa na hlavičku autorizačnej stránky("HTTP/1.1 301 Presunuté natrvalo"); header("Umiestnenie: ".$address_site."/form_auth.php"); ) /* Dokončenie požiadavky */ $ result_query_insert-> close(); //Ukončenie pripojenia k databáze $mysqli->close();

Ak sa v požiadavke na pridanie používateľa do databázy vyskytla chyba, do relácie pridáme správu o tejto chybe a používateľa vrátime na registračnú stránku.

V opačnom prípade, ak všetko prebehlo v poriadku, pridáme do relácie aj správu, ale tentokrát je to príjemnejšie, konkrétne povieme používateľovi, že registrácia prebehla úspešne. A presmerujeme ho na stránku s autorizačným formulárom.

Skript na kontrolu formátu e-mailovej adresy a dĺžky hesla je v súbore hlavička.php, tak to bude platiť aj pre polia z tohto formulára.

Relácia sa spustí aj v súbore hlavička.php, teda v súbore form_auth.php Nie je potrebné spustiť reláciu, pretože dostaneme chybu.


Ako som už povedal, funguje tu aj skript na kontrolu formátu emailovej adresy a dĺžky hesla. Ak teda používateľ zadá nesprávnu emailovú adresu alebo krátke heslo, okamžite dostane chybové hlásenie. Tlačítko vstúpiť sa stane neaktívnym.

Po odstránení chýb tlačidlo vstúpiť sa stane aktívnym a používateľ bude môcť odoslať formulár na server, kde bude spracovaný.

Autorizácia užívateľa

Pripisovať hodnotu akcie autorizačný handicap má špecifikovaný súbor auth.php, to znamená, že formulár bude spracovaný v tomto súbore.

A tak otvorte súbor auth.php a napíšte kód na spracovanie autorizačného formulára. Prvá vec, ktorú musíte urobiť, je spustiť reláciu a pripojiť súbor dbconnect.php na pripojenie k databáze.

Keď kliknete na výstupný odkaz zo stránky, prejdete do súboru odhlásiť.php, kde jednoducho zničíme bunky s emailovou adresou a heslom z relácie. Potom vrátime používateľa späť na stránku, na ktorej bol odkaz kliknutý VÝCHOD.

Kód súboru logout.php:

To je všetko. Teraz viete, ako implementovať a spracovať formuláre registrácie a autorizácie používateľov na vašej webovej stránke. Tieto formuláre sa nachádzajú takmer na každej webovej stránke, takže každý programátor by mal vedieť, ako ich vytvoriť.

Naučili sme sa tiež validovať vstupné dáta, a to ako na strane klienta (v prehliadači, pomocou JavaScriptu, jQuery), tak aj na strane servera (pomocou PHP). Naučili sme sa tiež, ako zaviesť postup pri opustení lokality.

Všetky skripty boli testované a fungujú. Archív so súbormi tejto malej stránky si môžete stiahnuť z tohto odkazu.

V budúcnosti napíšem článok, kde popíšem. A tiež plánujem napísať článok, kde vysvetlím (bez opätovného načítania stránky). Takže, aby ste boli informovaní o vydaní nových článkov, môžete sa prihlásiť na odber mojej webovej stránky.

Ak máte nejaké otázky, kontaktujte ma a ak si všimnete nejakú chybu v článku, dajte mi vedieť.

Plán lekcie (5. časť):

  • Vytvorenie štruktúry HTML pre autorizačný formulár
  • Prijaté údaje spracovávame
  • V hlavičke stránky zobrazíme pozdrav používateľa
  • Páčil sa vám článok?

    Naučíme sa, ako vykonať jednoduchú autentifikáciu používateľa na stránke. Stránka môže mať stránky len pre oprávnených používateľov a budú plne fungovať, ak na ne pridáme náš autentifikačný blok. Na jej vytvorenie potrebujete databázu MySQL. Môže mať 5 stĺpcov (minimálne) alebo viac, ak chcete pridať informácie o používateľoch. Databázu nazvime „Userauth“.

    Vytvorme si v ňom polia: ID pre počítanie používateľov, UID pre jedinečné identifikačné číslo používateľa, Používateľské meno pre meno používateľa, Email pre jeho emailovú adresu a Heslo pre heslo. Na autorizáciu používateľa môžete použiť svoju existujúcu databázu, stačí v nej, ako v prípade novej databázy, vytvoriť nasledujúcu tabuľku.

    MySQL kód

    CREATE TABLE `users` (`ID` int (11) NOT NULL AUTO_INCREMENT, `UID` int (11) NOT NULL, `Username` text NOT NULL, `Email` text NOT NULL, `Pasword` text NOT NULL, PRIMARY KEY (`ID`)) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    Teraz vytvoríme súbor "sql.php". Je zodpovedný za pripojenie k databáze. Tento kód po prvé vytvára premenné pre server a používateľa, keď sa pripojí k serveru. Po druhé, vyberie databázu, v tomto prípade "USERAUTH". Tento súbor musí byť súčasťou "log.php" a "reg.php" pre prístup k databáze.

    PHP kód

    Ďalej je prihlasovacia stránka, nech sa volá “login.php”. Najprv skontroluje chyby zadaných údajov. Stránka obsahuje polia pre používateľské meno, heslo, tlačidlo Odoslať a registračný odkaz. Keď používateľ klikne na tlačidlo „Prihlásiť sa“, formulár bude spracovaný kódom zo súboru „log.php“ a následne prihlásený.

    PHP kód

    Prihlasovací formulár

    Používateľské meno
    heslo
    Registrácia

    Potom napíšeme skript na prihlásenie do systému. Nazvime to "log.php". Má funkciu na vyčistenie vstupných údajov z injekcií SQL, ktoré môžu zničiť váš skript. Po druhé, dostane údaje formulára a skontroluje ich správnosť. Ak sú zadané údaje správne, skript pošle užívateľa na stránku autorizovaných užívateľov, ak nie, nastaví chyby a pošle užívateľa na prihlasovaciu stránku.

    PHP kód

    Urobme si registračnú stránku, nazvime ju „register.php“. Podobá sa na prihlasovaciu stránku, len má o niečo viac políčok a namiesto registračného odkazu je tam odkaz na login.php v prípade, že používateľ už má účet.

    PHP kód

    Registračný formulár

    Používateľské meno
    Email
    heslo
    zopakujte heslo
    Mám účet

    Teraz vytvoríme registračný skript v súbore „reg.php“. Bude obsahovať "sql.php" na pripojenie k databáze. Na vymazanie vstupného poľa sa používa rovnaká funkcia ako v prihlasovacom skripte. Pre možné chyby sú nastavené premenné. Ďalej je funkcia na vytvorenie jedinečného identifikátora, ktorý nikdy predtým nebol poskytnutý. Údaje z registračného formulára sú následne extrahované a overené. Skontroluje sa, či je e-mailová adresa v správnom formáte a či je heslo znova správne zadané. Skript následne skontroluje, či sa v databáze nenachádza používateľ s rovnakým menom a ak áno, ohlási chybu. Nakoniec kód pridá používateľa do databázy.

    PHP kód

    Musíte tiež vytvoriť skript na odhlásenie používateľa zo systému. Ukončí reláciu používateľa s daným jedinečným ID a menom a potom používateľa presmeruje na prihlasovaciu stránku.

    PHP kód

    Nakoniec je možné použiť skript "auth.php" na sprístupnenie stránok iba oprávneným používateľom. Skontroluje prihlasovacie údaje a v prípade, že sú správne, umožní užívateľovi prehliadať stránky, ak nie, vyzve ho na prihlásenie. Navyše, ak sa niekto pokúsi hacknúť stránku vytvorením jednej z relácií, bude prerušená, ako vo všeobecnom prípade.

    PHP kód

    Jedna z podmienok v kóde vyššie je predmetom otázky v .

    Nasledujúci kód je potrebné vložiť na stránku pre oprávnených používateľov, volá sa napríklad “member.php”, ale ten váš sa môže volať akokoľvek.

    PHP kód

    Máte oprávnenie na prístup k tejto stránke. Choď von ( )

    Overenie používateľa je pripravené!

    Naposledy upravené 5. apríla 2018 používateľom Vincy.

    Prihlásenie a registrácia užívateľa je základnou požiadavkou pre akúkoľvek CMS aplikáciu. Toto je počiatočná práca pri spustení projektu. Aplikácia s overením prihlásenia používateľa poskytuje bezpečnosť tým, že zabraňuje anonymnému prístupu. Existujú rôzne spôsoby, ako povoliť autentifikáciu v našej aplikácii, napríklad povolením prihlásenia OAuth alebo implementáciou jednotného prihlásenia (SSO) a podobnými inými spôsobmi. V predchádzajúcom tutoriále sme videli, ako implementovať a tiež o.

    Tento príklad zahŕňa prihlasovacie aj registračné funkcie. Na uloženie registrovaných členov som použil databázu MySQL. Registrácia používateľa bude obsahovať vstup na získanie podrobností od používateľa. Po odoslaní tohto formulára sú údaje formulára odoslané do PHP a uložené v databáze. Používateľské heslo bude pred uložením do databázy zašifrované. pred odoslaním do kódu PHP. Keď je používateľ prihlásený s platnými prihlasovacími údajmi, bude používateľovi a jemu umožnené pokračovať ďalej.

    Registračný formulár používateľa

    Tento kód slúži na zobrazenie registračného formulára používateľovi. Keď používateľ odošle formulár so svojimi údajmi, zavolá sa funkcia JavaScript na overenie používateľského vstupu. Po úspešnom overení kód PHP načíta údaje zaslaného formulára, aby vykonal vloženie databázy.