Pripravený autorizačný formulár php mysql. Vytvárame neuveriteľne jednoduchý registračný systém v PHP a MySQL

  • 20.05.2019

Existuje teda úloha - vykonať registráciu v systéme a možnosť autorizácie. Ako to spraviť? Začnime v poriadku.

Registrácia php

Všetko je tu jednoduché. Vytvára sa dátový sklad pre používateľov. Zvyčajne ide o databázovú tabuľku. Zahŕňa polia ako id, užívateľské meno a heslo. Ostatné polia sú voliteľné. Môžete zbierať e-maily používateľov, ich adresy, možnú IP, čas prístupu do siete, kódové slová z bankových kariet, tajné otázky ...

Vo všeobecnosti je hlavnou vecou dvojica prihlasovacie meno a heslo.

Prvý dôležitý bod- nemôžete ukladať používateľské heslá ako čistý text. Teda ako text. Je to nemožné, pretože ak niekto mimo získa prístup do databázy, dostane databázu hesiel používateľských mien, ktoré sa mu pravdepodobne nebudú páčiť. A ak vezmete do úvahy, že prihlasovacie heslo pre mnohých používateľov rôznych služieb je rovnaké - ohrozuje to osobné údaje a financie, osobnú korešpondenciu a čokoľvek iné.

Heslá musia byť uložené ako hash. Hašovanie Je operácia, ktorá premení pôvodné údaje na nejaký druh obsadenia známej dĺžky. To je dobré, pretože herecké obsadenie je jedinečné. To znamená, že ak zmeníme aspoň jeden znak v pôvodných dátach, snímka na výstupe z hašovacej operácie sa ukáže úplne, na nepoznanie ostatnými. Operácia hash je nevratná, to znamená, že z tohto nugetu nebude možné rozšíriť pôvodné údaje. Takto sa líši od šifrovania.

MySQL a php zdieľajú rovnakú bežnú a bezpečnú funkciu hash - md5. Tento algoritmus získava údaje a vytvára odtlačok prsta.

Takže dostávame údaje od používateľa, skontrolujte, či sú prázdne, či neobsahujú žiadne znaky, ktoré nepotrebujeme (používateľov príliš neobmedzujte). A teraz požadujeme takto:

INSERT INTO `users` (` id`, `username`,` password`) VALUES ("", $ quoted_username, MD5 ($ quoted_password));

Vezmite prosím na vedomie - premenné som konkrétne pomenoval $ quoted_, pretože predtým, ako ich vtlačíte do dotazu, je potrebné ich uniknúť pomocou funkcie mysql_real_escape_string (). Pretože je táto funkcia veľmi často používaná a je napísaná veľmi dlho (milujem architektov pkhp) - odporúčam vtesnať ju do svojej schránky. Napríklad takto:

Cenová ponuka funkcií ($ var) (návrat mysql_real_escape_string ($ var);)

Prihlásenie pomocou php

Pridali sme nového používateľa a teraz je autorizovaný. Nakreslíme mu formulár na prihlásenie a heslo a zachytíme jeho údaje. Čo bude ďalej? Koniec koncov, heslo k nám prišlo vo forme čistého textu a v databáze - heslo hash. Musíte konvertovať heslo na hash a potom ich porovnať? Nie, môžete to urobiť jednoduchšie - na jednu žiadosť.

SELECT * FROM `users` WHERE` login` = $ qoted_login AND` password` = MD5 ($ quoted_password);

Ak žiadosť vráti reťazec, bude to reťazec s údajmi používateľa. Ak nie, v tabuľke nie je žiadny takýto používateľ. Údaje o používateľoch sú pre nás veľmi užitočné - stojí za to dostať ich do asociatívneho poľa.

Zapamätať si používateľa

Teraz si musíme uvedomiť, že používateľ má oprávnenie a musí presne vedieť, o koho ide. Prvá vec, ktorá vás napadne, je použitie súborov cookie. Skutočne - vtesnať používateľské meno a ID používateľa do súboru cookie a vždy vedieť, kto v súčasnosti požaduje stránku.

Ale toto je brutálny postup. Prečo? Pretože cookie je súbor, ktorý si užívateľ uloží do prehliadača a údaje z tohto súboru sa prenášajú na server pri každej požiadavke. Najskôr sa prenášajú ako text, čo znamená, že sa dajú ľahko zachytiť. Po druhé, ide o jednoduchý text odoslaný používateľom. Preto sa dá doslova prepísať. Napríklad, ak sa rozhodneme uložiť používateľské meno „Vasya“ do súborov cookie, môže vo svojom prehliadači otvoriť správu súborov cookie, nájsť požadovaný súbor cookie a opraviť ho napríklad na „Správca“. A to je všetko. Teraz s každou požiadavkou dostaneme cookie, ktoré nám oznámi užívateľské meno používateľa - „Admin“.

Preto je bezpečnejšie ukladať všetky dáta na serveri na miesto nedostupné z webu. V niektorých priečinkoch, ku ktorým nie je možné získať prístup z prehľadávača. Do tohto priečinka musíte napísať všetky údaje o používateľovi a odtiaľ ich načítať vždy, keď požaduje dokument. Ak chcete zistiť, ktorý používateľ vlastní ktorý dátový súbor, musíte súboru nazvať jedinečné meno a vložiť ho do súboru cookie pre používateľa. Používateľ teda nebude môcť zistiť, ako sa tento súbor volá pre používateľa Admin - tento súbor vygeneruje systém na serveri. A to vám umožní ťahať z dokumentu do dokumentu aj jasné heslá.

Čo som popísal je mechanizmus relácie... Napríklad v Perle musíte načítať moduly, aby ste mohli používať relácie. A v php sú relácie podporované po vybalení z krabice. Všetko, čo potrebujete vedieť, je vlastne funkcia session_start () a pole $ _SESSION. Je to všetko. To ti teraz poviem.

V každom skripte, do ktorého budete písať alebo čítať z relácie, potrebujete skôr ako zobrazíte akékoľvek informácie zavolajte funkciu session_start (). Tým sa zaháji relácia. Táto funkcia vytvorí súbor relácie, ak neexistuje, alebo ju načíta, ak bol do skriptu odovzdaný špeciálny súbor cookie.

Ak chcete zapísať údaje do relácie, stačí ich zapísať do poľa $ _SESSION. Teraz si musíme pamätať ID používateľa.

$ _SESSION ["userid"] = $ userinfo ["id"];

Všetko. Teraz, keď používateľ požiada o skript, ktorý používa relácie, bude vám k dispozícii hodnota prvku $ _SESSION [„userid“].

Preto keď používateľ zadal prihlasovacie meno a heslo, dostali sme jeho údaje z databázy, ktorá potvrdzuje, že sa takýto používateľ nachádza v našej databáze, v relácii si ho zapamätáme.

Zistite, či je používateľ oprávnený

No, to je naozaj ľahké! Teraz, keď viete, ako fungujú relácie, je zistenie, či je používateľ prihlásený, otázkou jedného riadku. Tu je:

If (isset ($ _ SESSION ["userid"])) (print "user is authorized";)

Ak je v relácii definované ID užívateľa, už prešlo autorizáciou. Ako však zistiť, o ktorého používateľa ide? Aké je jeho užívateľské meno? Dátum narodenia? Kódové slovo pre bankovú kartu? Meno matky zaslobodna?

Je zrejmé, že - urobte jeden dotaz do tabuľky používateľov. Máme identifikačné číslo tohto používateľa.

SELECT * FROM `users` WHERE` id` = $ quoted_userid

Ako sa odhlásiť používateľa, odhlásiť sa

No je to naozaj celkom jednoduché. Ak určíme, či je používateľ autorizovaný prítomnosťou identifikácie používateľa v relácii, potom ho z neho musíme odhlásiť. Robí sa to takto:

Zrušené nastavenie ($ _ SESSION ["userid"]);

Reláciu môžete tiež zabiť pre vernosť. Toto vymaže cookie používateľa a zničí súbor relácie na serveri. V takom prípade sa z neho stratia všetky údaje. Robí sa to takto:

Session_destroy ();

To je všetko. V prípade akýchkoľvek otázok nás neváhajte kontaktovať. Okrem toho ma môžete kontaktovať icq alebo poštou a požiadať o pomoc s niečím. Väčšinou neodmietam. Ak je potrebná vážna pomoc, môžem požiadať o malú platbu. Okrem toho vás môžem naučiť, ako vytvárať webové stránky na diaľku! Takto som kouč a guru :) A ak chcete dostávať lekcie a triky len tak, zadarmo - prihláste sa na odber môjho blogu RSS.

Sponzorom tohto príspevku je ibooknet.ru, ktorý ponúka opravy notebookov za pekné ceny. Osobne mám notebook v poriadku a dúfam, že ho nebudem musieť opravovať. Čo je to, čo vám prajem.

Každý, kto skôr alebo neskôr vytvorí webové stránky, stojí pred takouto úlohou ako autorizácia a autentifikácia používateľa implementované pomocou programovacieho jazyka a nie pomocou štandardu protokolu http. Dnes sa pozrieme na príklad vytvorenia jednoduchej autorizácie pomocou programovacieho jazyka PHP a budeme ukladať užívateľské údaje do databázy MySQL.

Metóda uvedená nižšie je jednoduchý alebo akoby základom pre vytvorenie normálnej autorizácie, ale môžete ju celkom použiť, pretože funguje celkom dobre, môžete túto metódu aj vylepšiť a implementovať na svoje stránky.

Táto metóda je založená na reláciách, ale tu používam aj súbory cookie, aby si prehliadač pamätal používateľa, ktorý sa naposledy autentizoval, takže zakaždým, keď nezadáte prihlasovacie údaje, môžete samozrejme heslo uložiť do súborov cookie, ale toto nie je bezpečné, aj keď je šifrované. Na ukončenie relácie stačí zavrieť prehliadač a znovu ho otvoriť.

Vytváranie objektov v databáze

Poďme do praxe. Najskôr vytvorme tabuľku na ukladanie údajov používateľov do databázy MySQL. Navrhujem použiť jednoduchú štruktúru tabuľky ( Môžete to samozrejme niečím doplniť, moja základňa sa volá test a tabuľka používateľov):

CREATE TABLE test.users (user_id INT (11) UNIGNIGN NOT NULL AUTO_INCREMENT, user_login VARCHAR (30) NOT NULL, user_password VARCHAR (32) NOT NULL, PRIMARY KEY (user_id)) ENGINE = MYISAM CHARACTER SET utf8 COLLATE_ utf8_

A ihneď pridajme do tejto tabuľky jeden záznam:

Vložte do súboru test.users (user_login, user_password) hodnoty ("mylogin", "202cb962ac59075b964b07152d234b70")

Celkovo sme dostali:

  • Prihlásiť sa- mylogin;
  • Heslo -;

Heslo samozrejme uložíme v hašovanej podobe, pretože uloženie hesla v čistom texte je, mierne povedané, bezpečné. Máme hodnotu hash hesla 123, takže keď zadáme heslo do formulára, skórujeme presne 123, nie.

Vytvorte registračný formulár

Aby sa užívateľ mohol zaregistrovať sám, vytvorte formulár, ktorého údaje sa odošlú do súboru na spracovanie registrácie, t.j. zapisovať do databázy. Tu je napríklad najjednoduchší spôsob:

0) ($ error = "Tento používateľ už má prihláseného používateľa";) // Ak nie, potom pridajte nového používateľa if (! Isset ($ error)) ($ login = mysql_real_escape_string (trim (htmlspecialchars ($ _ POST) ["login"]))); // Odstráňte medzery a zahašujte heslo $ password = md5 (trim ($ _ POST ["heslo"]))); mysql_query ("INSERT INTO users SET user_login =" ". $ Login. "", User_password = "". $ Heslo. "" "); Echo" Úspešne ste sa zaregistrovali pomocou prihlasovacieho mena - ". $ Login; exit ();) else (// ak takéto prihlásenie existuje, potom hovoríme o tom echo $ error;)) // v predvolenom nastavení sa údaje budú odosielať do rovnakého tlačového súboru<<< html

Prihlásiť sa
Heslo
html; ?>

Mimochodom, pri tejto metóde je najlepšie na prihlásenie používať latinské písmená ( tie. Angličtina), ak chcete napísať prihlasovacie meno v ruštine, budete musieť mierne upraviť kód. Môžete pomenovať súbor, ako sa vám páči ( na test som použil reg.html).

Poznámka! Na testovanie používam iba jeden súbor, pomenoval som ho mylogin.html (kód súboru uvedený nižšie). Môžete použiť vo svojich súboroch a pomenovať ich, ako chcete, popíšem tu proces autorizácie, aby ste ho mohli použiť kdekoľvek. Mimochodom, vo všetkých súboroch budete musieť použiť funkciu session_start (); aby ste mohli skontrolovať, či je používateľ autorizovaný alebo nie. A ešte jedna vec, samozrejme, zapíšte si svoje nastavenia pre pripojenie k databáze.

Vytvorenie autorizačného formulára

"." Ste prihlásený
Tých. skontrolovali sme reláciu a môžeme otvoriť prístup k určitým údajom ";) else ($ login =" "; // skontrolujte cookie, možno tu už bol zadaný if (isset ($ _ COOKIE [" CookieMy "])) ($ login = htmlspecialchars ($ _COOKIE ["CookieMy"]);) // tlač jednoduchého formulára<<< html

Prihlásiť sa
Heslo
html; )?>

Poznámka! Ak náhle váš php parser odmietne pracovať, t.j. samotný php kód sa zobrazí na obrazovke, potom jednoducho nemáte zapnuté php spracovanie v html súboroch. Nastavenia sa vykonávajú v konfiguračnom súbore webového servera httpd.conf (ak je apache):

Aplikácia AddType / x-httpd-php .php .html

V IIS v okne Pridať modul mapovania pridajte * .html do * .php, oddelené čiarkami. To je prípad, keď to urobíte doma na svojom webovom serveri, a ak to všetko urobíte u hostiteľa, budete im musieť napísať a požiadať ich, aby vykonali potrebné zmeny, niektorí hostitelia ich už vykonali.

Komentoval som kód, takže si myslím, že by malo byť všetko jasné. Ešte raz pripomínam, že do všetkých súborov, ktorých obsah nechcete zobrazovať neoprávneným používateľom, musíte napísať session_start a pravdepodobne je to všetko. Ak máte akékoľvek otázky, opýtajte sa v komentároch. Veľa štastia!

Od autora: skôr alebo neskôr bude každý webový vývojár čeliť úlohe obmedziť prístup na určitú stránku / stránky alebo adresár. Môže to byť iba tajná stránka na webe, administratívna časť webu alebo iná sekcia, ktorej prístup chceme obmedziť a poskytnúť iba pomocou hesla. K tomu môžete samozrejme použiť serverové nástroje. Myslím si, že každý moderný hosting má funkciu hesla adresára, kde si môžete vytvoriť užívateľa, prideliť mu heslo a po zašifrovaní adresára bude prístup do uzavretého adresára zabezpečený až po zadaní správneho prihlásenia a hesla. Ale niekedy chcete napísať niečo sami, niečo rýchle, jednoduché, ale zároveň spoľahlivé ...

V tomto tutoriáli sa pokúsime napísať náš vlastný jednoduchý autorizačný systém. Budeme mať tajnú stránku - bude to napríklad stránka správcu, ktorej prístup poskytneme iba oprávnenému používateľovi. Náš autorizačný systém bude založený na mechanizme relácie. Pred pokračovaním v tejto lekcii vám odporúčam, aby ste sa oboznámili s jednou z mojich predchádzajúcich lekcií, na ktorej sme predovšetkým zvážili prácu na seminároch -.

Stručne povedané, všetky práce so sedeniami možno rozdeliť do 3 etáp:

Otvorenie zasadania. Na všetkých stránkach, na ktorých je naznačená práca s reláciami, sa musí relácia začať pomocou funkcie session_start ().

Registrácia premenných relácie.

Zrušenie registrácie premenných relácie pomocou funkcie unset () a ukončenie relácie pomocou funkcie session_destroy ().

Krok 1

Pre našu prácu teda vytvoríme 3 súbory - domovskú stránku (index.php), kontakty (contact.php) a administrátorský panel (admin.php). Upozorňujeme vás na skutočnosť, že prípona súboru, ku ktorej obmedzíme prístup, musí byť .php. Ako ste už mohli uhádnuť, obmedzíme prístup k súboru admin.php. Kód všetkých súborov je najjednoduchší - je to akési menu v riadku s odkazmi na iné stránky a pod ním je samostatný text každej stránky, aby sme ich od seba odlíšili. Napríklad tu je kód pre indexovú stránku:

Domov | Kontakty | Panel správcov


Toto je domovská stránka

Zvyšok stránok, ako som uviedol, sa od nich líši iba textom za značkou riadku. Nerobil som plnohodnotné stránky s metaznačkami, pretože našou úlohou je obmedziť prístup iba na určitú stránku.

Krok 2

Zatiaľ môžeme voľne prechádzať všetky stránky vrátane stránky správcu. Ako k nej obmedzíme prístup? Aký bude algoritmus? Urobíme nasledovné: na samom začiatku stránky skontrolujeme, či v relácii existuje štítok, ktorý potrebujeme, alebo jednoduchšie, či existuje konkrétna premenná relácie (môžete tiež skontrolovať, či je hodnota relácie premenná sa rovná konkrétnej hodnote). Ak takáto premenná neexistuje, používateľ požadujúci túto stránku nie je autorizovaný, čo znamená, že ho presmerujeme na autorizačnú stránku, kde bude vyzvaný k vyplneniu formulára s menom a heslom. Algoritmus je mimoriadne jednoduchý - poďme ho implementovať. Prejdite do súboru admin.php, úplne hore otvorte konštrukciu PHP a napíšte nasledujúci kód:

session_start ();

if (! $ _SESSION ["admin"]) (

hlavička ("Location: enter.php");

východ;

Poďme si tento kód prečítať teraz. Najskôr sme, ako si pamätáte, otvorili reláciu - to je nevyhnutná podmienka pri práci s reláciami. Ďalej sme vytvorili jednoduchú podmienku, ktorá sa dá čítať takto: „ak administrátorský prvok v poli $ _SESSION neexistuje, vykonáme blok akcií uvedený v zátvorkách operátora.“ A v bloku kódu používame funkciu header () na presmerovanie používateľa na stránku enter.php (toto je stránka autorizácie). Po funkcii header () nezabudnite ukončiť vykonávanie skriptu pomocou funkcie exit (). Ak podmienka nie je splnená, tj. Pole $ _SESSION bude obsahovať prvok admin - to znamená, že používateľ už bol úspešne autorizovaný a akčný blok v hranatých zátvorkách preskočíme, tj. Nedôjde k žiadnemu presmerovaniu a zobrazíme požadovanú stránku.

Krok 3

Teraz musíme vytvoriť autorizačnú stránku - enter.php. Ak to chcete urobiť, skopírujte kód, napríklad zo stránky contact.php, vytvorte nový súbor a vložte do neho skopírovaný kód. Uložte súbor pod menom enter.php. Teraz na tejto stránke napíšeme jednoduchý formulár na zadanie používateľského mena a hesla:

Domov | Kontakty | Panel správcov


Toto je prihlasovacia stránka.
Užívateľské meno:
Heslo:

< p > < a href = "index.php" >hlavný< / a > | < a href = "contact.php" >Kontakty< / a > | < a href = "admin.php" >Panel správcov< / a > < / p >

< hr / >

< br / >

< form method = "post" >

Užívateľské meno:< input type = "text" name = "user" / > < br / >

Heslo:< input type = "password" name = "pass" / > < br / >

< input type = "submit" name = "submit" value = "Vstúpiť" / >

< / form >

Všetko je tu jednoduché. Vo formulári sú 2 polia: pole pre zadanie prihlasovacieho mena (dali sme mu meno „užívateľ“) a pole pre heslo (pomenované „pass“). Vytvorili sme tiež tlačidlo (meno „odoslať“), kliknutím na ktoré sa odošlú údaje z formulára. Údaje sa odosielajú metódou post - určili sme to v atribúte metódy značky formulára - a budú spracované na tej istej stránke. Teraz sa môžeme pokúsiť prejsť na stránku správcu. Ak bude všetko vykonané bez chýb, nebudeme sa tam môcť dostať, ale vždy budeme na autorizačnej stránke.

Úžasné!

Krok 4

Ďalej musíme na stránku s formulárom napísať obslužný program, ktorý prijme údaje z formulára a porovná, či sa prihlasovacie meno a heslo z formulára zhodujú s tými, ktoré máme. Ak to chcete urobiť, otvorte konštrukt PHP v hornej časti autorizačnej stránky a začnite písať kód. Najskôr musíme otvoriť reláciu - koniec koncov, práve tu vytvoríme v relácii štítok, ak dostaneme správne používateľské meno a heslo. Na tej istej stránke uložíme prihlasovacie meno a heslo správcu. Zvyčajne sú tieto údaje uložené v databáze (DB), ale budeme mať iba 1 používateľa (správcu), a preto nie je úplne racionálne ukladať jeho údaje na vstup do databázy. Ak je viac ako jeden užívateľ, to znamená, že napríklad píšeme projekt, v ktorom je registrácia, potom bude v tomto prípade, samozrejme, ťažké zaobísť sa bez databázy.

Naše prihlasovacie meno bude teda „admin“ a uložíme ho do premennej $ admin. Heslo bude „mypass“ a bude uložené v premennej $ pass. Nie je ale zvykom ukladať heslá ako text, čo je v rozpore s bezpečnostnými zásadami. Heslo uložíme v zašifrovanej podobe a funkcia md5 () nám ho pomôže zašifrovať. Táto funkcia šifruje reťazec pomocou špeciálneho algoritmu a na výstupe dostaneme reťazec o dĺžke 32 znakov (hovorí sa mu hash). Ak zašifrujeme reťazec „mypass“ (je to možné napríklad v súbore contact.php):

echo md5 ("mypass");

potom na výstupe dostaneme riadok „a029d0df84eb5549c641e04a9ef389e5“ - toto bude naše šifrované heslo. Kód autorizačnej stránky bude zatiaľ taký:

Domov | Kontakty | Panel správcov


Toto je prihlasovacia stránka.
Užívateľské meno:
Heslo:

session_start ();

$ admin = "admin";

$ pass = „a029d0df84eb5549c641e04a9ef389e5“;

< p > < a href = "index.php" >hlavný< / a > | < a href = "contact.php" >Kontakty< / a > | < a href = "admin.php" >Panel správcov< / a > < / p >

< hr / >

< br / >

< form method = "post" >

Užívateľské meno:< input type = "text" name = "user" / > < br / >

Heslo:< input type = "password" name = "pass" / > < br / >

< input type = "submit" name = "submit" value = "Vstúpiť" / >

< / form >

Krok 5

Teraz skontrolujme, čo sme dostali z formulára, čo máme v premenných s prihlásením a heslom. Urobíme to podmienečne - iba ak je stlačené tlačidlo formulára. Ako to môžeme skontrolovať? Tlačidlo má názov („odoslať“) a údaje odovzdávame metódou post. Podľa toho môžeme jednoducho skontrolovať, či element submit existuje v poli $ _POST. Ak existuje, bolo stlačené tlačidlo a vykonáme akcie na kontrolu odoslaných údajov, inak neurobíme nič. Po deklarovaní prihlásenia a hesla píšeme podmienku:

if ($ _ POST ["submit"]) (if ($ admin == $ _POST ["user"] AND $ pass == md5 ($ _ POST ["pass"])) ($ _SESSION ["admin"] = $ admin; header ("Location: admin.php"); exit;) else echo "

Prihlasovacie meno alebo heslo je nesprávne!

"; }

if ($ _POST ["odoslať"]) (

if ($ admin == $ _POST ["užívateľ"] AND $ pass == md5 ($ _POST ["pass"])) (

$ _SESSION ["admin"] = $ admin;

východ;

) iná ozvena "

Prihlasovacie meno alebo heslo je nesprávne!

" ;

Podmienku kontroly prihlasovacieho mena a hesla sme vytvorili, akoby boli dvojnásobné. To sa deje pomocou logického operátora AND (dá sa to napísať aj takto - „&&“). Podmienku je možné prečítať nasledovne: „if (premenná $ admin sa rovná užívateľskému prvku v poli $ _POST A premenná $ pass sa rovná hash prvku pass v poli $ _POST) potom (vykonať blok akcií ) inak zobrazíme text „Prihlasovacie meno alebo heslo je nesprávne!“

Ak sa dvojica prihlasovacie meno-heslo zhoduje, zaregistrujeme premennú relácie $ _SESSION ["admin"] a presmerujeme používateľa na stránku admin - admin.php.
Skúsme teraz otestovať, čo sme už vytvorili. Ak zadáme zámerne nepravdivé používateľské meno a heslo, dostaneme varovnú správu, že „Prihlasovacie meno alebo heslo je nesprávne!“. Skúsme teraz zadať správne prihlasovacie údaje. Pokiaľ sme nikde neurobili chybu, tak po kliknutí na tlačidlo „Prihlásiť sa“ budeme na stránke administrátora.

Krok 6

Teraz zostáva pridať nejaké maličkosti. Teraz sme napríklad autorizovaní v systéme, ale ak do panela s adresou zadáme adresu autorizačnej stránky, pokojne na ňu prejdeme a zobrazíme autorizačný formulár. Toto by nemal platiť - formulár by mal vidieť iba neoprávnený používateľ. Ako to môžeme napraviť? Pamätajte, že na stránke admin.php sme skontrolovali, či v relácii bola značka. Ak tam nie je, preniesli sme používateľa na autorizačnú stránku. Tu môžeme urobiť to isté, práve naopak. To znamená, že tiež kontrolujeme, či je v relácii štítok. Iba teraz prenesieme používateľa na stránku správcu, ak existuje taký štítok. Je to v zásade logické. Ak je k dispozícii štítok, potom je používateľ už autorizovaný a my ho môžeme previesť na stránku správcu. Na stránke enter.php po začiatku relácie pridajte nasledujúci kód:

if ($ _ SESSION ["admin"]) (header ("Location: admin.php"); exit;)

if ($ _SESSION ["admin"]) (

hlavička ("Umiestnenie: admin.php");

východ;

Ak sa teraz autorizovaný používateľ pokúsi do panela s adresou zadať názov autorizačnej stránky, prenesie sa na stránku správcu. Neautorizovaný používateľ bude mať voľný prístup na stránku autorizácie.

Krok 7

Ďalším okamihom, ktorý musíme poskytnúť, je implementácia odhlásenia oprávneného používateľa, t. J. Povedzme, že správca dokončil svoju prácu a musí sa odhlásiť, aby pod jeho účtom nemohol pracovať nikto iný. Ak to chcete urobiť, na stránke admin.php pridajte odkaz „Odhlásiť sa“. Odkaz povedie na rovnakú stránku, na ňu sa pridá iba parameter, ktorý potrebujeme. Parameter sa pridáva pomocou otáznika:

Výkon

< a href = "admin.php?do=logout" >Výkon< / a >

Tento odkaz je možné umiestniť na miesto, kde to potrebujeme - vložím ho za text stránky. Pokiaľ ide o parameter - bude odovzdaný metódou GET (nezabudnite, že údaje z formulára sme odovzdali ako druhý parameter - POST). Týmto spôsobom sa údaje pripoja k adrese v paneli s adresou a od adresy sa oddelia otáznikom. Prejdeme jedným parametrom - urobíme - a zároveň mu priradíme hodnotu „odhlásenie“. Ako môžeme teraz neoprávniť používateľa? Je to veľmi jednoduché - tu nám pri práci so sedeniami pomôže druhá a tretia etapa. Pri načítaní stránky môžeme skontrolovať hodnotu prvku do z poľa $ _GET. Ak sa rovná riadku „odhlásenie“ - stačí zrušiť registráciu premennej relácie $ _SESSION [„admin“] a reláciu zničiť. V súlade s tým nebudú v relácii žiadne značky a v nasledujúcom bloku, kde skontrolujeme prítomnosť značky, bude používateľ presmerovaný na autorizačnú stránku. Je to jednoduché.

Dávam do pozornosti veľmi jednoduché a funkčné skript pre registráciu a autorizáciu na stránke, ktorý sa skladá z 3 súborov PHP s pripojením 2 java skriptov, pomocou ktorých sa chyby zobrazujú v samotnom formulári bez opätovného načítania stránky.

Skript bol úspešne testovaný na PHP 5.3.3 a PHP 5.6.3

Čo môže a má skript

  • Registrovať nových používateľov;
  • Autorizujte používateľov a ukladajte cookies na určité obdobie (nie je potrebné zakaždým sa prihlasovať);
  • Zobraziť a skryť určité informácie pre autorizované a neautorizované;
  • Má ADMINISTRÁLNY PANEL, kde môžete upravovať všetky údaje a mazať používateľov.

Na rovnakom mieste panely DEMO a Admin

KROK 1.
Ak na registráciu a autorizáciu v sieti LAN pomocou skriptu DENWER použijete skript, na pripojenie k databáze nemusíte robiť zmeny v súboroch.
V opačnom prípade otvorte súbory: stayt.php, classes / Auth.class.php a adminka / connect.php a na samom vrchole nahraďte údaje na pripojenie k databáze svojimi vlastnými.

2 KROK.
Prejdite (ak používate DENWER) na adresu: http: // localhost / Tools / phpmyadmin /, ak ste na hostiteľskom serveri, kliknite na Databázy a vytvorte novú databázu s názvom: registr a porovnanie: utf8_general_ci.
Môžete si samozrejme nastaviť svoje meno, ale potom ho musíte v súboroch nahradiť, aby ste sa mohli pripojiť k databáze (pozri krok 1).

KROK 3.
Kliknite na vytvorenú databázu registrov a potom na hornú kartu SQL a v zobrazenom okne na zadanie vložte tento kód a kliknite na tlačidlo OK.

CREATE TABLE IF NOT EXISTS `my_users` (` id` int (11) NOT NULL AUTO_INCREMENT, `username` varchar (255) NOT NULL,` names` varchar (15) NOT NULL, `password` varchar (255) NOT NULL, `salt` varchar (100) NOT NULL, PRIMARY KEY (` id`)) ENGINE = MyISAM DEFAULT CHARSET = utf8;

Všetko! Prejdite v prehliadači na svoju adresu, vyskúšajte a experimentujte.

Panel správcov

Po vykonaní aspoň jednej registrácie môžete prejsť na adresu ADMINKA.
Prihlásenie do ADMIN-PANELU:

Http: //your_site.ru/adminka/

Nezabudnite kvôli bezpečnosti tento priečinok prepnúť a môžete ho tiež premenovať.
Po otvorení správcovského panela kliknite na tlačidlo VYHĽADÁVAŤ a zobrazia sa vám všetci registrovaní používatelia, kde po kliknutí na konkrétne identifikačné číslo otvoríte údaje používateľa na úpravu.

Rovnako rýchlo môžete nájsť používateľa aj podľa jeho e-mailu, stačí preto zadať známy e-mail do poľa HĽADAŤ a kliknúť na tlačidlo.
Neodporúčam používať tlačidlo PRIDAŤ, pretože používateľ je do systému pridaný bez hesla. A vôbec netuším, prečo to vôbec vzniklo.

To je všetko, čo nefunguje alebo nie je jasné - pýtajte sa.


Cestou sa môžete pokúsiť predať informácie (tovar).

Nie je to tak dávno, čo ma jeden z mojich návštevníkov požiadal, aby som napísal článok o ako registrovať a autorizovať používateľov na webe... Vlastne spĺňam jeho požiadavku a v tomto článku budem hovoriť o tom, ako sa to deje.

Existuje niekoľko spôsobov vytvorenie registrácie a autorizácie používateľov, ale v tomto článku rozoberiem svoju obľúbenú - prostredníctvom mechanizmu relácie alebo súborov cookie.

Najskôr, ak chcete zaregistrujte sa na svojom webe, potom musíte pochopiť, kde budú uložené používateľské údaje. Môžu byť uložené v bežnom textovom súbore v Súbor XML, alebo v databáze. Prvé dve možnosti sú veľmi nebezpečné, takže vám ich použitie neodporúčam. A tu je tretia možnosť - ukladanie informácií o užívateľoch do databázy- najobľúbenejší a odporúčam vám použiť tento spôsob ukladania informácií.

Rozhodli sme sa pre umiestnenie úložiska. Teraz poďme priamo k autorizačný algoritmus:

  1. Vytvorte registračný formulár dňa Html.
  2. Získajte údaje z formulára v skripte obsluhy.
  3. Skontrolujte prijaté údaje a ak sú nesprávne, potom presmerujte späť do registračného formulára.
  4. Ak sú údaje správne, zapíšte ich do databázy.

To je celý proces registrácia užívateľa na stránke... To znamená, že registrácia je ukladanie informácií o používateľovi na webe.

Ďalšou položkou je autorizáciu užívateľa na stránke, ale skôr ako k nej pristúpim, poviem vám o jednom dôležitom bode registračného formulára - hesle. Dôrazne odporúčam, aby ste heslá neukladali ako čistý text (napríklad „ 123456 "). Nezabudnite ich zašifrovať, prinajmenšom pomocou tejto funkcie md5 ()... A šifrované heslo uložte do databázy.

Teraz autorizácia. Prvá vec, ktorú musíte pochopiť, je, že autorizačné informácie musia byť niekde uložené. Najjednoduchšou možnosťou je ukladať informácie do relácie (alebo do priečinka cookie). A teraz algoritmus:

  1. Vytvorte formulár na autorizáciu používateľa dňa Html, kde bude užívateľ musieť zadať svoje užívateľské meno a heslo.
  2. V skripte obsluhy prijmite údaje od používateľa. Ak ste ma poslúchli a uložili ste šifrované heslá do databázy, zašifrujte najskôr prijaté heslo. Ak databáza obsahuje otvorené heslá, nemusíte šifrovať.
  3. Skontrolujte správnosť zadaných údajov a ak sa prihlasovacie meno a heslo zhodujú s existujúcim používateľom v databáze, napíšte na cookie alebo informácie o relácii s prihlásením a šifrovaným heslom (alebo otvoreným heslom, ak ste ho nezašifrovali).
  4. Ak sú prihlasovacie údaje alebo heslo zadané nesprávne, presmerujte späť na autorizačný formulár.

Teraz máte potrebné informácie o autorizácia užívateľa ktorý je uložený v jeho cookie alebo na serveri (ak je relácia). V skutočnosti je teraz potrebné skontrolovať tieto informácie na každej stránke webu a overiť ich rovnakým spôsobom ako pri kontrole autorizačného formulára. To znamená, že čítate z cookie(relácia) prihlasovacie meno a heslo a skontrolujte ho. Ak sú správne, zobrazte jednu stránku (pre registrovaných používateľov) a ak sú nesprávne, zobrazte ďalšiu stránku (pre hostí).

A posledná vec. Aké je tlačidlo " Výkon"? Veľmi jednoduché. Keď stlačíte toto tlačidlo, cookie alebo relácia. Používateľ je teda zo stránky automaticky odhlásený.

Ako vidíte, všetko je základné, ale pri implementácii tohto algoritmu budete mať určite veľa otázok. Napríklad čo robiť pri registrácii používateľa, ktorého prihlásenie už existuje v databáze. Implementácia rôznych vstupných kontrol, implementácia kontroly existencie e-mail a tak ďalej - to všetko je dosť ťažké, ak to robíte prvýkrát. Samotnú šťavu som však rozdal. Ak máte počas implementácie nejaké otázky, opýtajte sa buď na fóre, alebo v komentároch.