Kako narediti registracijo PHP. Ustvarjanje preprostega sistema za registracijo uporabnikov na PHP in MySQL. Zakaj se je vse začelo

Ustvarjanje članstva na spletnem mestu SEMS, kot je najprej zastrašujoča naloga. Če si kdaj želel to storiti sami, potem se je odrekla, ko ste začeli v mestu, kako ga boste skupaj z uporabo vaših spretnosti PHP, potem je ta članek za vas. Sprehodili se bomo skozi vsak vidik ustvarjanja spletnega mesta, ki temelji na članstvo, s področjem varnega člana, zaščiteno z geslom.

Celoten proces je sestavljen iz dveh velikih delov: registracije uporabnikov in preverjanje pristnosti uporabnika. V prvem delu bomo pokrili oblikovanje obrazca za registracijo in z navedbo podatkov v bazi podatkov MySQL. V drugem delu bomo ustvarili prijavni obrazec in ga uporabili, da bi uporabnikom omogočili dostop na varnem območju.

Prenesite kodo.

Celotno izvorno kodo lahko prenesete za sistem registracije / prijave iz spodnje povezave:

Konfiguracija in nalaganje.
Datoteka README vsebuje podrobna navodila.

Odprite. vir vključuje člane_config.php Datoteko v urejevalniku besedila in posodobite konfiguracijo. (Prijava baze podatkov, ime vaše spletne strani, vaš e-poštni naslov itd.).

Naložite celotno vsebino imenika. Preizkusite register.php s predložitvijo obrazca.

Prijavni obrazec

Da bi ustvarili uporabniški račun, moramo zbrati minimalno količino informacij od uporabnika. Potrebujemo njegovo ime, njegov e-poštni naslov in želeno uporabniško ime in geslo. Seveda lahko na tej točki zahtevamo več informacij, vendar je dolga oblika vedno izklop. Omejimo se na samo ta polja.

Tukaj je prijavni obrazec:

Registriraj se

Torej imamo besedilna polja za ime, e-pošto in geslo. Upoštevajte, da uporabljamo za boljšo uporabnost.

Potrjevanje obrazca

Na tej točki je dobra ideja, da nastavite nekaj kode za potrjevanje obrazcev, zato se prepričamo, da imamo vse podatke, potrebne za ustvarjanje uporabniškega računa. Preveriti moramo, če sta ime in e-pošta, in geslo je napolnjeno in da je e-pošta v ustrezni obliki.

Ravnanje s predložitvijo obrazca

Zdaj moramo obravnavati predložene podatke obrazca.

Tukaj je zaporedje (glejte datoteko FG_MEMSITE.php v nalaganem viru):

funkcijski register () (IF (! ISSET ($ _ Post [", ki je bil predložen"])) (vrnitev false;) $ formvars \u003d matrika (); če (! $ To-\u003e validateregistrisationsmission ()) $ to \u003e BELLTREGISTRACITAUBMISMISIJA ($ Formvars); če (! $ To-\u003e Savetodatabase ($ Formvars)) (vrnite false;) Če (! $ To-\u003e SenduserConfirmationAil ($ Formvars)) (vrnitev false)) $ Tvorbe); vrnitev true;)

Najprej smo potrdili remocijo obrazca. Potem zbiramo in "sanirali" podatke o predložitvi obrazca (vedno to storite pred pošiljanjem e-pošte, shranjevanje v bazo podatkov itd.). Predložitev obrazca je, da je shranjena v tabelo baze podatkov. Pošiljamo e-poštno sporočilo uporabniku, ki zahteva potrditev. Nato razkrije administrator, ki ga je uporabnik registriral.

Shranjevanje podatkov v bazi podatkov

Zdaj, ko smo zbrali vse podatke, ga moramo shraniti v bazo podatkov.
Tukaj je, kako shranimo predložitev obrazca v bazo podatkov.

funkcija SaveTodatabase (& $ Formvars) (če (! $ To-\u003e DBLOGIN ()) ("Prijava baze podatkov ni uspela!"); Vrnite false;) Če (! $ To-\u003e Zagotoviti ()) (vrnite false), če ( ! $ To-\u003e IsfieldOnique ($ Formvars, »Email«)) ($ To-\u003e NomirError ("Ta e-pošta je že registrirana"); Vrnite false;) Če (! $ To-\u003e IsfieldUnique ($ Formvars, »Uporabniško ime« )) ("To-\u003e rojstvoError (" to uporabniško ime je že uporabljeno. Poskusite drugo uporabniško ime "); vrnite false;), če (! $ To-\u003e visetodb ($ formvars)) ($ to Baza podatkov ni uspela! "); Vrnite false;) Return True;)

Upoštevajte, da ste podatki za prijavo baze podatkov konfigurirali v datoteki člana_Config.php. Večina primerov lahko uporabite »Localhost« za gostitelja baze podatkov.
Po prijavi se prepričamo, da je tabela obstoječa. (Če ne, bo skript ustvaril zahtevano tabelo).
Potem se prepričamo, da sta uporabniško ime in e-pošta edinstvena. Če ni edinstvena, vrnemo napako na uporabnika.

Struktura tabele baze podatkov

To je struktura tabele. Ustvarjalna () funkcija v datoteki FG_Members.php Ustvari tabelo. Tukaj je koda:

funkcija Ertable () () ($ Qry \u003d "Ustvari tabelo $ To-\u003e TableName (". "ID_USER INT NI NULL AUTO_INCREMENT,". "Ime VARCHAR (128) Ni ," "Email Varchar (64) Ni ,". " Telefon_Number VARCHAR (16) Ni , "Uporabniško ime Varchar (16) ni ,". "Geslo VARCHAR (32) Ni ,". "Contrycode Varchar (32)," "Primarni ključ (ID_User)". ")";; Če (! MySQL_QUERY ($ QRY, $ to-\u003e Povezava)) ($ To-\u003e Handledberror (»Napaka pri ustvarjanju tabele je bila query's $ qry«); vrnite false;) Return True;)

Polje ID_User bo vsebovalo edinstven ID uporabnika in tudi primarni ključ tabele. Opazite, da za polje Geslo dovolimo 32 znakov. To naredimo, ker bomo kot dodatni varnostni ukrep shranili geslo v bazi podatkov šifrirano z uporabo MD5. Prosimo, upoštevajte, da je MD5 enosmerna metoda šifriranja, ne bomo mogli obnoviti gesla, če ga uporabnik pozabi.

Vstavljanje registracije na tabelo

Tukaj je koda, ki jo uporabljamo za vstavljanje podatkov v bazo podatkov. Vse naše podatke bomo imeli na voljo v € € FormVars Cray.

funkcija VIRTINTODB (& $ Formvars) ($ Contrycode \u003d $ To-\u003e MakeconfirmationMD5 ($ Formvars [E-pošta "]); $ Insert_Query \u003d" Vstavi v ". $ To-\u003e TADENME." (Ime, e-pošta, uporabniško ime, geslo, Potrditvene vrednosti) Vrednosti ("". $ To-\u003e SanitizeForSQL ($ Formvars ["ime"]). "". ". $ To-\u003e SanitizeForSQL ($ Formvars [E-pošta"]). "", " . $ To-\u003e SanitizeForSQL ($ Formvars ["Uporabniško ime"]). "" ",". MD5 ($ Formvars ["Geslo"]). "", "" $ Contrycode. "") "; Če (! Mysql_query ($ Insert_Query, $ to-\u003e Povezava)) ($ To-\u003e Handledberror ("Napaka vstavljanje podatkov na tabelo nQuery: $ Insert_Query"); Vrnite False;) Retur True;)

Opazite, da uporabljamo PHP Function MD5 (), da šifrirate geslo, preden ga vstavite v bazo podatkov.
Prav tako naredimo edinstveno potrditveno kodo s e-poštnega naslova uporabnika.

Pošiljanje e-poštnih sporočil

Zdaj, ko imamo registracijo v naši bazi podatkov, bomo poslali potrditveno e-pošto uporabniku. Uporabnik mora klikniti povezavo v e-pošti s pritrjevanjem dokončaj Postopek registracije.

funkcija SenduserconfirmmationEmail (& $ Formvars) ($ Mailer \u003d New Phpomailer (); $ Mailer-\u003e Charset \u003d "UTF-8"; $ Mailer-\u003e AddDaddress ($ Formvars [E-pošta "], $ Formvars [" ime "]) ; $ Mailer-\u003e subjekt \u003d "Vaša registracija z" $ to-\u003e sitename; $ mailer-\u003e od \u003d $ to-\u003e getffraddress (); $ confirmcode \u003d urlencode ($ to-\u003e makeconfirmmationmd5 ($ formvars ["email" ])); $ Confilt_url \u003d $ To-\u003e Getabsoluteurlfolder (). "/ Potrdiloreg.php? Koda \u003d". $ Contrycode; $ Mailer-\u003e Body \u003d "Hello". $ Formvars ["ime"]. N "." Hvala za vašo registracijo z "$ to-\u003e sitename." \\ T \\ t Krmiljenje ("neuspešno pošiljanje potrditve registracije e-pošte."); Vrnite false;) Return True;)

Posodobitve.

9. januar 2012.
Ponastavite geslo / sprememba gesla
Kodeks se zdaj deli v Githibu.

Dobrodošel nazajUporabniško ime (); ?\u003e!

Licenca.


Kodeks se deli pod licenco LGPL. Lahko ga prosto uporabljate na komercialnih ali nekomercialnih spletnih straneh.

Ni povezanih delovnih mest.

Pripombe o tem vnosu so zaprte.

Če potrebujete enega od odsekov vaše spletne strani Ugodne omejene, vendar negotov krog oseb, najlažji način, da to storijo z registracijo in odobritvijo uporabnikov. Obstaja veliko načinov za odobritev uporabnikov. Uporabite lahko orodje spletnega strežnika in orodij programskega jezika. Govorili bomo o tem, ko se uporabljajo seje PHP.

Verjetno bi rad videl sodobnejši način za ustvarjanje takšne oblike. Njegova polna njegove moderne in trenutne predstavitve za mene je še vedno v načrtih, vendar lahko vidite, da se lahko obrazec povratnih informacij zgradi z uporabo objektno usmerjenih tehnik v PHP.

Za začetek, recimo vse korake, ki naredijo dlje. Kaj potrebujemo? Potrebujemo skript, ki bo registriral uporabnika, pooblastil uporabnika, uporabnika preusmerjajte nekje po avtorizaciji. Prav tako moramo ustvariti stran, ki bo zaščitena pred dostopom nepooblaščenih uporabnikov. Če želite registrirati in odobriti, bomo morali ustvariti HTML-obrazec. V bazi podatkov bomo shranili informacije o registriranih uporabnikih. To pomeni, da še vedno potrebujemo skript za povezavo z DBMS. Vsa dela bodo izvedene s funkcijami, ki jih bomo pisali. Te funkcije bomo shranili v ločeno datoteko.

Torej potrebujemo naslednje datoteke:

  • povezava z DBMS;
  • funkcije po meri;
  • dovoljenje;
  • prijava;
  • varna stran;
  • scenarij za dokončanje uporabnika;
  • skript Preverjanje statusa dovoljenja za uporabnike;
  • tabela stilov za najpreprostejšo obliko naših strani.

Vse to bo brez pomena, če nimate ustrezne tabele v bazi podatkov. Zaženite orodje za upravljanje DBMS (phpmyadmin ali ukazna vrstica, kot bolj priročno) in v njem naredite naslednjo zahtevo:

Ustvarite tabelo `uporabnikov (INT (11) Ne null Auto_Increment," Login` ID ")) Engine \u003d MyiSam Privzeta Charset \u003d UTF8 Auto_Increment \u003d 1;

Naše datoteke s skripti, ki jih bom poklical (vse bodo ležali v istem imeniku):

  • baza podatkov.
  • funkcije.php;
  • login.php;
  • registry.php;
  • index.php;
  • logout.php;
  • checkauth.php;
  • stil.csss.

Namen vsakega od njih, prepričan sem, da razumete. Začnimo s skriptnimi priključki iz DBMS. To ste ga že videli. Samo shranite kodo tega scenarija v datoteko z imenom Database.php. Funkcije po meri bomo izjavili v datoteki funkcij. Kako bo vse delo? Nepooblaščen uporabnik poskuša dostopati do dokumenta Secure Index.php, sistem preveri, ali je uporabnik dovoljen, če uporabnik ni pooblaščen, je preusmerjen na stran pooblastila. Na strani o pooblastitvi mora uporabnik videti obrazec za avtorizacijo. Naredimo.

Dovoljenje za uporabnika.

Prijavite se.

Zdaj je naša oblika dana vrsta. Hkrati določimo pravila za druge elemente. I, teče naprej, bo vsebina slog tabele popolnoma.

/ * slog datoteke.css * / .row (robo-dno: 10px; širina: 220px;) .Dow etiketa (prikaz: blok; pisava-teža: krepko;)..). \\ t (velikost pisave: 1.2em; Oblazinjenje: 2px 5px;) .to_reg (velikost pisave: 0.9em;) .Instruction (velikost pisave: 0,8em; barva: #aaaaaa; rob-left: 2px; kurzor: privzeto;).) .Error (barva: rdeča; Robov - levo: 3px;)

Če je vse opravljeno pravilno, morate v brskalniku imeti naslednje:

Seveda, nismo še enkrat registriranega uporabnika, in se prijaviti, morate registrirati. Naredimo obrazec za registracijo.

Registracija uporabnikov

" />

Verjetno ste opazili dejstvo, da so spremenljivke PHP prisotne v HTML -KoD. To so vsebina atributov polj polj besedila, vsebina zabojnikov, namenjenih za izhod napak. Toda teh spremenljivk nismo inicializirali. Naredimo to.

Registracija uporabnikov

" />
Uporabniško ime je lahko samo simboli latinske abecede, številke, znakov "_", "-", ".". Dolžina uporabniškega imena ne sme biti krajša od 4 znakov in ne daljši od 16 znakov.
V geslu, lahko uporabite samo simbole latinske abecede, številke, simbolov "_", "!", "(", ")". Geslo ne sme biti krajše od 6 znakov in ne več kot 16 znakov
Ponovite prejšnje geslo

V atributu akcije, oznaka obrazca ni določena. V tem primeru, ko pošiljanje podatkov obrazcev, ki jih je treba obdelati, bodo v istem scenariju, iz katerega so šli. Zato moramo pisati obrazce za obdelavo podatkov. Toda najprej uredimo algoritem za njihovo predelavo.

Potrebujemo, da sta polja za prijavo in geslo prazna. Potem je treba preveriti prijavo za skladnost z zahtevami. Geslo mora biti tudi v skladu z opisanimi zahtevami, zato mora biti ponovno določeno geslo, ki ga mora sovpadati, in, poleg tega pa morajo biti enaki. Če se nekateri od teh pogojev ne izvajajo, je treba obdelavo podatkov obrazca prekiniti, ustrezno opozorilo je treba zabeležiti v polje sporočil o napakah, in jo je treba prikazati uporabniku. Za udobje uporabnika bomo shranili prijavo, ki jo je vnesel (če je označil), pisanje njene vrednosti na polje $ polj.

Če je vse v redu, v oknu brskalnika, se obrnete na dokument registracije.php, morate videti o tem obrazcu:

Zdaj, recimo, uporabnik je pritisnil gumb za registracijo, ni izpolnil polj obrazca. V skladu z našim algoritmom, prijava in geslo ne moreta biti prazna. Če se ta pogoj ne izvede, je registracija nemogoča. Spomnimo se, da se v trenutnem scenariju pojavi obdelava podatkov obrazca. Zato moramo spremeniti svojo kodo z dodajanjem ustreznih pregledov. Takoj označite naslednje preglede. Če sta vpisana prijava in geslo, in morate preveriti njihovo skladnost z določenimi zahtevami. Če želite preveriti prijavo in geslo, bomo ustvarili uporabniške funkcije v datoteki funkcij.

/ ** * Funkcije.php * Datoteka z uporabniškimi funkcijami * // Priključite datoteko s parametri za priključitev na zahtevo_once dbu ("baza podatkov.php"); // Preverite ime uporabniškega funkcije CHECKLOGIN ($ STR) (// inicializirajte spremenljivko z možno sporočilom o napaki $ Error \u003d ""; // Če ni prijavnega niza, vrnite sporočilo o napaki, če (! $ ST) ($ Error \u003d "Niste vnesli uporabniškega imena"; Napaka v višini $;) / ** * Preverite uporabniško ime z regularnimi izrazi * Prijava ne sme biti krajša od 4, ne daljše od 16 znakov * Obstajati morajo simboli latinščine Abeceda, številke, * v njej lahko biti simboli "_", "-", "." * / $ vzorec \u003d "/ \u003d _-_. az d__4,16) $ / i"; $ rezultat \u003d preg_match ($ Vzorec, $ str); // Če ček ni bil prenesen, se vrnete, če je sporočilo o napaki (! $ Rezultat) ($ Error \u003d "Neveljavni znaki v uporabniškem imenu ali uporabniškem imenu (dolg)"; vrne $ napake;) / / Če je vse v redu, vrnite pravo vrnitev true;) // Preverjanje uporabniškega gesla Funkcija CheckPassword ($ STR) (// inicializirajte spremenljivko z možno sporočilom o napaki $ error \u003d ""; //, če ni Postavite prijavni niz, vrnite sporočilo o napaki (! $ Str) ($ Error \u003d "Niste vnesli gesla"; Napaka v vrednosti $; ) / ** * Preverjamo uporabniško geslo z uporabo rednih izrazov * Geslo ne sme biti krajše od 6, ne daljši od 16 znakov * Obstajati morajo simboli latinske abecede, številke, * v njej so lahko simboli "_", "!", "(", ")" * / $ Vzorec \u003d "/ \u003d [_!) (. Az d] (6,16) $ / i"; $ rezultat \u003d preg_match ($ vzorec, $ str) // če je preverjanje, se ne prenese, vrnimo sporočilo o napaki (! $ Rezultat) ($ Error \u003d "Neveljavni znaki v uporabniškem geslo ali geslo prekratka (dolga)"; Vrnite $ Error;) //, če vse je v redu, povrnemo vrednost pravega vračanja true;)

Zdaj moramo spremeniti datoteko Registry.php za uporabo funkcij, ki smo jih prijavili. V skriptu bomo dodali stanje, ki ga testira s pritiskom na gumb Registracija. Znotraj tega pogoja se začne preverjati prijavo in gesla. V primeru, da nekateri pregledi ne uspejo, ponavljamo obrazec in prikaže sporočilo o napaki. Če ni napak, smo registrirali uporabnika, prijavni obrazec ne prikaže več, poročamo uporabniku o uspešni registraciji in z uporabo funkcije glave (), da ga posreduje v obrazcu za avtorizacijo.

Uspešno ste registrirani v sistemu. Zdaj ste preusmerjeni na stran o pooblastitvi. Če se to ne zgodi, pojdite na to za neposredno povezavo.

"; Glava (" osvežitev: 5; URL \u003d login.php ");) // drugače obvestimo uporabnika o napaki ($ napake [" FULL_ERROR "] \u003d $ reg;))?\u003e Registracija uporabnikov
" />
Uporabniško ime je lahko samo simboli latinske abecede, številke, znakov "_", "-", ".". Dolžina uporabniškega imena ne sme biti krajša od 4 znakov in ne daljši od 16 znakov.
V geslu, lahko uporabite samo simbole latinske abecede, številke, simbolov "_", "!", "(", ")". Geslo ne sme biti krajše od 6 znakov in ne več kot 16 znakov
Ponovite prejšnje geslo

V scenariju bi morali opaziti še eno novo funkcijo - register (). In še nismo ga razglasili. Naredimo to.

// Funkcija Funkcija Funkcija Funkcija Funkcija ($ Prijava, $ geslo) (// Inicializirajte spremenljivko z možno sporočilom o napaki $ error \u003d ""; //, če ni prijavnega niza, vrnite sporočilo o napaki, če (! $ Prijavi se) ( $ Error \u003d "Ni določeno prijavo"; Napaka v višini $;) EldelIF (! $ Geslo) ($ Error \u003d "Geslo ni določeno"; Vrnite $ Error;) // Preverjanje, ali je uporabnik že registriran // DBMS (); // Napiši niz poizvedb $ SQL \u003d "Select" ID "iz" uporabnikov ", kjer se" prijavi ". $ Prijavi se." ""; // Naredite zahtevo za bazo podatkov $ Quey \u003d MySQL_QUERY ($ Sql) ali umreti (""); // gledamo na število uporabnikov s takšno prijavo, če je vsaj eno, // vrnitev sporočila o napaki (MySQL_NUM_ROWS ($ QUYALY)\u003e 0) ($ Error \u003d "Uporabnik z določeno prijavo, ki je že registrirano"; Vrnite $ Error;) // Če tega uporabnika ni, registrirajte ga // Napišite zahtevo Line $ SQL \u003d "Vstavi" uporabnike "(` ID ', `Login`, "Geslo" vrednosti (, "". $ Prijava. " "". \\ T $ geslo. "") "; // je zahtevo na podlagi $ Query \u003d MySQL_QUERY ($ SQL) ali umreti ("

Uporabnika ni mogoče dodati: ". Mysql_error ().". Napaka je prišla v nizu. "__LiLe__."

") ;///- Ne pozabite odklopiti iz DBMS MySQL_Close (); // vrne pravo vrednost poročanja o uspešni registraciji vračanja pravega uporabnika;)

Če je vse v redu, bo vaš uporabnik registriran. Lahko preizkusite obliko. Poskusite registrirati uporabnike z istimi prijavami. Po uspešni registraciji bo uporabnik vržen v obliko dovoljenja. Prej smo preprosto ustvarili oznako za prikaz tega obrazca. Ker atribut ukrepa ne določa nobenega parametra, bodo podatki, ki jih pošlje obrazec, obdelajo v istem scenariju. Zato moramo pisati kodo za obdelavo in jo dodati v dokument Login.php.

Dovoljenje za uporabnika.

;">

Če niste registrirani v sistemu, se registrirajte.

Verjetno ste opazili, da smo v skriptu za odobritev, smo imeli drugo neznano funkcijo - dovoljenje (). Ta funkcija mora pooblastiti uporabnika po preverjanju, ali je registrirani uporabnik s takšno prijavo in geslom v bazi podatkov. Če takšnega uporabnika ni mogoče najti, bo dovoljenje prekinjeno, na zaslonu se prikaže sporočilo o napaki. Če boste uspešno preverili, bo funkcija avtorizacije () zagnala sejo in bralnik uporabniškega imena in gesla bodo posneli skript za prijavo in geslo, skript pa bo uporabnik preusmeril na stran varnega vira.

/ ** * Funkcija avtorizacije uporabnika. * Dovoljenje za uporabnika bomo izvajali * z uporabo PHP sej. * / Dovoljenje za funkcijo ($ Prijava, $ geslo) (// inicializirajte spremenljivko z možno sporočilom o napaki $ Error \u003d ""; // Če ni loginskega niza, vrnite sporočilo o napaki, če (! $ Prijavi) ($ Napaka \u003d "Prijava ni podana"; Napaka v zameno $;) Eldelhif (! $ Error \u003d "Geslo ne določa"; Vrnite $ Error;) // Ali je uporabnik že registriran / / Connect, da poveže DBMS () ;// moramo preveriti, ali je taka uporabnik med registrirano // naredite linijo zahteve $ SQL \u003d "Select" ID "iz" uporabnikov ", kjer se" prijava "\u003d" ". $ Prijavi se.« In gesla` \u003d "". $ Geslo. "" "; // zahteva $ Query \u003d MySQL_QUERY ($ SQL) ali umre

Poizvedbe ni mogoče dokončati: ". Mysql_error ().". Napaka je prišla v nizu. "__LiLe__."

"); // če s takimi podatki ni uporabnika, vrnemo sporočilo, če je sporočilo o napaki (MySQL_NUM_ROWS ($ QUYALY) \u003d\u003d 0) ($ Error \u003d" Uporabnik z določenimi podatki ni registriran "; Napaka pri vračanju $; ) // Če uporabnik obstaja, zažene session_start sejo (); // in pišite v njej prijavo in uporabniško geslo // Za to uporabljamo superglobal array $ _session $ _Session ["Prijava"] \u003d $ Prijava; $ _Session ["Geslo"] \u003d $ geslo; / / Ne pozabite zapreti povezave z bazo podatkov MySQL_Close (); // se vrne, da se bo ustanovil za uspešno pooblastilo vrnitve true;)

Ko uporabnik zadene varno stran, preverite pravilnost podatkov o njegovi odobritvi. Za to potrebujemo drugo funkcijo uporabnikov. Pokličimo ga Checkauth (). Njegova naloga bo usklajena z uporabniškimi podatki za avtorizacijo tistih, ki so shranjeni v naši bazi podatkov. Če se podatki ne ujemajo, bo uporabnik preusmerjen na stran za avtorizacijo.

Funkcija CheckAut ($ Prijava, $ geslo) (// Če ni prijave ali gesla, vrnite false, če (! $ Prijava ||! $ Geslo) Vrnite false; // Preverite, ali je tak uporabnik registriran // Connect DBMS (); // naredite linijo zahtevka $ sql \u003d "Izberi" ID "iz" uporabnikov ", kjer se" prijava ". $ Prijavi se." "In" geslo "\u003d" ". $ Geslo." "" "; // zahteva $ Query \u003d MySQL_QUERY ($ SQL) ali umreti ("

Poizvedbe ni mogoče dokončati: ". Mysql_error ().". Napaka je prišla v nizu. "__LiLe__."

"); // Če s takimi podatki ni uporabnika, vrnite false; če (МySql_num_rows ($ Query) \u003d\u003d 0) (vrnite false;) // Ne pozabite zapreti povezave z bazo podatkov MySQL_Close (); / / drugače vrnemo resnično vrnitev;)

Zdaj, ko je uporabnik prišel na varno stran, moramo poklicati funkcijo preverjanja podatkov o pooblastilu. Klic in Concription Script bomo nameščeni v ločenem CheckAuth.php datoteki in jo povežemo s tistimi stranemi, ki bodo zaprte za skupni dostop.

/ ** * Skript Preverjanje uporabniškega dovoljenja * // Začnite sejo, iz katere bomo pridobili uporabniško ime in geslo // pooblaščeni uporabniki seje_start (); // petje datoteke z uporabniškimi zahtevami ("funkcijah.php"); / ** * Če želite ugotoviti, ali je uporabnik pooblaščen, potrebujemo * Preverite, ali obstajajo zapise v bazi podatkov za njegovo prijavo * in geslo. Če želite to narediti, uporabite funkcijo uporabnika * Preverjanje pravilnosti uporabniškega pooblaščenega uporabnika. * Če ta funkcija vrne false, potem ni dovoljenja. * V odsotnosti dovoljenja, preprosto preusmerjamo * uporabnika na stran za avtorizacijo. * / // Če sejo za sejo značilna po podatkih in prijavi, in geslo, // jih preverite, če (MSRETS ($ _ seja ["Prijava"]) && $ _Session ["Prijava"] && MSRET (seja $ _ ["Geslo"]) && $ _session ["Geslo"]) (//, če preskus obstoječih podatkov ne uspe, če če ne uspe (! Checkauth ($ _ seje ["Prijava"], $ _Session ["Geslo"])) (// Preusmerite uporabnika na glavo stran avtoristracije ("Lokacija: Login.php"); // Stop Izvajanje izhodnega skripta;)) // Če ni podatkov ali uporabniškega imena, ali pa ni uporabniškega gesla, // Menimo, da ni dovoljenja, preusmeritev uporabnika // na strani EXTRURENT (glava ("Lokacija: Login.php"); // ustavi izvedbo izhodnega scenarija;)

In zdaj ustvarimo kodo naše varne strani. Precej preprost.

Dovoljenje in registracija uporabnikov

Uspešno dovoljenje.

Imate dostop do varne strani. Lahko prideš iz sistema.

Kot lahko vidite, v varnem dokumentu, povežemo samo eno datoteko - CheckAuth.php. Vse druge datoteke so povezane v drugih scenarijih. Zato naša koda ne izgleda okorna. Organizirali smo registracijo in odobritev uporabnikov. Zdaj je treba uporabnikom omogočiti, da zapustijo sistem. V ta namen bomo ustvarili skript v datoteki Logout.php.

/ ** * Uporabniški izhodni skript iz sistema. Ker so uporabniki * pooblaščeni s sejami, se njihovo uporabniško ime in geslo shranjujeta * v superglogue array $ _session. Za izvedbo * izhod iz sistema, je dovolj, da uniči vrednosti * ARRAY $ _session ["Prijava"] in $ _Session ["Geslo"], po * Kaj smo preusmeritev uporabnika na stran pooblastila * / / / Bodite prepričani, da zaženete sejo SASSY_START (); UNSERT ($ _ seja ["Prijava"]); UNSET ($ _ seja ["geslo"]); Glava ("Lokacija: Login.php");

Registracijski skript, avtorizacija in preverjanje uporabnikov je pripravljena. Lahko ga uporabite v sebi, dopolnite, spremenite pod vašimi potrebami. Če imate vprašanja, jih lahko vprašate v komentarjih. Lahko prenesete vse datoteke, o katerih obstaja govor, ki je pakiran v enem arhivu.

P.S. Vem, da je bolje napisati objektno usmerjeno kodo, vem, da ni vredno prehoda in shranjevati v odprtem geslu, da je treba predhodno preveriti informacije, zabeležene v bazi podatkov. Vem. Tukaj ne bom govoril o tem.

V zadnjih nekaj letih je Web Hosting doživel dramuzalno spremembo. Spletno gostovanje Services so spremenili način izvajanja spletnih strani. Obstaja več vrst storitev, danes pa bomo govorili o možnostih, ki so na voljo za ponudnike gostovanja prodajalcev. So Linux Reseller Hosting in Windows Reseller Hosting. Preden razumemo temeljne razlike med obema, ugotovimo, kaj je reseller gostovanje.

Reseller gostovanje

V preprostem smislu je reseller gostovanje oblika spletnega gostovanja, kjer lahko lastnik računa uporabi svoj namenski prostor trdega diska in dodeljena pasovna širina za spletne strani tretjih oseb. Včasih lahko prodajalec vzame namenski strežnik iz gostiteljskega podjetja (Linux ali Windows) na najemnino in ga še naprej izpustijo tretjim osebam.

Večina spletnih strani uporablja bodisi z Linuxom ali Windows. To ima z uptime. Obe platformah Essure, da je vaša spletna stran 99% časa.

1. Prilagajanje

Ena glavnih razlik med Linux Reseller Hostingplan in tista, ki jo Windows, je o prilagoditvi. Medtem ko lahko poskusite z igralci na več načinov, Linux je pot bolj prilagodljiva hvala Windows. Slednje imajo več funkcij, kot je njen kolega, zato je veliko razvijalcev in administratorjev najti Linux zelo prijazno.

2. Vloge

Različne storitve gostovanja prodajalcev imajo različne aplikacije. Linux in Windows imata lastno paleto aplikacij, vendar ima slednji rob, ko gre za številke in vsestranskost. To je narejeno z odprtovodno naravo Linuxa. Vsak razvijalec lahko naloži svojo aplikacijo na platformo Linux in to je privlačen ponudnik gostovanja na milijone lastnikov spletnih strani.

Vendar pa upoštevajte, da če uporabljate Linux za spletno gostovanje, vendar hkrati uporabljajte operacijski sistem Windows, potem nekatere aplikacije morda ne bodo preprosto delovale.

3. Stabilnost

Medtem ko sta obe platformi stabilni, je gostovanje Linux Reseller stabilen od obeh. To je odprtokodna platforma, lahko deluje v več okoljih. To je lahko platforma spremenjena in razvita vsaka in deset.

4. .Net združljivost.

To ni, da je Linux boljši od okna na vsakem možnem načinu. Ko gre za združljivost .Net, Windows ukrade oskrbljeno. Spletne aplikacije se lahko enostavno razvijejo na platformi Windows Hosting.

5. Kontrolne prednosti.

Obe platformah gostovanja sta dostopna. Ampak, če čutite gotovinski krč, potem se morate odločiti za Linux. To je brezplačno in to je razlog, zakaj se odločijo toliko razvijalcev in sistemskih administratorjev po vsem svetu.

6. Enostavnost nastavitve

Windows je lažje vzpostaviti njegovo nasprotno stran. Vse stvari so rekli in končale, Windows še vedno ohranja svoje uporabnike prijateljice vseh teh let.

7. Varnost

Opt for Linux Reseller gostovanje, ker je bolj varen hvala Windows. To velja zlasti za ljudi, ki vodijo svoje podjetje e-trgovine.

Zaključek

Izbiro med obema Odvisno od vaše zahteve in prilagodljivosti stroškov. Oba gostiteljica imata edinstvene prednosti. Medtem ko je Windows enostavno nastaviti, Linux je stroškovno učinkovit, varen in je bolj vsestranski.



V marcu letos sem imel zelo slabo izkušnjo z medijskim podjetjem, ki je zavrnil, da bi mi plačal in odgovoril na moja e-poštna sporočila. Še vedno mi dolgujejo tisoče dolarjev in občutek besa, ki ga vsak dan prežemam. Izkazalo se je, da nisem sam, in na stotine drugih lastnikov spletnih strani je v isti ladji. To je nekakšen par za tečaj z digitalnim oglaševanjem.

V vsej poštenosti, sem imel to vezan že dolgo časa in sem omejen okoli različnih oglasov omrežij v preteklosti. Po odstranitvi oglasov iz tega podjetja, ki me je otekel, sem se vrnil na kvadrat. Nikoli ni bilo všeč Googles AdSense Product, samo zato, ker se počuti kot "dno soda" prikazanih oglasov. Ne s kakovostnega vidika, ampak iz prihodkov enega.

Iz tega, kar razumem, želite Google oglaševanje na vašem spletnem mestu, vendar hočeš tudi druge velike družbe in agencije, ki delajo. Tako maksimirate povpraševanje in prihodke.

Po mojih negativnih izkušnjah sem priporočil podjetje, imenovano Newor Media. In če sem iskren, sem ni bil prodan našli večinoma, ker nisem našel veliko informacij o njih. Našel sem nekaj spodobnih pregledov na drugih spletnih mestih, in po pogovoru z nekom tam, sem se odločil, da ga poskusite . Rekel bom, da so super koristno. Vsako mrežo, s katerim sem kdaj delala, je bila precej kratkotrajna. Odgovorili so na vsako vprašanje in je bil resnično spodbuden proces.

Oglasi sem bil za nekaj mesecev, kar je zaslužek, so, so, so acout drugo podjetje. Zato lahko resnično rečem, če so to veliko boljši od drugih, toda tam, kjer izstopajo, je Točka, ki jo resnično želim narediti. Komunikacija z njimi je za razliko od katerega koli drugega omrežja, ki sem ga kdaj delal. Tukaj je primer, kjer so res drugačni:

Prvo plačilo so mi potisnili pravočasno s PayPal. Ampak zato, ker nisem v U.S (in to se zgodi za vse, mislim, da sem dobil pristojbino, vzeti iz Paypala. Pošljil sem svoj predstavnik o tem, sprašujem, ali je prišlo do tega, da je to v prihodnosti.

Rekli so, da se ne bi smelo izogibati pristojbine, Toda da bi povrnil vse pristojbine .... vključno z najnovejšim plačilom! Ne samo to, ampak plačilo povračila je bilo prejeto v 10 minutah! Kdaj ste že kdaj lahko naredili zahtevo, ne da bi jih bilo treba poslati na "finančni oddelek", da se nikoli ne odzovejo.

Spodnja vrstica je, da imam rad to podjetje. Morda bi lahko naredil več nekje drugje, jaz nisem prepričan, vendar imajo založnik za življenje z mano. Jaz "m ni ogromno mesto in ne ustvarjam" ton dohodka, vendar se počutim kot a Zelo pomembna stranka, ko se pogovarjam z njimi. Resnično je dihanje svežega zraka v industriji, ki je zrelo z goljufijami in ne-odzivnosti.

Mikroračunalniki, ki so jih ustvarili Fundacija Raspberry PI v letu 2012, so bile izjemno uspešne pri iskrenih ravneh ustvarjalnosti pri majhnih otrocih in to podjetje, ki temelji na Združenem kraljestvu, je začelo ponuditi zagonske programe na učenju, kot je PI-top kano. Zdaj je nov zagon, ki uporablja PI Electronics, naprava pa je znana kot pip, ročna konzola, ki ponuja zaslon na dotik, več priključkov, nadzornih gumbov in zvočnikov. Ideja ISO ISO za vključitev mladih posameznikov z napravo za igro, ki je retro, vendar bo ponudila tudi kodno učno izkušnjo prek spletne platforme.

Neverjetna programska platforma, ki je na voljo s PIP, bo ponudila priložnost za začetek kodiranja v Python, HTML / CSS, Javascript, LUA in PHP. Naprava ponuja koračne vadnice, da se otroci začnejo s kodiranjem in jim omogoča, da celo naredijo LED diode. Medtem ko je PIP še vedno prototip, bo zagotovo velik hit v industriji in bo vključil otroke, ki se zanimajo za kodiranje in jim bodo zagotovili izobraževanje in vire, potrebne za začetek kodiranja v mladosti.

Prihodnost kodiranja

Kodiranje ima veliko prihodnost, in tudi če otroci ne bodo uporabljali kodiranja kot kariero, imajo lahko koristi od učenja, kako kodirati s to novo napravo, ki olajša lažje kot kdajkoli prej. S PIP se bodo tudi najmlajši ljubitelji kodiranja naučili različne jezike in bodo na njihovi poti na poti k ustvarjanju lastnih kod, lastnih iger, lastnih aplikacij in še več. To je prihodnost osnovnih gradnikov kodiranja, ki jo je treba obvladati.
Računalniška znanost je postala pomemben del izobraževanja in z napravami, kot so novi PIP, otroci lahko začnejo izboljšati svoje izobraževanje doma, medtem ko se zabavajo. Kodiranje je daleč presegajte preprosto ustvarjanje spletnih mest. Lahko se uporablja za povečanje varnosti v mestu, da bi pomagali pri raziskavah na medicinskem področju in še veliko več. Ker zdaj živimo v svetu, ki prevladuje programska oprema, je kodiranje prihodnost in je pomembno, da vsi otroci imajo vsaj osnovno razumevanje, kako deluje, tudi če ti nikoli ne uporabljajo teh sposobnosti kot kariero. Kar zadeva prihodnost, bo kodiranje ključna sestavina vsakdanjega življenja. To bo jezik sveta in ne poznajo računalnikov ali kako delo lahko predstavlja izzive, ki jih je prav tako težko premagati kot nepismenost.
Kodiranje bo zagotovilo tudi velike spremembe v svetu igranja, zlasti ko gre za spletne igre na srečo, vključno z dostopom na spletnih igralnicah. Če si želite ogledati, kako kodiranje je že izboljšalo igralni svet, si oglejte nekaj najboljših igralnic, ki se zanašajo na kodiranje. Vzemite hitro, da preverite in vidite, kako kodiranje lahko predstavi realistično okolje na spletu.

Kako Pip se ukvarja z otroki

Ko gre za možnost, da se naučijo kodiranje, imajo otroci veliko možnosti. Obstaja več naprav in strojne opreme Gizmos, ki jih je mogoče kupiti, vendar PIP ima drugačen pristop z napravo. Prenosljivost naprave in zaslona na dotik nudi prednost drugim kodirnim napravam, ki so na trgu. PIP bo popolnoma združljiv z elektronskimi komponentami poleg sistema Malina PI HAT. Naprava uporablja standardne jezike in ima osnovna orodja in je odlična naprava za kateri koli začetniški koder. Cilj je odstraniti vse ovire med idejo in ustvarjanjem ter orodja takoj na voljo za uporabo. Ena od drugih velikih prednosti PIP je, da uporablja SD kartico, tako da se lahko uporablja kot namizni računalnik, ko je priključen na monitor in miško.
Naprava PIP bi pomagala otrokom in zainteresiranim novicem z navdušenjem v učenje in kodiranje. S ponudbo kombinacije zaključka naloge in tinkering za reševanje problemov, bo naprava zagotovo vključila mlado generacijo. Naprava, ki omogoča tem mladim kodirjem, da se preselijo na bolj napredne ravni kodiranja v različnih jezikih, kot so JavaScript in HTML / CSS. Ker naprava ponovi igralno konzolo, bo takoj zajela pozornost otrok in jih bo vključila, da bi spoznala kodiranje v mladosti. Prihaja tudi z nekaterimi izmerjenimi igrami, da bi obdržali pozornost, kot je Pac-Man in Minecraft.

Inovacije.

Prihodnje inovacije so v veliki meri odvisne od otrokove trenutne sposobnosti kodeksa in njihovega splošnega razumevanja procesa. Ko se otroci naučijo kodirajo v zgodnji starosti z uporabo takih naprav kot nov PIP, bodo pridobili veščine in znanje, da bi v prihodnosti ustvarili neverjetne stvari. To bi lahko bila uvedba novih iger ali aplikacij ali celo idej, ki jih lahko oživijo za pomoč pri medicinskih raziskavah in zdravljenju. Obstajajo neskončne možnosti. Ker bo naša prihodnost nadzorovana s programsko opremo in računalniki, je začel mlada, ki je najboljša vojska, zato je novi PIP usmerjen v mlado množico. S ponudbo konzole naprave, ki lahko igrajo igre, medtem ko poučevanje kodiranja spretnosti, mladi člani družbe, so na svojem načinu na poti, da so ustvarjalci programske opreme v prihodnosti, ki bo spremenila vse naše življenje. To je samo začetek, vendar je nekaj, kar milijoni otrok po vsem svetu se začnejo učiti in obvladati. Z uporabo naprav, kot so PIP, so pokrite kodirne osnove in otroci se bodo hitro naučili različnih kodirnih jezikov, ki lahko vodijo neverjetne poti kot vstop v odraslost.

Proces ustvarjanja sistema za registracijo je precej veliko dela. Morate napisati kodo, ki bi jih vadil veljavnost e-poštnih naslovov, poslala e-poštne pisma s potrditvijo, ponudila priložnost za obnovitev gesla, ki bi jih shranili gesla na varnem mestu, preverjene vhodne obrazce in še veliko več. Tudi ko vse to storite, se bodo uporabniki nerad registrirali, saj celo najbolj minimalna registracija zahteva njihovo dejavnost.

V današnjem vodniku bomo razvili preprost sistem registracije, s katerim ne boste potrebovali nobenih gesel! Rezultate bomo dobili, sistem, ki ga je mogoče enostavno spremeniti ali vdelati v obstoječe spletne strani PHP. Če vas zanima, nadaljujte z branjem.

PHP.

Zdaj smo pripravljeni na kodo PHP. Glavna funkcionalnost sistema za registracijo zagotavlja razred uporabnika, ki ga lahko vidite spodaj. Razred uporablja (), ki je minimalistična knjižnica za delo z bazami podatkov. Uporabniški razred je odgovoren za dostop do podatkovnih baz, ki ustvarja žetone-s za prijavo in njihovo potrjevanje. Predstavlja nas preprost vmesnik, ki ga je mogoče enostavno vključiti v sistem za registracijo na spletnih mestih na osnovi PHP.

Uporabnik.class.php.

// zasebni Orm primer
Zasebni $ orm;

/**
* Poiščite uporabnika s žetonskim nizom. Vstavijo se samo veljavni žetoni
* Obravnava. Žeton velja 10 minut po tem, ko je bil ustvarjen.
* @param string $ token žeton za iskanje
* @return uporabnik.
*/

Funkcija javne statične FINEDBYTOKEN ($ žeton) (

// Najdi v bazi podatkov in se prepričajte, da je časovni žig pravilen


-\u003e Kje ("žeton", $ žeton)
-\u003e kje_raw ("token_validast\u003e zdaj ()")
-\u003e find_one ();

Če (! $ Rezultat) (
Vrnite napačne;
}

Vrniti nov uporabnik ($ Rezultat);
}

/**
* Ali se prijavite ali registrirate uporabnika.
* @return uporabnik.
*/

Javna statična funkcija LoginRegister ($ E-pošta) (

//, če tak uporabnik že obstaja, ga vrnite

Če (uporabnik :: obstaja ($ E-pošta)) (
Vrniti nov uporabnik ($ e-pošta);
}

// drugače, ga ustvarite in ga vrnite

Return User :: Ustvari ($ Email);
}

/**
* Ustvarite nov uporabnik in ga shranite v bazo podatkov
* @Param String $ Email E-poštni naslov uporabnika
* @return uporabnik.
*/

Zasebna statična funkcija Ustvari ($ E-pošta) (

// napišite nov uporabnik v bazo podatkov in ga vrnite

$ Rezultat \u003d ORM :: FORT_TABLE ("REG_USERS") -\u003e Ustvari ();
$ rezultat-\u003e e-pošta \u003d $ e-pošta;
$ Rezultat-\u003e Shrani ();

Vrniti nov uporabnik ($ Rezultat);
}

/**
* Preverite, ali tak uporabnik obstaja v bazi podatkov in vrne Boolean.
* @Param String $ Email E-poštni naslov uporabnika
* @return boolean.
*/

Obstaja javna statična funkcija ($ e-pošta) (

// Ali uporabnik obstaja v bazi podatkov?
$ rezultat \u003d orm :: for_table ("reg_users")
-\u003e Kjer (»E-pošta«, $ e-pošta)
-\u003e štetje ();

Vrnitev $ rezultat \u003d\u003d 1;
}

/**
* Ustvarite nov uporabnik
* @param $ Param Orm primer, ID, E-pošta ali NULL
* @return uporabnik.
*/

Javna funkcija __Construct ($ param \u003d null) (

Če ($ Param Instanceof OM) (

// Orm primer je bil opravljen
$ To-\u003e Orm \u003d $ Param;
}
Else, če (IS_String ($ Param)) (

// E-pošta je bila opravljena
$ to-\u003e
-\u003e Kjer (»E-pošta«, $ Param)
-\u003e find_one ();
}
Drugače (

Če (IS_numeric ($ Param)) (
// ID uporabnika je bil opravljen kot parameter
$ ID \u003d $ Param;
}
ELGE, če (MSRETS ($ _ seja ["Loginid"]) (

// ID uporabnika ni bil opravljen, poglej v sezijo
$ ID \u003d $ _Session ["Loginid"];
}

$ To-\u003e Orm \u003d ORM :: FORT_TABLE ("REG_USERS")
-\u003e Kje (»ID«, ID $)
-\u003e find_one ();
}

/**
* Generira nov prijavni žeton SHA1, piše v bazo podatkov in ga vrne.
* @return niz.
*/

Javna funkcija Generatetoken () () ()
// Ustvari žeton za prijavljeni uporabnik. Shranite v bazo podatkov.

$ Token \u003d SHA1 ($ To-\u003e Email.Time (). Rand (0, 1000000));

// Shrani žeton v bazo podatkov
// in označite kot veljavno za naslednjih 10 minut

$ to-\u003e Om-\u003e Set ("Token", $ žeton);
$ to-\u003e Orm-\u003e Set_expr ("token_Velity", "AddTit (zdaj ()," 0:10 ")");
$ to-\u003e OM-\u003e Shrani ();

Vrnite $ žetona;
}

/**
* Prijavite se tega uporabnika
* @return void.
*/

Prijava javne funkcije () () ()

// označite uporabnika, kot je prijavljen
$ _Session ["Loginid"] \u003d $ To-\u003e Orm-\u003e ID;

// posodabljanje polja LAST_LOGIN DB
$ to-\u003e Orm-\u003e Set_expr ("Last_Login", "zdaj ()");
$ to-\u003e OM-\u003e Shrani ();
}

/**
* Uničite sejo in odjavite uporabnika.
* @return void.
*/

Odjava javne funkcije () () (
$ _Session \u003d matrika ();
UNSET ($ _ seja);
}

/**
* Preverite, ali je uporabnik prijavljen.
* @return boolean.
*/

Javna funkcija Logged () () () () ()
Vrnitev Unicet ($ To-\u003e Orm-\u003e ID) && $ _session ["Loginid"] \u003d\u003d $ To-\u003e Orm-\u003e ID;
}

/**
* Preverite, ali je uporabnik skrbnik
* @return boolean.
*/

Javna funkcija ISADMIN () () ()
Vrnite $ To-\u003e Rank () \u003d\u003d "Skrbnik";
}

/**
* Poiščite vrsto uporabnika. Lahko je skrbnik ali redno.
* @return niz.
*/

Rank javne funkcije () ()
Če ($ To-\u003e Om-\u003e Rank \u003d\u003d 1) (
Vrnitev "administrator";
}

Vrnitev "redno";
}

/**
* Magic metoda za dostop do elementov zasebnega
* $ Orm primer kot lastnosti uporabnika
* @Param string $ ključ dostopna lastnost Ime
* @return mešano
*/

Javna funkcija __get ($ ključ) (
Če (Isset ($ To-\u003e Orm -\u003e $ ključ)) (
Vrni $ to-\u003e Orm -\u003e $ ključ;
}

Vrnitev null;
}
}
Token-s generira algoritem in so shranjeni v bazi podatkov. Uporabljamo iz MySQL, da nastavite vrednost v stolpcu TKen_validy, ki je enako 10 minut. Pri validaciji TKEN, smo obveščamo motor, ki ga potrebujemo žeton, polje Token_Validity še ni potekel. Torej omejujemo čas, v katerem bo TKen veljaven.

Prosimo, upoštevajte, da uporabljamo čarobno metodo __get () na koncu dokumenta za dostop do lastnosti uporabnika objekta. To nam omogoča dostop do podatkov, ki so shranjeni v bazi podatkov v obliki lastnosti: $ User-\u003e Email, $ User-\u003e Token. Na primer, poglejmo, kako lahko uporabimo ta razred v naslednjem fragmentu kode:


Druga datoteka, v kateri je shranjena potrebna funkcionalnost, je funkcije.php. Tam imamo več pomožnih funkcij, ki nam omogočajo, da preostalo kodo ostane bolj urejeno.

Funkcije.php.

Funkcija Pošlji _Email ($ od, $ to, $ predmeta, $ sporočilo) (

// pomočnika za pošiljanje e-pošte

$ Glave \u003d "MIME-različica: 1.0". "\\ t
$ Glave. \u003d "Vrsta vsebine: Besedilo / Plain; Charset \u003d UTF-8". "\\ t
$ Glave. \u003d "Od:". $ Od. "\\ t

Pošljite pošto ($ na, $ predmet, $ sporočilo, $ glave);
}

funkcija Get_page_URL () () ()

// Najdi URL datoteke PHP

$ URL \u003d "HTTP". (Prazno (strežnik $ _ [HTTPS "])?" ":" S ").": // "$ _ Server [" Server_name "];

Če (ISSET ($ _ strežnik ["zahteva_uri"]) && $ _Server ["Request_URI"]! \u003d "") (
$ URL. \u003d $ _Server ["zahtevek_uri"];
}
Drugače (
$ URL. \u003d $ _Server ["PATH_INFO"];
}

Vrniti $ URL;
}

funkcija Rate_limit ($ IP, $ Light_hour \u003d 20, $ Limight_10_Min \u003d 10) (

// število poskusov prijave za zadnjo uro s tem naslovom IP

$ Count_hour \u003d orm :: for_table ("reg_login_attall")
->
-\u003e Kje_rew ("TS\u003e Pomage (zdaj ()," 1:00 ")") ")
-\u003e štetje ();

// število poskusov prijave za zadnjih 10 minut s tem naslovom IP

$ Count_10_min \u003d orm :: for_table ("reg_login_attallment")
-\u003e Kje ("IP", Sprintf ("% U", IP2Long ($ IP)))
-\u003e Kje_rew ("TS\u003e Podajanje (zdaj ()," 0:10 ")") ")") ")
-\u003e štetje ();

Če ($ Count_hour\u003e $ Limight_hour || $ Count_10_Min\u003e $ Limight_10_Min) (
Vrgel novo izjemo ("preveč poskusov prijave!");
}
}

funkcija Rate_limit_tick ($ IP, $ Email) (

// Ustvarite nov zapis v tabeli za poskus prijave

$ Login_attttmpt \u003d ORM :: FORT_TABLE ("REG_LOGIN_ATTERT") -\u003e Ustvari ();

$ Login_atttmpt-\u003e Email \u003d $ E-pošta;
$ Login_atttmmpt-\u003e IP \u003d Sprintf ("% U", IP2Long ($ IP));

$ Login_attttt-\u003e Shrani ();
}

funkcija preusmeritev ($ URL) (
Glava ("Lokacija: $ URL");
izhod;
}
Funkcije CENT_LIMIT in CENTE_LIMIT_TICK nam omogočajo, da omejimo število poskusov odobritve za določeno časovno obdobje. Poskusi z dovoljenjem se evidentirajo v podatkovni bazi REG_LOGIN_ATTempt. Te funkcije se začnejo pri potrditvi obrazec za avtorizacijo, kot je razvidno iz naslednjega kodnega fragmenta.

Spodnja koda je bila vzeta iz indeksa.php, odgovorna pa je za potrditev oblike dovoljenja. Vrne odziv JSON, ki ga nadzoruje koda JQuery, ki smo jo videli v sredstvih / JS / Script.js.

index.php.

Če (! Prazno ($ _ Post) && Isset ($ _ strežnik ["http_x_requested_with"])) (

// Izhod je glava JSON

Glava ("vrsta vsebine: aplikacija / json");

// je e-poštni naslov veljaven?

Če (! Isset ($ _ Post [E-pošta "]) ||! Filter_var ($ _ Post [" Email "], Filter_Validat_Email)) (
Vrgel novo izjemo ("Vnesite veljavno e-pošto");
}

// To bo vrglo izjemo, če je oseba zgoraj
// dovoljeni poskus prijave (glej funkcije.php za več):
rate_limit ($ _ strežnik ["Remote_ADDR"];

// zabeležite ta poskus prijave
rate_limit_tick (strežnik $ _ ["Remote_ADDR"], $ _post ["E-pošta"]);

// Pošljite sporočilo uporabniku

$ sporočilo \u003d "";
$ email \u003d $ _post ["email"];
$ subjekt \u003d "Vaša prijavna povezava";

Če (! Uporabnik :: obstaja ($ E-pošta)) (
$ subjekt \u003d "Hvala za registracijo!";
$ Message \u003d "Hvala, ker ste se prijavili na naši spletni strani! N \\ n";
}

// Poskusite se prijaviti ali registrirati osebo
$ Uporabnik \u003d Uporabnik :: LoginRegister ($ _ Post ["Email"]);

$ Sporočilo. \u003d "Lahko se prijavite iz tega URL-ja: \\ t
$ sporočilo. \u003d Get_page_URL (). "? TKN \u003d". $ Uporabnik-\u003e Generatetoken (). "; n";

$ Sporočilo. \u003d "Povezava se izteče samodejno po 10 minutah.";

$ Rezultat \u003d Point_Email ($ FreheMail, $ _post [»E-pošta«], $ predmet, $ sporočilo);

Če (! $ Rezultat) (
Vrzi novo izjemo ("Prišlo je do napake, ki pošilja vaš e-poštni naslov. Poskusite znova.");
}

Die (json_encode (matrika (
"Sporočilo" \u003d\u003e "Hvala vam, smo poslali povezavo na vašo mapo» Prejeto «. Preverite tudi mapo Spam. "
)));
}
}
ulov (izjema $ e) (

Die (json_encode (matrika (
"Napaka" \u003d\u003e 1,
"Sporočilo" \u003d\u003e $ e-\u003e getmessage ()
)));
}
Če je navedena koda za uspešno dovoljenje ali registracijo, se navede e-poštno sporočilo osebi s povezavo za avtorizacijo. Žeton (Lexeme) postane na voljo kot $ _get-spremenljivka "TKN" v pogledu na ustvarjen URL.

index.php.

Če (Usset ($ _ Get ["TKN"]) (

// je to veljavni prijavni žeton?
$ User \u003d Uporabnik :: FindByToken ($ _ Get ["TKN"]);

// da! Prijavite se uporabnika in preusmerite na zaščiteno stran.

$ User-\u003e Prijava ();
Preusmeritev ("zaščitena.php");
}

// Neveljaven žeton. Preusmerite nazaj na prijavni obrazec.
Preusmeritev ("index.php");
}
Running $ User-\u003e Prijava () bo ustvaril potrebne spremenljivke za sejo, ki bo uporabniku omogočila, da ostane odobrena na naslednjih vhodih.

Izhod iz sistema se realizira na enak način:

Index.php.

Če (MSRET ($ _ dobi ["odjava"])) (

$ Uporabnik \u003d nov uporabnik ();

Če ($ uporabnik-\u003e LoggedIn ()) (
$ User-\u003e Logout ();
}

Preusmeritev ("index.php");
}
Na koncu kode ponovno preusmerjamo uporabnika na index.php, tako da je parameter? Odjava \u003d 1 v URL-u je izključena.

Naša indeksa.php datoteka bo potrebovala tudi zaščito - ne želimo pooblaščenih uporabnikov, da so videli obrazec. Če želite to narediti, uporabljamo metodo $ uporabnika-\u003e zabeležene ():

Index.php.

$ Uporabnik \u003d nov uporabnik ();

Če ($ uporabnik-\u003e LoggedIn ()) (
Preusmeritev ("zaščitena.php");
}
Nazadnje, poglejmo, kako lahko zaščitite stran vašega spletnega mesta, in da je na voljo samo po pooblastilu:

zaščiteno.php.

// da zaščitite katero koli stran PHP na vašem spletnem mestu, vključite glavno.php
// in ustvarite nov uporabnik. To preprosto!

zahteva_once "vključuje / main.php";

$ Uporabnik \u003d nov uporabnik ();

Če (! $ User-\u003e LoggedIn ()) (
Preusmeritev ("index.php");
}
Po tem pregledu ste lahko prepričani, da je bil uporabnik uspešno pooblaščen. Prav tako boste imeli dostop do podatkov, ki so shranjeni v bazi podatkov kot lastnosti uporabnika $ uporabnika. Za prikaz uporabnika e-pošte in njihovega položaja uporabite naslednjo kodo:

Echo "Vaš e-poštni naslov:" $ User-\u003e Email;
echo "Tvoja Rank:" $ User-\u003e Rank ();
Tu je metoda () metoda, saj stolpec Rank v bazi podatkov običajno vsebuje številke (0 za navadne uporabnike in 1 za skrbnike), in jo moramo pretvoriti vse v imena uvrstitev, ki se izvajajo s to metodo. Če želite redni uporabniku pretvoriti skrbniku, preprosto uredite zapis uporabnika v phpmyadmin (ali v katerem koli drugem programu baze podatkov). Ker je skrbnik, uporabnik ne bo opremljen z nekaterimi posebnimi funkcijami. Sami v pravici, da izberete, kakšne pravice dodati skrbnike.

Pripravljen!

Na tem je naš nezahtevni sistem registracije pripravljen! Uporabite ga lahko na že obstoječe spletne strani PHP ali ga nadgradite, pri čemer se držite lastnih zahtev.

Reg.ru: domene in gostovanje

Največji ponudnik snemanja in gostovanja v Rusiji.

Več kot 2 milijona domenskih imen za vzdrževanje.

Promocija, pošta za domeno, poslovne rešitve.

Več kot 700 tisoč strank po vsem svetu je že izbralo njihovo izbiro.

* Miška, da prekinete pomikanje.

Nazaj naprej

Ustvarjanje preprostega sistema za registracijo uporabnikov PHP in MySQL

Ustvarjanje sistema registracije je veliko delo. Morate napisati kodo, ki izvaja e-poštne naslove, pošlje sporočilo poštnemu potrditvi in \u200b\u200bizvede tudi potrditev preostalega polja obrazca in še veliko več.

In tudi ko boste vse to pisali, se bodo uporabniki nerajoto registrirali, ker To zahteva določena prizadevanja.

V tej lekciji bomo ustvarili zelo preprost sistem registracije, ki ne zahteva in ne shranjuje gesel na splošno! Rezultat bo enostaven za spremembo in dodajanje obstoječega spletnega mesta PHP. Želite ugotoviti, kako deluje? Spodaj.



Tukaj je naš super preprost sistem:

Združujemo obliko dovoljenja in registracije. V tej obliki bo polje za vstop na e-poštni naslov in gumb za registracijo;
- Pri izpolnjevanju polja e-poštnega naslova bo nov uporabnik ustvaril s klikom na gumb Registracija, vendar le, če vneseni e-poštni naslov ni mogoče najti v bazi podatkov.

Po tem se ustvari določen naključni edinstven niz znakov (žetona), ki se pošlje uporabniku, ki ga je uporabnik določil v obliki sklicevanja, ki bo ustrezna v 10 minutah;
- Po povezavi, uporabnik gre na našo spletno stran. Sistem določa prisotnost žetona in pooblašča uporabnika;

Prednosti tega pristopa:

Ni potrebe po shranjevanju gesel in izvedbo validacije polja;
- ni treba obnoviti gesla, tajnih vprašanj itd.;
- Od trenutka, ko je uporabnik registriran / pooblaščen, lahko vedno prepričajte, da bo ta uporabnik na vašem dostopu (da je e-poštni naslov resničen);
- neverjetno preprost postopek registracije;

Slabosti:

Varnost uporabniškega računa. Če ima nekdo dostop do pošte, se lahko prijavi.
- E-pošta ni zaščitena in jo je mogoče prestrežiti. Imejte v mislih, da je to vprašanje pomembno, in v primeru, ko je bilo geslo pozabljeno in ga je treba obnoviti ali v katerem koli sistem avtorizacije, ki ne uporablja HTTPS za prenos podatkov (prijava / geslo);
- medtem ko konfigurirate, kako potrebujete poštni strežnik, obstaja možnost, da bodo sporočila s povezavami do avtorizacije v neželeni elektronski pošti;

Če primerjamo prednosti in slabosti našega sistema, lahko rečemo, da ima sistem visoko yuzobility (najbolj primeren za končnega uporabnika) in hkrati ima nizko varnostno kazalnik.

Zato ga uporabljamo za registracije na forumih in storitvah, ki ne delujejo s pomembnimi informacijami.

Kako uporabljati ta sistem

V primeru, ko morate samo uporabiti sistem za odobritev uporabnikov na vašem spletnem mestu, in ne želite razstaviti te lekcije na kosti, to je tisto, kar morate storiti:

Morate prenesti vire, ki so priloženi lekciji
- Poiščite datoteko v arhivu tabele.SQL. Uvozite ga v bazo podatkov z uporabo uvoza v phpmyadmin. Alternativni način: Odprite to datoteko prek urejevalnika besedila, kopirajte poizvedbo SQL in jo izvedete;
- Odprto vključuje / main.php. in izpolnite komunikacijske nastavitve z bazo podatkov (podajte uporabnika in geslo za komunikacijo z bazo, kot tudi gostitelja in ime baze). V isti datoteki morate navesti tudi e-pošto, ki se bo uporabljal kot originalni naslov za sporočila, ki jih je poslal sistem. Nekateri gostitelji blokirajo odhodne pošte, medtem ko obrazec ne določa tega e-poštnega naslova, ki je nastal na nadzorni plošči gostiteljice, zato navedite pravi naslov;
- Naložite vse datoteke index.php., zaščiteno.php. In sredstva in vključuje mape prek FTP na vašem gostitelju;
- na vsako stran PHP dodajte kodo, kjer morate prikazati obrazec za avtorizacijo;

Zahteva_once "vključuje / main.php"; $ Uporabnik \u003d nov uporabnik (); Če (! $ Uporabnik-& GtlogagedIn ()) (preusmeritev ("Index.php"););)
- Ready!

Za tiste, ki so zainteresirani, kako vse dela - naprej za branje spodaj!

Prvi korak je napisati HTM-kodo obrazca za avtorizacijo. Ta koda se nahaja v datoteki. index.php.. Ta datoteka vsebuje tudi kodo PHP, ki upravlja podatke obrazca in druge koristne funkcije sistema avtorizacije. Več jih lahko naučite v spodnjem delu, namenjenega pregleda kode PHP.

index.php.

Vadnica: Super preprost registracijski sistem s PHP & MySQL

Prijava ali register.

Vnesite svoj e-poštni naslov in poslali bomo
vi ste povezava za prijavo.

V oddelku glave (med oznakami in) Povezal sem glavne sloge (v tej lekciji, ki jih ne razumejo, tako da jih lahko vidite sami. Sredstva / CSS / Style.css mapa). Na zapiranje Povezala sem JQuery Library in Script.js datoteko, ki jo bomo pisali in se sprašujejo tik spodaj.


JavaScript.

jQuery sledi statusu gumba "Register / Avtor" s funkcijo e.preventdefault () In pošlje zahteve AJAX. Odvisno od odziva strežnika, to prikaže to ali to sporočilo in določa nadaljnje ukrepe /

sREDSTVA / JS / SCRIPT.JS

$ (Funkcija () (VAR FORM \u003d $ ("# prijavni register"); FORM.ON ("Pošlji", funkcija (e) (če (obrazec.is (". Nalaganje, .logidedina")) (vrnitev false ) VAR Email \u003d Obrazec.Find ("vhod"). Val (), Messachholder \u003d Form.Find ("Span"); E.PreventDefault (); $ .post (to.Post, E-pošta: E-pošta), Funkcija ( M) (Obrazec.Addclass ("Napaka"); Messachholder.Text (M.Sessage);) ELGE (FORM.RemovecLas ("Error"). AddClass ("LoggedIn"); Messarled ));); $ (Dokument) .Ajaxstart (funkcija ();)); $ (dokument).

je bil dodan v obrazcu, da se prikaže trenutno stanje zahteve AJAX (to je postalo možno zaradi metod ajaxstart ()) JAZ. ajaxcomplete ()ki jih lahko najdete bližje koncu datoteke).

Ta razred prikazuje dvojno animirano datoteko GIF (kot da namiguje, da je zahteva obdelana), in deluje tudi kot zastava, ki preprečuje, da je oblika ponovnega pošiljanja (ko je gumb Register že enkrat pritisnjen enkrat). Razred .prijavljeni. - To je še ena zastava, ki je nastavljena, ko je e-pošta poslana. Ta zastava takoj blokira vse nadaljnje ukrepe z obrazcem.

Shema baze podatkov

Naš neverjetno preprost registracijski sistem uporablja 2 MySQL tabele (koda SQL je v datoteki tabele.SQL.). Prvi trgovini podatki o uporabniških računih. Druga shrani informacije o številu poskusov vnosa.


Vezje uporabniškega tabele.

Sistem ne uporablja gesel, ki je viden v diagramu. Vidite lahko stolpec Žeton. z žetoni, ki mejijo na stolpec token_Validity.. Žeton je nameščen takoj, ko uporabnik poveže s sistemom, nastavi svoj e-poštni naslov, da pošlje sporočilo (malo več o tem v naslednjem bloku). Stolpec token_Validity. Nastavi čas 10 minut kasneje, po katerem žeton preneha biti pomemben.


Krog tabele, ki upošteva število poskusov odobritve.

V obeh tabelah je naslov IP shranjen v predelani obliki z uporabo funkcije IP2Long na celotnem polju.

Zdaj lahko napišemo malo PHP kodo. Glavna funkcionalnost sistema je zaupana razredu Uporabnik.class.php.ki jih lahko vidite spodaj.

Ta razred aktivno uporablja Idorm (DOCS), te knjižnice so minimalno potrebna orodja za delo z bazami podatkov. Obdeluje dostop do baze podatkov, generacijo žetonov in njihovo potrjevanje. To je preprost vmesnik, ki vam omogoča, da enostavno povežete sistem registracije na vaše spletno mesto, če uporablja PHP.

Uporabnik.class.php.

Uporabnik razreda (// zasebni orm zasebni $ orm; / ** * poiščite uporabnika na imenu. Samo veljavni žetoni se upoštevajo. Tocken se ustvari le 10 minut od trenutka * @param string $ žeton. To je Želeni uporabnik tocken * @return. Vrnite vrednost uporabnika funkcije * / javno statično funkcijo FindbyToken ($ Token) (// Poišči žeton v bazi podatkov in se prepričajte, da trenutni časovni žig $ \u003d ORM :: FORT_TABLE (" Reg_Users ") -\u003e Kjer (" žeton ", $ žeton) -\u003e kje_raw (" token_velidity\u003e zdaj () ") -\u003e find_one (); če (! $ Rezultat) (vrnitev false;) vrne nov uporabnik ($ rezultat) ;) / ** * pooblastiti ali registrirati uporabnika * @param niz $ e-pošta. Po meri e-poštni naslov * @return uporabnik * / javni naslov ($ e-pošta) (//, če tak uporabnik že obstaja, vrne vrednost funkcije uporabnika iz določenega e-poštnega naslova, shranjenega v bazi podatkov, če (uporabnik :: obstaja ($ e-pošta)) (vrnitev novega uporabnika ($ e-pošta);) // drugače ustvarite nov uporabnik TV v bazi podatkov in vrnitev vrednosti uporabnika funkcije :: Ustvari iz podanega uporabnika e-poštnega povračila :: Ustvari ($ E-pošta); ) / ** * Ustvarite nov uporabnik in shranite v bazo podatkov * @param String $ e-pošto. Uporabniški e-poštni naslov * @Return User * / Zasebna statična funkcija Ustvari ($ Email) (// Napišite nov uporabnik in vrne rezultat funkcije uporabnika iz teh vrednosti $ Rezultat \u003d ORM :: FORT_TABLE ("REG_USERS") - \u003e Ustvari (); $ Rezultat\u003e E-pošta \u003d $ E-pošta; $ Rezultat -\u003e Shrani (); Vrnite nov uporabnik ($ Rezultat);) / ** * Preverite, ali tak uporabnik obstaja v bazi podatkov in vrne variabilno vrednost spremenljivka * @param string $ e-pošta. Po meri e-poštni naslov * @Return Boolean * / Javna statična funkcija ($ E-pošta) (// je uporabnik v bazi podatkov? $ Rezultat \u003d ORM :: FORM_TABLE ("REG_USERS") -\u003e Kje (»E-pošta«, $ Email ) -\u003e štetje (); vrača $ rezultat \u003d\u003d 1;) / ** * Ustvarite nov uporabnik objekt * @param primerka $ Param ORM, ID, E-pošta ali 0 * @Return User * / Javna funkcija __Construct ($ Param \u003d NULL) (če ($ Param Instancoof ORM) (// ORM Check je opravljen $ To-\u003e Orm \u003d $ Param;) ELJE (IS_String ($ Param)) (// Email Checking $ to-\u003e Om \u003d ::: FOR_TABLE ("REG_USERS") -\u003e Kjer (»E-pošta«, $ Param) -\u003e Find_ONE ();) else ($ ID \u003d 0; če (IS_numeric ($ Param)) (// Uporabniški identifikator se prenese na vrednost $ param $ id vrednost \u003d $ param;) elgle, če (seja $ _ ["loginid"]) (// drugače si oglejte sejo $ ID \u003d $ _Session ["Loginid"];) $ To-\u003e Orm \u003d ORM :: FORM_TABLE ("REG_USERS") -\u003e Kje ("ID", $ ID-ID-ID-ID-jev -\u003e Find_ONE ();) / ** * Ustvari nov token za avtorizacijo SHA1, piše V bazi podatkov in vrne svojo vrednost * @return string * / javna funkcija Generatetoken () (// generira žeton za pooblaščenega uporabnika in ga shranite na $ Token \u003d SHA1 ($ To-\u003e Email.time (). Rand (0 , 1000000); // Shrani žetone v bazi podatkov // in označite, da je pomembno le v 10 od naslednjih minut $ to-\u003e Orm-\u003e Set ("Token", $ žeton); $ to-\u003e Orm-\u003e Set_expr ("token_Velity", "AddTit (zdaj ()," 0:10 ")"); $ to-\u003e OM-\u003e Shrani (); Vrnite $ žetona; ) / ** * pooblastiti uporabnika * @return void * / javno funkcijo Prijava () (// Označi uporabnik kot pooblaščeni $ _session ["Loginid"] \u003d $ to-\u003e Orm-\u003e ID; // osvežite vrednost Osnovno polje LAST_LOGIN $ to-\u003e OM-\u003e SET_EXPR ("Last_Login", "zdaj ()"); $ To-\u003e Orm-\u003e Shrani ();) / ** * Uniči sejo in divira uporabnika * @return Void * / javno funkcijo Odjava () ($ _session \u003d matrika (); UNSERS ($ _ seja);) / ** * Preverite, ali je uporabnik prišel * @return Boolean * / Javna funkcija Logged () (vrnitev Isset ($ to-\u003e Orm-\u003e ID) && $ _Session ["Loginid"] \u003d\u003d $ To-\u003e Orm-\u003e ID;) / ** * Preverite skrbnik uporabnika * @Return Boolean * / Javna funkcija ISADMIN () (vrnitev $ To-\u003e Rank () \u003d \u003d "Skrbnik";) / ** * Poiščite vrsto uporabnika, morda bodisi skrbnik ali redno * @return niz * / javno funkcijo Rank () (če ($ to-\u003e Orm-\u003e Rank \u003d\u003d 1) (Vrnitev »Skrbnik«;) Vrnite se "Regular";) / ** * Metoda vam omogoča, da dobite zasebne INFOR Uporabniški račun pri * Quality Lastnosti uporabnika * @param String $ Key Lastnine Funkcije Prejemanje dostopa * @Return MIXED * / Javna funkcija __Get ($ ključ) (če (MSPET ($ to-\u003e ор -\u003e $ ključ)) (vrnitev $ to-\u003e Orm -\u003e $ ključ; ) Vrnitev null; ))

Žetoni se generirajo z algoritmom SHA1 in so shranjeni v bazi podatkov. Uporabljam funkcije MySQL, da bi nastavila 10-minutno omejitev pomembnosti žetona.

Ko žeton opravi postopek validacije, se neposredno pogovarjamo s tem, da upoštevamo le žetone, ki nimajo datuma poteka, shranjene v stolpcu TKen_Validy.

Upoštevajte, da uporabljam magično metodo __get. Knjižnice docs na koncu datoteke za prestrezanje dostopa do lastnosti uporabnika objekta.

Zaradi tega postane možno dostop do informacij, shranjenih v bazi podatkov, zahvaljujoč lastnostim $ User-\u003e E-pošta, $ User-\u003e Token et al. V naslednjem fragmentu kode razmislite za primer, kako uporabljati te razrede.


Zaščitena stran

Druga datoteka, ki shranjuje koristno in potrebno funkcionalnost je datoteka. funkcije.php.. Obstaja več tako imenovanih pomočnikov - pomočnike, ki vam omogočajo, da ustvarite čistejšo in berljivo kodo v drugih datotekah.

funkcije.php.

Funkcija Pošlji _Email ($ od, $ na, $ predmeta, $ sporočilo) (// pomočnika, pošiljanje e-pošte $ glave \u003d "MIME-različica: 1.0". \\ T n "; $ glave. \u003d" Vrsta vsebine: besedilo / Plain; Charset \u003d UTF-8 "."; $ Glave. \u003d "Iz:". $ Iz. "; Povratno pošto ($ to, $ subjekt, $ headders );) Funkcija Get_page_URL () (// Določite URL USTRL US PHP \u003d "HTTP". (PRAZNI (strežnik $ _ ["HTTPS"])? "": "S"). ": //" $ _ Server ["Server_Name"]; če (ISSET (strežnik $ _ ["zahtevek_uri"]) && $ _Server ["zahtevek_uri"]! \u003d "") ($ URL. \u003d $ _Server ["zahtevek_uri"];) else ($ URL . \u003d $ _Server ["PATH_INFO"];) Vrnite $ URL;) Funkcija Rate_limit ($ IP, $ Light_hour \u003d 20, $ Light_10_Min \u003d 10) (// Število poskusov vnosa za zadnjo uro na tem naslovu IP naslov $ \u003d Orm :: for_table ("reg_login_attttment") -\u003e Kjer ("IP", Sprintf ("% U", IP2Long ($ IP)) -\u003e Kje_rew ("TS\u003e Pomage (zdaj ()," 1:00 " ) ") -\u003e štetje (); // število poskusov vnosa v zadnjih 10 minutah na tem naslovu IP naslov $ count_10_min \u003d ORM :: for_table (" REG_LOGIN_TABTPLET ") -\u003e Kjer (" IP ", Sprint f ("% u", ip2long ($ IP)) -\u003e Kje_rew ("TS\u003e Pomage (zdaj ()," 0:10 ")") -\u003e Število (); Če ($ country_hour\u003e $ limight_hour || $ count_10_min\u003e $ limight_10_min) (vrgel novo izjemo ("preveč poskusov prijave!");)) funkcija rate_limit_tick ($ IP, $ email) (// ustvariti nov vnos v tabeli ki upošteva število vnosov poskusov $ Prijava_atTempt \u003d ORM :: FORT_TABLE ("REG_LOGIN_ATTPEmp") -\u003e Ustvarjanje (); $ Prijavin_attttmmpt-\u003e Email \u003d $ Email; $ Login_attt-\u003e IP \u003d Sprintf («% U", IP2Long ($ IP ); $ Login_atttmmpt-\u003e Shrani ();) Funkcija preusmeritev ($ URL) (glava ("Lokacija: $ URL"); Izhod;)

Funkcije rate_limit. in rate_limit_tick. Sledijo številu poskusov odobritve za obdobje, ki je potekel, od trenutka prvega poskusa. Vhodni poskus se zabeleži v bazi podatkov v stolpcu REG_LOGIN_ATTempt. Te funkcije se imenujejo pri obdelavi in \u200b\u200bpošiljanju podatkov obrazca, kot jih lahko vidite iz naslednjega fragmenta kode.

Koda je vzeta iz spodnje datoteke. index.php. In obdeluje pošiljanje obrazca. Vrne odziv JSON, ki ga nato obdeluje JQuery v datoteki sREDSTVA / JS / SCRIPT.JSki smo že razstavljeni prej.

index.php.

Poskusite (če (! Prazno ($ _ pošto) && Isset (strežnik $ _ ["http_x_requested_with"])) (// izhod z glavo glave JSON ("Vrsta vsebine: Aplikacija / JSON"); // je ta e-poštni naslov Veljavno, če (! Isset ($ _ Post [E-pošta "]) ||! Filter_var ($ _ Post [" Email "], Filter_Validat_Email)) (Vrzi novo izjemo (" Vnesite veljavno e-pošto ");) // Check . Ali se lahko uporabnik prijavi, ali presega število dovoljenih priključkov? (Funkcijska datoteka za več informacij) CENT_LIMIT (strežnik $ _ ["Remote_ADDR"]; // Snemajte ta poskus, da se odobri Rate_limit_tick ($ _ Server ["Remote_ADDR"], $ _post ["E-pošta"]); // pošljite pismo uporabniku $ Sporočilo \u003d ""; $ Email \u003d $ _post ["E-pošta"]; $ Predmet \u003d "Vaša prijavna povezava" ; če (! Uporabnik :: obstaja ($ E-pošta)) ($ Zadeva \u003d "Hvala za registracijo!"; $ Message \u003d "Hvala za registracijo na naši spletni strani!";) // poskuša dovoliti ali Registrirajte uporabnika $ User \u003d Uporabnik :: LoginRegister ($ _ Post [E-pošta "]); $ Sporočilo. \u003d" Lahko se prijavite iz tega URL: \\ n " ; $ sporočilo. \u003d Get_page_URL (). "? TKN \u003d". $ Uporabnik-\u003e Generatetoken (). "; n"; $ Sporočilo. \u003d "Povezava se izteče samodejno po 10 minutah."; $ Rezultat \u003d Point_Email ($ FreheMail, $ _post [»E-pošta«], $ predmet, $ sporočilo); Če (! $ Rezultat) (vrgel novo izjemo ("je prišlo do napake, ki pošilja e-pošto. Poskusite znova.");) Die (json_encode (matrika ("sporočilo" \u003d\u003e "Hvala! Mi" ste poslali povezavo Na vašo mapo Prejeto. Preverite tudi mapo Spam. ")))))) Ulov (json_encode (matrika (napaka" \u003d\u003e 1, "sporočilo" \u003d\u003e $ e-\u003e getmessage ()));)

Po uspešni odobritvi / registracijski kodi, bo uporabnik poslal povezavo za avtorizacijo uporabniku. Tocken postane dostopna, ker Prenaša se kot spremenljivka pri nastali metodi povezave $ _Get. S TKN Marker.

index.php.

Če (ISSET ($ _ Get ["TKN"])) (// je ta žeton veljaven za avtorizacijo? $ Uporabnik \u003d Uporabnik :: FindyToken ($ _ ["TKN"]); če (uporabnik) (// Da je. Če želite preusmeriti na zaščiteno stran $ uporabnika-\u003e Prijava (); preusmeritev ("zaščitena.php");) // ne, žeton ni veljaven. Izvedite preusmeritev, na strani z obrazcem dovoljenja / registracije preusmerjanja ("index.php");)

$ User-\u003e Prijava ()

ustvarite potrebne spremenljivke za sejo, tako da bo uporabnik, ki gleda skozi naslednje strani strani, ostal ves čas odobren.

Podobno je urejena tudi obdelava funkcije za izhod iz sistema.

index.php.

Če (ISSET ($ _ Get ["Odjava"])) ($ User \u003d Novi uporabnik (); če ($ User -\u003e LoggedIn ()) ($ User-\u003e\u003e Odjava ();) Preusmeritev ("Index.php" );)

Na koncu kode sem ponovno preusmeril na indec.php, s čimer je parameter ? Odjava \u003d 1 URL ni potreben.

Naša datoteka. index.php. zahteva dodaj. Zaščita - ne želimo, da so ljudje, ki so kdaj nekoč prijavili v sistem, spet videli obrazec za registracijo. Za te namene uporabljamo metodo $ User-\u003e LoggedIn ().

index.php.

$ Uporabnik \u003d nov uporabnik (); Če ($ uporabnik-\u003e LoggedIn ()) (preusmeritev ("zaščitena.php");)

Nazadnje, tukaj je kos kode, ki vam omogoča, da zaščitite strani vaše spletne strani in da je na voljo samo po pooblastilu.

zaščiteno.php.

// Za zaščito vsake strani na vašem spletnem mestu, priključite datoteko // main.php na to in ustvarite nov uporabnik objekt. Tako je enostavno! Zahteva_once "vključuje / main.php"; $ Uporabnik \u003d nov uporabnik (); Če (! $ Uporabnik -\u003e LoggedIn ()) (preusmeritev ("Index.php"););)

Po tem pregledu ste lahko prepričani, da je bil uporabnik uspešno pooblaščen. V podatkovni bazi lahko dostopate tudi s shranjenimi informacijami z lastnostmi objekta. $ Uporabnika.. Za prikaz e-pošte in uporabnika ter njenega stanja uporabite to kodo:

Echo "Vaš e-poštni naslov:" $ User-\u003e Email; Echo "Tvoja Rank:" $ User-\u003e Rank ();

Metoda rank () Uporablja se tukaj, ker je baza podatkov običajno shranjena (0 za redni uporabnika, 1 za skrbnika) in te podatke moramo pretvoriti v statuse, na katere se nanašajo na nas in ta metoda pomaga.

Če želite upravičen uporabnik, preprosto uredite uporabniški vpis prek PhpMyADMIN (ali katerega koli drugega programa, ki vam omogoča upravljanje baz podatkov). Stanje skrbnika ne daje nobenih privilegijev, v tem primeru na strani se prikaže, da ste skrbnik - in to je to.

Toda kaj storiti z njo - ostaja po vaši presoji, lahko pišete in ustvarite kodo, ki opredeljuje določene privilegije in priložnosti za administratorje.

Končali smo!

S tem neverjetno super kvazi preprosto obliko, smo končali! Lahko ga uporabite na spletnih mestih PHP, je dovolj enostavno. Lahko ga spremenite tudi pod samim seboj in želite, kot želite.

Material je pripravil Denis Baby posebej za spletno mesto

P.S. Želite nadaljevati v obvladovanje PHP in OOP? Bodite pozorni na lekcije premije na različnih vidikih stavb na kraju samem, vključno s programiranjem PHP, pa tudi prosti tečaj o ustvarjanju sistema CMS na PHP iz nič, ki uporablja OOP:

Vam je bilo všeč material in se želite zahvaliti?
Samo delite s prijatelji in sodelavci!