Ak potrebujete sprístupniť niektorú zo sekcií vašej stránky obmedzenému, no neurčitému okruhu ľudí, najjednoduchší spôsob, ako to urobiť, je registrácia a autorizácia používateľov. Existuje mnoho spôsobov, ako autorizovať používateľov. Môžete použiť nástroje webového servera aj nástroje programovacieho jazyka. Budeme hovoriť o prípade, keď sa používajú relácie PHP.

Možno by ste chceli vidieť viac moderným spôsobom vytvorenie takéhoto formulára. Mám ešte v pláne jeho kompletnú modernú a aktuálnu prezentáciu, ale tú formu vidíte spätná väzba možno vytvoriť pomocou objektovo orientovaných trikov v PHP.

Na začiatok si preberme všetky kroky, ktoré podnikneme ďalej. Čo skutočne potrebujeme? Potrebujeme skript, ktorý zaregistruje užívateľa, autorizuje užívateľa, po autorizácii ho niekam presmeruje. Budeme tiež musieť vytvoriť stránku, ktorá bude chránená pred prístupom neoprávnených používateľov. Pre registráciu a autorizáciu budeme musieť vytvoriť HTML formuláre. Informácie o registrovaných užívateľoch budeme uchovávať v databáze. To znamená, že stále potrebujeme skript pripojenia DBMS. Všetku prácu budeme vykonávať funkcie, ktoré si napíšeme sami. Tieto funkcie uložíme do samostatného súboru.

Potrebujeme teda nasledujúce súbory:

  • pripojenie k DBMS;
  • vlastné funkcie;
  • autorizácia;
  • registrácia;
  • zabezpečená stránka;
  • skript na vypnutie používateľa;
  • skript, ktorý kontroluje stav autorizácie používateľa;
  • štýly pre najjednoduchší dizajn našich stránok.

To všetko bude bezvýznamné, ak v databáze nemáte zodpovedajúcu tabuľku. Spustite svoj nástroj na správu DBMS (PhpMyAdmin alebo príkazový riadok, podľa toho, čo je pohodlnejšie) a vykonajte v ňom nasledujúci dotaz:

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` char(16) NOT NULL, `password` char(40) NOT NULL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Naše súbory skriptov pomenujem takto (všetky budú v rovnakom adresári):

  • databáza.php
  • funkcie.php
  • login.php
  • registrácia.php;
  • index.php;
  • logout.php;
  • checkAuth.php;
  • style.css

Účel každého z nich, som si istý, že chápete. Začnime skriptom pripojenia DBMS. Už ste ho videli. Stačí uložiť tento kód skriptu do súboru s názvom database.php . Vlastné funkcie deklarujeme v súbore functions.php. Ako to celé bude fungovať? Neautorizovaný užívateľ sa pokúsi o prístup k chránenému dokumentu index.php, systém skontroluje, či je užívateľ autorizovaný, ak užívateľ autorizovaný nie je, je presmerovaný na autorizačnú stránku. Na autorizačnej stránke by mal užívateľ vidieť autorizačný formulár. Poďme na to.

Autorizácia používateľa

Registrovať.

Teraz je potrebné, aby naša forma dostala nejakú formu. Zároveň zadefinujeme pravidlá pre ďalšie prvky. Pri pohľade dopredu poskytnem obsah šablóny štýlov v plnom znení.

/* súbor style.css */ .row ( margin-bottom:10px; width:220px; ) .row label ( display:block; font-weight:bold; ) .row input.text ( font-size:1.2em; padding:2px 5px; ) .to_reg ( font-size:0.9em; ) .instruction ( font-size:0.8em; color:#aaaaaa; margin-left:2px; cursor:default; ) .error ( color:red; margin-left:3px ;)

Ak je všetko vykonané správne, mali by ste mať v prehliadači nasledovné:

Samozrejme, zatiaľ nemáme ani jedného registrovaného užívateľa a pre prihlásenie je potrebné sa zaregistrovať. Urobme si registračný formulár.

registrácia používateľa

" />

Možno ste si všimli, že v kóde HTML sú prítomné premenné PHP. Sú obsahom atribútov textových polí formulára, obsahom chybových kontajnerov. Tieto premenné sme však neinicializovali. Poďme to urobiť.

registrácia používateľa

" />
Používateľské meno môže obsahovať iba latinské znaky, čísla, symboly "_", "-", ".". Dĺžka používateľského mena musí byť aspoň 4 znaky a nie dlhšia ako 16 znakov
V hesle môžete použiť iba latinské znaky, čísla, symboly "_", "!", "(", ")". Heslo musí mať aspoň 6 znakov a nie dlhšie ako 16 znakov
Zopakujte predtým zadané heslo

Atribút action značky formulára nemá zadaný žiadny parameter. V tomto prípade, keď sú údaje formulára odoslané, budú spracované v rovnakom skripte, z ktorého boli odoslané. Musíme teda napísať kód, ktorý spracováva údaje formulára. Ale poďme najprv diskutovať o algoritme na ich spracovanie.

Potrebujeme, aby polia prihlasovacieho mena a hesla neboli prázdne. Potom musíte skontrolovať, či prihlásenie spĺňa požiadavky. Heslo musí tiež spĺňať popísané požiadavky a znovu zadané heslo sa s ním musí zhodovať a navyše musí byť totožné. Ak niektorá z týchto podmienok nie je splnená, spracovanie údajov formulára by sa malo ukončiť, do poľa chybových hlásení by sa malo zapísať príslušné upozornenie a malo by sa zobraziť používateľovi. Pre pohodlie používateľa uložíme ním zadané prihlasovacie meno (ak ho zadal) a jeho hodnotu zapíšeme do poľa $fields.

Ak je všetko v poriadku, v okne prehliadača by ste podľa dokumentu registration.php mali vidieť niečo takéto:

Teraz povedzme, že používateľ klikol na tlačidlo registrácie a nevyplnil polia formulára. Podľa nášho algoritmu nemôžu byť prihlasovacie meno a heslo prázdne. Ak táto podmienka nie je splnená, registrácia nie je možná. Majme na pamäti, že spracovanie údajov formulára prebieha v aktuálnom scenári. Musíme teda zmeniť jeho kód pridaním príslušných kontrol. Poďme okamžite diskutovať o nasledujúcich kontrolách. Ak sú zadané prihlasovacie meno aj heslo, musíte skontrolovať, či sú v súlade so špecifikovanými požiadavkami. Pre kontrolu prihlasovacieho mena a hesla vytvoríme užívateľské funkcie v súbore functions.php.

/** * functions.php * Súbor s vlastnými funkciami */ // Pripojte súbor s parametrami pripojenia k DBMS require_once("database.php"); // Kontrola funkcie používateľského mena checkLogin($str) ( // Inicializácia premennej s možným chybovým hlásením $error = ""; // Ak neexistuje žiadny prihlasovací reťazec, vráti chybové hlásenie if(!$str) ( $error = " Nezadali ste používateľské meno"; return $error; ) /** * Kontrola používateľského mena pomocou regulárnych výrazov * Prihlásenie nesmie byť kratšie ako 4, nie dlhšie ako 16 znakov * Musí obsahovať latinské znaky, čísla, * môžu to byť znaky "_", "-", "." */ $pattern = "/^[-_.a-z\d](4,16)$/i"; $result = preg_match($pattern, $ str) ; // Ak kontrola zlyhá, vráti chybovú správu if(!$result) ( $error = "Neplatné znaky v používateľskom mene alebo je používateľské meno príliš krátke (dlhé)"; return $error; ) // Ak je všetko je v poriadku, vráti true return true; ) // Skontrolujte funkciu hesla používateľa checkPassword($str) ( // Inicializácia premennej s možnou chybovou správou $error = ""; // Ak chýba zadajte reťazec s prihlásením, vráti chybovú správu if(!$str) ( $error = "Nezadali ste heslo"; návrat $chyba; ) /** * Skontrolujte heslo používateľa pomocou regulárnych výrazov * Heslo nesmie byť kratšie ako 6, nie dlhšie ako 16 znakov * Musí obsahovať latinské znaky, čísla, * môže obsahovať znaky "_", "!", " (", ")" */ $vzor = "/^[_!)(.a-z\d](6,16)$/i"; $vysledok = preg_match($vzor, ​​$str); // Ak je kontrola zlyhalo, vráti chybové hlásenie if(!$result) ( $error = "Neplatné znaky v používateľskom hesle alebo heslo je príliš krátke (dlhé)"; return $error; ) // Ak je všetko v poriadku, vráti true return true; )

Teraz musíme upraviť súbor registration.php tak, aby používal funkcie, ktoré sme deklarovali. Do skriptu pridáme podmienku, ktorá kontroluje kliknutie na tlačidlo registrácie. V rámci tejto podmienky sa spustí kontrola prihlásenia a hesla. Ak ktorákoľvek z kontrol zlyhá, formulár znova vykreslíme a zobrazíme chybové hlásenie. Ak sa nevyskytnú chyby, používateľa zaregistrujeme, pričom registračný formulár sa už nezobrazuje, informujeme používateľa o úspešnej registrácii a pomocou funkcie header() ho presmerujeme na autorizačný formulár.

Úspešne ste sa zaregistrovali do systému. Teraz budete presmerovaní na prihlasovaciu stránku. Ak sa tak nestane, prejdite naň prostredníctvom priameho odkazu.

"; header("Refresh: 5; URL = login.php"); ) // V opačnom prípade informujte používateľa o chybe else ( $errors["full_error"] = $reg; ) ) ) ?> registrácia používateľa
" />
Používateľské meno môže obsahovať iba latinské znaky, čísla, symboly "_", "-", ".". Dĺžka používateľského mena musí byť aspoň 4 znaky a nie dlhšia ako 16 znakov
V hesle môžete použiť iba latinské znaky, čísla, symboly "_", "!", "(", ")". Heslo musí mať aspoň 6 znakov a nie dlhšie ako 16 znakov
Zopakujte predtým zadané heslo

Mali ste si všimnúť ešte jednu novú funkciu v skripte - registration() . Zatiaľ sme to neoznámili. Poďme to urobiť.

// Funkcia registrácie užívateľa registrácia ($login, $password) ( // Inicializácia premennej s možnou chybovou správou $error = ""; // Ak nie je uvedený žiadny prihlasovací reťazec, vráti chybovú správu if(!$login) ( $ error = "Prihlásenie nie je zadané"; return $error; ) elseif(!$password) ( $error = "Heslo nie je zadané"; return $error; ) // Skontrolujte, či je používateľ už zaregistrovaný // Pripojte sa k DBMS connect() ; // Napíšte reťazec dotazu $sql = "SELECT `id` FROM `users` WHERE `login`="" . $login . """; // Vytvorenie databázového dotazu $query = mysql_query($ sql) or die( ""); // Pozrite sa na počet používateľov s týmto prihlásením, ak existuje aspoň jeden, // vráti chybovú správu if(mysql_num_rows($query) > 0) ( $error = "The používateľ so zadaným prihlásením je už zaregistrovaný"; return $ error; ) // Ak taký používateľ neexistuje, zaregistrujte ho // Napíšte reťazec dotazu $sql = "INSERT INTO `users` (`id`,`login`, `heslo`) HODNOTY (NULL, "" . $login ." ","". $heslo. "")"; // Urobte dotaz do databázy $query = mysql_query($sql) or die("

Nie je možné pridať používateľa: " . mysql_error() .". Vyskytla sa chyba na riadku " . __LINE__."

"); // Nezabudnite sa odpojiť od DBMS mysql_close(); // Vráti hodnotu true, čo znamená úspešnú registráciu používateľa, vráti hodnotu true; )

Ak je všetko v poriadku, váš používateľ bude zaregistrovaný. Formulár môžete otestovať. Skúste zaregistrovať používateľov s rovnakými prihlasovacími údajmi. Po úspešnej registrácii bude používateľ presmerovaný na autorizačný formulár. Predtým sme jednoducho vytvorili označenie na zobrazenie tohto formulára. Keďže v atribúte akcie nie je zadaný žiadny parameter, údaje odoslané formulárom sa spracujú v rovnakom skripte. Musíme teda napísať kód na spracovanie a pridať ho do dokumentu login.php.

Autorizácia používateľa

;">

Ak nie ste zaregistrovaný v systéme, zaregistrujte sa.

Možno ste si všimli, že teraz máme v autorizačnom skripte ďalšiu neznámu funkciu — autorizáciu() . Táto funkcia by mala používateľa autorizovať tak, že najprv skontroluje, či je v databáze registrovaný používateľ s rovnakým prihlasovacím menom a heslom. Ak sa takýto používateľ nenájde, autorizácia sa preruší a na obrazovke sa zobrazí správa o zlyhaní. Po úspešnom overení funkcia authorisation() spustí reláciu a zapíše do nej prihlasovacie meno a heslo používateľa, informuje skript o úspešnosti autorizácie a skript presmeruje používateľa na zabezpečenú stránku zdroja.

/** * Funkcia autorizácie používateľa. * Autorizácia používateľov bude vykonaná * pomocou relácií PHP. */ autorizácia funkcie ($login, $password) ( // Inicializácia premennej s možnou chybovou správou $error = ""; // Ak neexistuje žiadny prihlasovací reťazec, vráti chybovú správu if(!$login) ( $chyba = " Prihlásenie nie je zadané"; return $error; ) elseif(!$password) ( $error = "Heslo nie je zadané"; return $error; ) // Skontrolujte, či je používateľ už zaregistrovaný // Pripojte sa k DBMS connect( ); // Musíme skontrolovať, či medzi zaregistrovanými existuje taký používateľ // Zostavte reťazec dopytu $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" A `password`="".$password ."""; // Spustite dotaz $query = mysql_query($sql) or die("

Nie je možné vykonať dotaz: " . mysql_error() .". Vyskytla sa chyba na riadku " . __LINE__."

"); // Ak neexistuje žiadny používateľ s takýmito údajmi, vráti chybové hlásenie if(mysql_num_rows($query) == 0) ( $error = "Používateľ so zadanými údajmi nie je zaregistrovaný"; return $error; ) // Ak používateľ existuje , spustite reláciu session_start(); // A zapíšte do nej prihlasovacie meno a heslo používateľa // Na tento účel použijeme superglobálne pole $_SESSION $_SESSION["login"] = $login; $ _SESSION["password"] = $password; // Nezabudnite zatvoriť databázové pripojenie mysql_close(); // Vrátiť hodnotu true, ak chcete ohlásiť úspešnú autorizáciu používateľa, vrátiť hodnotu true; )

Keď používateľ vstúpi na zabezpečenú stránku, mali by ste skontrolovať správnosť jeho autorizačných údajov. K tomu potrebujeme ešte jednu užívateľom definovanú funkciu. Nazvime to checkAuth() . Jeho úlohou bude overiť autorizačné údaje používateľa s údajmi uloženými v našej databáze. Ak sa údaje nezhodujú, používateľ bude presmerovaný na autorizačnú stránku.

Funkcia checkAuth($login, $password) ( // Ak neexistuje prihlasovacie meno alebo heslo, vráťte hodnotu false if(!$login || !$password) vráťte hodnotu false; // Skontrolujte, či je takýto používateľ registrovaný // Pripojte sa k DBMS connect(); // Vytvorenie reťazca dopytu $sql = "SELECT `id` FROM `users` WHERE `login`="".$login."" AND `password`="".$password."""; // Spustite dotaz $ query = mysql_query($sql) or die("

Nie je možné vykonať dotaz: " . mysql_error() .". Vyskytla sa chyba na riadku " . __LINE__."

"); // Ak neexistuje žiadny používateľ s takýmito údajmi, vráti hodnotu false; if(mysql_num_rows($query) == 0) ( return false; ) // Nezabudnite zatvoriť pripojenie k databáze mysql_close(); // V opačnom prípade vráti true, vráti true;)

Teraz, keď sa používateľ dostal na zabezpečenú stránku, musíme zavolať funkciu overenia autorizačných údajov. Volací a kontrolný skript umiestnime do samostatného súboru checkAuth.php a pripojíme ho k tým stránkam, ktoré budú zatvorené pre verejný prístup.

/** * Skript na kontrolu autorizácie užívateľa */ // Spustíme reláciu, z ktorej vytiahneme prihlasovacie meno a heslo // oprávnených užívateľov session_start(); // Zahrňte súbor s vlastnými funkciami require_once("functions.php"); /** * Aby sme zistili, či je používateľ prihlásený, musíme * skontrolovať, či v databáze existujú záznamy pre jeho používateľské meno * a heslo. K tomu použijeme vlastnú funkciu * na kontrolu správnosti údajov oprávneného užívateľa. * Ak táto funkcia vráti hodnotu false, potom neexistuje žiadna autorizácia. * Ak neexistuje žiadna autorizácia, používateľa jednoducho presmerujeme * na stránku autorizácie. */ // Ak relácia obsahuje prihlasovacie údaje aj heslo, // skontrolujte ich if(isset($_SESSION["login"]) && $_SESSION["login"] && isset($_SESSION["heslo" ]) && $_SESSION["password"]) ( // Ak overenie existujúcich údajov zlyhá if(!checkAuth($_SESSION["login"], $_SESSION["password"])) ( // Presmerujte používateľa na hlavičku prihlasovacej stránky ("location: login.php"); // Ukončenie vykonávania ukončenia skriptu; ) ) // Ak neexistujú žiadne údaje o prihlásení alebo hesle používateľa, // sa domnievame, že neexistuje žiadna autorizácia, presmerujte user // na autorizačnú stránku else ( header("location: login.php"); // Zastavenie ukončenia vykonávania skriptu; )

Teraz poďme vytvoriť kód pre našu zabezpečenú stránku. Bude to celkom jednoduché.

Autorizácia a registrácia užívateľov

Úspešná autorizácia.

Dostali ste sa na zabezpečenú stránku. Môžete sa odhlásiť.

Ako vidíte, v chránenom dokumente obsahujeme iba jeden súbor – checkAuth.php. Všetky ostatné súbory sú zahrnuté v iných scenároch. Náš kód preto nevyzerá objemne. Zorganizovali sme registráciu a autorizáciu používateľov. Teraz musíte používateľom povoliť odhlásenie. Za týmto účelom vytvoríme skript v súbore logout.php.

/** * Skript na odhlásenie používateľa. Keďže používatelia sú * autorizovaní prostredníctvom relácií, ich používateľské meno a heslo sú * uložené v superglobálnom poli $_SESSION. Ak sa chcete odhlásiť * zo systému, jednoducho zničte * hodnoty polí $_SESSION["login"] a $_SESSION["password"], * potom používateľa presmerujeme na prihlasovaciu stránku */ // Be nezabudnite spustiť reláciu session_start(); unset($_SESSION["prihlásenie"]); unset($_SESSION["heslo"]); header("umiestnenie: login.php");

Skript na registráciu, autorizáciu a overenie používateľov je pripravený. Môžete ho použiť pre seba, doplniť, upraviť podľa svojich potrieb. Ak máte otázky, môžete sa ich opýtať v komentároch. Všetky tu diskutované súbory si môžete stiahnuť zabalené do jedného archívu.

P.S. Som si vedomý toho, že je lepšie písať objektovo orientovaný kód, viem, že sa neoplatí prenášať a uchovávať heslo v čistom texte, že informácie vložené do databázy treba najskôr skontrolovať. Viem. O tomto tu nebudem hovoriť.

V rámci služby Personal Web Server môžu byť stránky hosťované na účte spúšťané nielen na hlavnom webovom serveri, ale aj na vlastnej inštancii webového servera Apache, ktorého procesy sú vždy pripravené na spracovanie požiadaviek na stránku.

Osobný webový server umožňuje okrem optimalizácie spracovania požiadaviek využívať aj softvér, ktorý nie je dostupný na bežnom webovom serveri: PHP akcelerátory, komplexné riešenie na zlepšenie výkonu projektov riadených CMS 1C-Bitrix a PHP skript. nástroj na ladenie.

Služba je dostupná pre všetky aktuálne tarifné plány, môžete ju pripojiť v sekcii „Webový server“ na ovládacom paneli hostingu.

Princíp činnosti


Technická stránka hosťovania má dvojúrovňovú konfiguráciu webového servera. Všeobecný webový server Apache, ktorý prijal požiadavku od Nginx, je nútený vytvoriť nový podriadený proces a ukončiť ho, keď je žiadosť spracovaná.

Osobný webový server výrazne zjednodušuje interakciu účtu s hlavným procesom Apache: pod užívateľským menom hostiteľského účtu vždy beží určitý počet procesov osobného webového servera, ktoré majú iba dva stavy: „zaneprázdnený“ alebo „voľný“.

Procesy osobného webového servera sa zaoberajú spracovaním požiadaviek na stránku vo výške stanovenej zvoleným tarifným plánom. Môžete vidieť, ako proces osobného webového servera prijme a vykoná požiadavku a potom sa uvoľní, pomocou vrchnej pomôcky v konzole pri pripájaní k hostiteľskému účtu cez SSH.

Schopnosti

  • Spustenie webového servera Apache s ďalšími modulmi, ktoré nie sú dostupné na bežných účtoch zdieľaného hostingu.
  • Reštartovanie osobného webového servera z ovládacieho panela.
  • Používanie PHP akcelerátorov, ktoré výrazne urýchľujú prácu rôznych CMS: Zend OPCache, APC , xCache a eAccelerator .
  • Správa rozšírenia PHP: Zend Optimizer , ionCube Loader , xDebug .
  • Optimalizácia projektov pod kontrolou CMS 1C-Bitrix nastavením PHP prostredia, ktoré spĺňa požiadavky CMS.
  • Lepší výkon ako všeobecný webový server, pretože procesy požiadaviek bežia stále.

Službu „Personal Web Server“ odporúčame používať pri hosťovaní serióznych projektov so strednou a vysokou návštevnosťou, alebo projektov, ktoré vyžadujú neštandardné nastavenia prostredia a pokročilé možnosti správy stránok.

Kontrola verzie webového servera

PHP

PHP (hypertextový predprocesor)- najznámejší a najrozšírenejší jazyk na vývoj webových aplikácií. Verzia PHP sa nastavuje prostredníctvom správy osobného webového servera (dostupné od 5.2 do 7.1 vrátane). Odporúčaná verzia PHP, ktorá spĺňa požiadavky väčšiny CMS a rozšírení, je PHP 5.6. Zoznam aktuálnych verzií sa aktualizuje včas.

uWSGI (Python)

WSGI (rozhranie brány webového servera) je populárny štandard na prepojenie medzi programom Python bežiacim na strane servera a samotným webovým serverom Apache. Vyžaduje sa pre projekty napísané v Pythone.

Node.js

Node.js- softvérová platforma na spúšťanie kódu JavaScript. Node.js umožňuje JavaScriptu interagovať so zariadeniami prostredníctvom svojho API, pripájať externé knižnice v rôznych jazykoch a poskytovať im volanie z kódu JavaScript.

Používanie akcelerátorov PHP

PHP akcelerátory sú rozšírenia, ktoré ukladajú skompilovaný kód PHP skriptu do pamäte pre rýchle spustenie pri ďalšom volaní. Umožňujú vám výrazne urýchliť vykonávanie PHP skriptov a znížiť zdroje webového servera potrebné na to (podľa niektorých odhadov - 5-20 krát).

Pri bežnom spôsobe fungovania PHP musí byť každý skript pred spustením skompilovaný do strojového kódu a až potom spustený. Kompilácia nastáva pri každom prístupe k skriptu, to znamená, že pri každom zobrazení stránky sa kompilácia skriptu začína znova. Kompilácia skriptu si vyžaduje čas a zdroje CPU. PHP akcelerátory ukladajú skompilovanú verziu skriptu do pamäte RAM. Pri následných volaniach skriptu teda nie je potrebná kompilácia a PHP okamžite začne vykonávať strojový kód. Ukladanie do vyrovnávacej pamäte šetrí prostriedky procesora a skracuje čas potrebný na vykreslenie stránky.

Okrem hlavnej funkcie – ukladanie skriptov do vyrovnávacej pamäte – akcelerátory poskytujú skriptom aj možnosť ukladať ľubovoľné premenné do pamäte RAM pre neskorší rýchly prístup. Mechanizmy ukladania stránok do vyrovnávacej pamäte v mnohých redakčných systémoch (CMS) sú založené na tejto funkcii, čo výrazne urýchľuje ich prácu.

Pri použití osobného webového servera sú k dispozícii štyri urýchľovače, ktoré poskytujú cachovanie PHP skriptov.

Zend OPCache

Zend OPCache- urýchľuje prácu stránok v jazyku PHP využitím techniky cachovania zostavených skriptov (opcode) v RAM a aplikovaním dodatočných optimalizácií. Testovanie aplikácie tohto akcelerátora ukázalo najoptimálnejšie výsledky pre väčšinu CMS v spojení s PHP 5.6.

APC

APC (alternatívna vyrovnávacia pamäť PHP)- open source softvér na ukladanie výsledkov PHP skriptov do vyrovnávacej pamäte. Na zlepšenie výkonu stránok vytvorených na populárnych CMS, ako sú Joomla, WordPress, Drupal, UMI.CMS, sa odporúča použiť vyrovnávaciu pamäť APC. PHP 5.6 a 7.0 podporujú moduly akcelerátora APCu a APCu-bc.

eAccelerator

eAccelerator- vykonáva funkcie akcelerátora, optimalizátora a rozbaľovača a má vstavané funkcie dynamického ukladania obsahu do vyrovnávacej pamäte. Podľa výsledkov testovania so zástupcami výrobcov CMS sa eAccelerator odporúča používať s CMS "1C-Bitrix: Site Management" a populárnym HostCMS.

xCache

xCache- efektívne pre projekty s vysokým zaťažením. Akcelerátor xCache je dostupný len pri používaní CMS, ktorého výrobcovia ho odporúčajú.

Povolenie urýchľovača znamená, že účet spotrebuje dodatočnú oblasť pamäte určenú na ukladanie údajov do vyrovnávacej pamäte. Množstvo pamäte dostupnej na použitie je určené tarifným plánom a je uvedené v príslušnej časti stránky.

PHP moduly a rozšírenia

ZendOptimizer

Zend Optimizer- aplikácia od Zend Technologies Ltd. Rozšírenie Zend Optimizer je modul na strane servera, ktorý sa používa na spúšťanie skriptov kódovaných pomocou Zend Encoder a Zend SafeGuard Suite, čím sa výrazne zvyšuje ich rýchlosť. K dispozícii iba pre PHP 5.2.

Nakladač ionCube

Nakladač ionCube- softvér potrebný na dekódovanie zdrojového kódu zakódovaného pomocou technológie ionCube Encoder. Celkovo vám sada nástrojov ionCube (Encoder a Loader) umožňuje kódovať, zahmlievať a licencovať zdrojový kód PHP.

xDebug

xdebug- Open source softvér potrebný skúsenými vývojármi na ladenie skriptov stránok. Zahrnutie nástroja xDebug náročného na zdroje implementuje možnosť protokolovania, v ktorom sa budú zaznamenávať všetky akcie, od prístupu na stránku z prehliadača až po prijatie hotovej stránky: vykonávanie interných skriptov, generovanie dotazov SQL, prístup na stránku tretej- stranícke zdroje atď.

Optimalizácia pre "1C-Bitrix"

Populárny redakčný systém „1C-Bitrix“ má množstvo systémových požiadaviek na hostingovú stránku, vrátane nastavenia viacbajtových reťazcov, ktoré sa v moderných verziách PHP musia meniť iba cez súbor php.ini. Skúsení vývojári aj začínajúci používatelia budú môcť nakonfigurovať mechanizmus preťaženia funkcie mbstring.func_overload a podporované kódovanie znakov mbstring.internal_encoding výberom požadovanej verzie v zozname optimalizácie 1C-Bitrix.

V dôsledku testovania výkonu stránky pod kontrolou 1C-Bitrix boli najlepšie výsledky dosiahnuté pri použití odporúčaného cachovania pomocou akcelerátora ZendOPCache v spojení s PHP 5.6.

Aby sa nastavenia prejavili, musíte použiť požadované nastavenie a reštartovať osobný webový server.

Spätné odkazy (0)

Aktualizované dňa: 2018-03-12

Uverejnené dňa: 2016-12-21

Postupom času PHP pridávalo funkcie, ktoré podporujú vývoj bezpečných aplikácií, ako aj zastarané alebo odstránené funkcie, ktoré uľahčovali písanie nezabezpečeného kódu.

V tomto návode sa dozviete, ako vytvoriť moderný prihlasovací a registračný systém, ktorý využíva funkcie PHP zamerané na bezpečnosť a používa jQuery na odosielanie požiadaviek AJAX a Bootstrap na poskytovanie rýchleho a pekného používateľského rozhrania, ktoré môže fungovať bez ohľadu na to, či používate iné rámce alebo nie.



Ak máte otázky alebo pripomienky, môžete poslať správu ako komentár k tomuto článku alebo v jeho .

Denník zmien

2017-03-27: Pridané ďalšie informácie o sťahovaní a inštalácii pomocou nástroja na skladanie.

2017-01-01: Aktualizovaný článok, aby odrážal, že tieto postupy budú aj v roku 2017 naďalej bezpečné




Ak chcete pridať komentár, musíte byť registrovaný používateľ alebo sa prihlásiť

Prihláste sa ihneď pomocou svojho účtu na:

Pekný deň priatelia! Poďme sa pozrieť na registráciu používateľov v PHP. Najprv si definujme podmienky registrácie našich používateľov:

  • Heslo je zašifrované pomocou algoritmu MD5
  • Heslo bude "soľ"
  • Kontrola obsadenosti prihlásenia
  • Aktivácia používateľa listom.
  • Zaznamenávanie a uchovávanie údajov v DBMS MySQL

Aby sme mohli napísať tento skript, musíme pochopiť, čo je registrácia používateľa. Registrácia používateľa je získavanie skutočných údajov používateľa, spracovanie a uchovávanie údajov.

Zjednodušene povedané, registrácia je len záznam a uloženie určitých údajov, ktorými môžeme v našom prípade autorizovať používateľa – ide o Prihlásenie a Heslo.

Oprávnenie - udelenie oprávnenia určitej osobe alebo skupine osôb vykonávať určité úkony, ako aj proces overovania týchto práv pri pokuse o vykonanie týchto úkonov. Jednoducho povedané, pomocou autorizácie môžeme obmedziť prístup ku konkrétnemu obsahu na našej stránke.

Pozrime sa na štruktúru adresárov skriptov, aby sme implementovali naše prihlásenie s autorizáciou. Potrebujeme rozdeliť skripty na logické časti. Moduly registrácie a autorizácie sme umiestnili do samostatného adresára. Do samostatných adresárov umiestnime aj pripojenie k databáze. MySQL, súbor s vlastnými funkciami, súbor štýlu css a naša šablóna HTML. Táto štruktúra vám umožňuje rýchlo sa pohybovať v skriptoch. Predstavte si, že máte veľkú stránku s množstvom modulov a podobne. a ak nie je poriadok, v takom neporiadku sa bude len veľmi ťažko niečo hľadať.

Keďže všetky údaje uložíme do DBMS MySQL, potom si vytvoríme malú tabuľku, do ktorej budeme ukladať registračné údaje.

Najprv musíte vytvoriť tabuľku v databáze. Zavolajme na stôl bez_reg kde bez je predpona tabuľky a reg názov tabuľky.

Štruktúra tabuľky: bez_reg

-- -- Štruktúra tabuľky `bez_reg` -- VYTVORIŤ TABUĽKU, AK NEEXISTUJE `bez_reg` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(200) NOT NULL, `pass` varchar(32) NOT NULL , `salt` varchar(32) NOT NULL, `active_hex` varchar(32) NOT NULL, `status` int(1) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Teraz vytvoríme hlavné skripty pre ďalšiu prácu.

SÚBOR INDEX.PHP

SÚBOR CONFIG.PHP

"); ?>

Súbor 404.HTML

Chyba 404

Chyba 404

Na stránke sa vyskytla chyba 404

Návrat

súbor BD.PHP

SÚBOR INDEX.HTML

Registrácia užívateľa PHP MySQL s aktivačným e-mailom

SÚBOR FUNCT.PHP

"."\n"; if(is_array($data)) ( foreach($data as $val) $err .= "

  • ".$val."
  • "."\n"; ) inak $err .="
  • ".$data."
  • "."\n"; $err .=""."\n"; return $err; ) /**Jednoduchý obal MySQL dotazu * @param string $sql */ funkcia mysqlQuery($sql) ( $res = mysql_query($sql); /* Skontrolovať výsledok Toto sa zobrazuje skutočný dotaz odoslaný do MySQL, ako aj chyba.*/ if(!$res) ( $message = "Zlý dotaz: " . mysql_error() . "\n"; $message .= "Celý dotaz: " . $ sql; die($message); ) return $res; ) /**Jednoduchý generátor soli * @param string $sql */ function salt() ( $salt = substr(md5(uniqid()), - 8); return $soľ ;)

    Začnime písať registráciu. Na začiatok budeme musieť vytvoriť šablónu registračného formulára, aby používateľ mohol zadať svoje údaje na spracovanie. Ďalej budeme musieť napísať samotný handler formulára, ktorý skontroluje správnosť zadaných údajov používateľa. Po úspešnom overení údajov ich zapíšeme do našej databázy a pošleme používateľovi e-mail na aktiváciu svojho účtu.

    SÚBOR REG.PHP

    Úspešne ste sa zaregistrovali! Prosím aktivujte si svoj účet!!"; //Aktivujte účet if(isset($_GET["key"])) ( //Skontrolujte kľúč $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `active_hex` = "". escape_str ( $_GET["key"]) """; $res = mysqlQuery($sql); if(mysql_num_rows($res) == 0) $err = "Aktivačný kľúč je neplatný!"; //Skontrolujte chyby a zobraziť používateľovi if(count($err) > 0) echo showErrorMessage($err); else ( //Získať adresu používateľa $row = mysql_fetch_assoc($res); $email = $row["login"]; //Aktivácia používateľa účtu $sql = "UPDATE `".BEZ_DBPREFIX ."reg` SET `status` = 1 WHERE `login` = ".$email ."""; $res = mysqlQuery($sql); / /Poslať aktivačný e-mail $title = "(!LANG:Váš účet na http://webovej stránke bol úspešne aktivovaný"; $message = "Поздравляю Вас, Ваш аккаунт на http://сайт успешно активирован"; sendMessageMail($email, BEZ_MAIL_AUTOR, $title, $message); /*Перенаправляем пользователя на нужную нам страницу*/ header("Location:". BEZ_HOST ."less/reg/?mode=reg&active=ok"); exit; } } /*Если нажата кнопка на регистрацию, начинаем проверку*/ if(isset($_POST["submit"])) { //Утюжим пришедшие данные if(empty($_POST["email"])) $err = "Поле Email не может быть пустым!"; else { if(!preg_match("/^!} [e-mail chránený](+\.)+(2,6)$/i", $_POST["e-mail"])) $err = "E-mail bol zadaný nesprávne"."\n"; ) if(empty($_POST[ "pass" ])) $err = "Pole s heslom nemôže byť prázdne"; if(empty($_POST["pass2"])) $err = "Pole na potvrdenie hesla nemôže byť prázdne"; //Skontrolovať chyby a zobraziť používateľovi, ak (count($err) > 0) echo showErrorMessage($err); else ( /*Pokračovať v kontrole zadaných údajov Skontrolujte zhodujúce sa heslá*/ if($_POST["pass"] != $_POST["pass2" ] ) $err = "Heslá sa nezhodujú"; //Skontrolovať chyby a zobraziť používateľovi if(count($err) > 0) echo showErrorMessage($err); else ( /*Skontrolujte, či máme takého používateľa v databáza* / $sql = "VYBERTE `prihlásenie` Z `.BEZ_DBPREFIX ."reg` WHERE `login` = ".escape_str($_POST["e-mail"]) ."""; $res = mysqlQuery($ sql); if(mysql_num_rows($res) > 0) $err = "Prepáčte, prihlásenie: ". $_POST["e-mail"] ." zaneprázdnený!"; //Skontrolujte chyby a zobrazí sa používateľovi if(count($err) > 0) echo showErrorMessage($err); else ( //Získajte HASH soli $salt = salt(); // Osolte heslo $pass = md5(md5($_POST["pass"]).$salt); /*Ak všetko pôjde dobre, zapíšte údaje do databázy*/ $sql = "INSERT INTO `". BEZ_DBPREFIX ."reg ` VALUES("", "" .escape_str($_POST["e-mail"]) "", "". $pass .", "". $salt.", "". md5($salt) . "", 0)"; $ res = mysqlQuery($sql); //Odoslať aktivačný e-mail $url = BEZ_HOST ."less/reg/?mode=reg&key=". md5($salt); $title = "(! JAZYK: Registrácia na webovej stránke http://"; $message = "Для активации Вашего акаунта пройдите по ссылке ". $url .""; sendMessageMail($_POST["email"], BEZ_MAIL_AUTOR, $title, $message); //Сбрасываем параметры header("Location:". BEZ_HOST ."less/reg/?mode=reg&status=ok"); exit; } } } } ?>!}

    REG_FORM.HTML FILE

    Registrácia užívateľa PHP MySQL s aktivačným e-mailom

    Email *:
    heslo *:
    potvrdenie hesla *:

    Polia s ikonou * požadovaný

    Keďže registrácia našich používateľov je pripravená, je čas napísať autorizáciu. Vytvoríme formulár na autorizáciu užívateľa, potom napíšeme handler autorizačného formulára a nakoniec vytvoríme skript show.php ktorý nám ukáže, či sme v systéme autorizovaní alebo nie.

    SÚBOR AUTH.PHP

    0) echo showErrorMessage($err); else ( /*Vytvoriť dotaz na načítanie databázy na overenie používateľa*/ $sql = "SELECT * FROM `". BEZ_DBPREFIX ."reg` WHERE `login` = "". escape_str($_POST["e-mail"]) ." " AND `stav` = 1"; $res = mysqlQuery($sql); //Ak sa prihlásenie zhoduje, skontrolujte heslo if(mysql_num_rows($res) > 0) ( //Získajte údaje z tabuľky $row = mysql_fetch_assoc( $res ); if(md5(md5($_POST["pass"]).$row["salt"]) == $row["pass"]) ( $_SESSION["user"] = true; // Resetovanie parametrov header("Location:". BEZ_HOST ."less/reg/?mode=auth"); exit; ) else echo showErrorMessage("Chybné heslo!"); ) else echo showErrorMessage("Prihlásenie ". $_POST["e-mail"] ." nenašiel sa!"); ) ) ?>

    Pre tých, ktorí majú najnovšiu verziu PHP, uverejňujem tento skript pomocou CHOP pretože rozšírenie MySQL je zastaraný a bol odstránený z novej verzie PHP. Stiahnite si registráciu a autorizáciu php mysql pdo

    Archív bol aktualizovaný 24. februára 2015.

    Pozor: Ak používate tento skript na lokálnom serveri, napr DENWER,XAMPP, potom by ste nemali čakať na listy do vašej poštovej schránky. Listy sú v útržku poslať mail. AT Denver môžete ich nájsť po ceste Z:\tmp\!odoslať e-mail\ Tieto súbory môžete otvoriť v akomkoľvek e-mailovom klientovi.

    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. Ako funguje náš skript, 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 si na svojom PC vytvoríte databázu http://localhost/phpmyadmin/). Vytvorte tabuľku používateľov, bude mať 3 polia.

    Vytvorím ho 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 na tento server","heslo na tento server");
    mysql_select_db ("názov databázy na pripojenie", $db);
    ?>

    V mojom prípade to vyzerá takto:

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

    Ušetríme bd.php.
    Výborne! V databáze máme tabuľku, spojenie s ňou. Teraz môžete začať vytvárať stránku, kde používatelia zanechajú svoje údaje.

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



    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ánenie nadbytočných medzier
    $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é používateľské meno je už zaregistrované. Zadajte iné používateľské meno.");
    }
    // ak žiadne nie sú, uložte údaje
    $vysledok2 = 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. Hlavná stránka";
    }
    inak(
    echo "Chyba! Nie ste prihlásený.";
    }
    ?>

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

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


    Hlavná stránka


    Hlavná 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 nezobrazíme
    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. Existuje 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. Práve v ňom sa ukladajú údaje používateľa, kým 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 užívateľa do premennej $login, ak je prázdna, tak premennú zničíme
    if (isset($_POST["heslo"])) ( $password=$_POST["heslo"]; if ($password =="") ( unset($password);) )
    //do premennej $password vložte heslo zadané používateľom, ak je prázdne, zničte 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ánenie nadbytočných medzier
    $login = trim($login);
    $heslo = trim($heslo);
    // pripojenie k databáze
    include("bd.php");// súbor bd.php by mal byť v rovnakom priečinku ako všetci ostatní, ak nie, stačí zmeniť cestu

    $vysledok = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //získanie všetkých údajov o užívateľovi so zadaným loginom z databázy
    $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 reláciu pre používateľa! Môžete mu zablahoželať, vstúpil!
    $_SESSION["login"]=$myrow["login"];
    $_SESSION["id"]=$myrow["id"];//tieto údaje sa veľmi často používajú, takže ich "prenesie" prihlásený používateľ
    echo "Úspešne ste sa prihlásili na stránku! Hlavná stránka";
    }
    inak(
    //ak sa heslá nezhodujú

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

    OK, teraz je po všetkom! Možno je lekcia 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, nahrať avatary, odhlásiť sa zo svojho účtu (na tento účel jednoducho zničte premenné z relácie pomocou funkcie odstaviť) a tak ďalej. Veľa štastia!

    Všetko skontrolované, funguje dobre!