Izrada jednostavnog sustava registracije korisnika u PHP-u i MySQL-u. PHP skripte za obradu HTML obrazaca Obrazac za prijavu otkaza php

Zdravo! Sada ćemo pokušati implementirati najjednostavniju registraciju na web mjestu koristeći PHP + MySQL. Da biste to učinili, Apache mora biti instaliran na vašem računalu. Princip rada naše skripte prikazan je u nastavku.

1. Započnimo stvaranjem tablice korisnika u bazi podataka. Sadržat će korisničke podatke (prijavu i lozinku). Idemo na phpmyadmin (ako kreirate bazu podataka na računalu http://localhost/phpmyadmin/). Kreiramo tablicu korisnici, ona će imati 3 polja.

Ja ga kreiram u bazi podataka mysql, možete ga kreirati u drugoj bazi podataka. Zatim postavite vrijednosti kao na slici:

2. Potrebna je veza s ovom tablicom. Kreirajmo datoteku bd.php. Njegov sadržaj:

U mom slučaju to izgleda ovako:

Spremite bd.php.
Sjajno! Imamo tablicu u bazi i vezu s njom. Sada možete krenuti u izradu stranice na kojoj će korisnici ostavljati svoje podatke.

3. Napravite reg.php datoteku sa sadržajem (svi komentari unutra):



Registracija


Registracija


Vaša prijava:




Tvoja lozinka:








4. Napravite datoteku koja će unijeti podatke u bazu i spremiti korisnika. save_user.php (komentari unutra):

5. Sada se naši korisnici mogu registrirati! Zatim morate stvoriti "vrata" za već registrirane korisnike za ulazak na stranicu. index.php (komentari unutra) :




Početna stranica


Početna stranica


Vaša prijava:


Tvoja lozinka:






Registar



OK, sada je sve gotovo! Lekcija može biti dosadna, ali vrlo korisna. Ovdje je prikazana samo ideja registracije, a zatim je možete poboljšati: dodajte sigurnost, dizajn, podatkovna polja, učitavanje avatara, odjavu s vašeg računa (da biste to učinili, jednostavno uništite varijable iz sesije s funkcijom nepostavljenosti) i tako dalje. Sretno!

Sve sam provjerio, radi kako treba!

Dobar dan prijatelji! Pogledajmo registraciju korisnika u PHP-u. Najprije definirajmo uvjete za našu registraciju korisnika:

  • Lozinka je šifrirana pomoću MD5 algoritma
  • Zasolit ćemo lozinku
  • Provjeravam je li vaša prijava zauzeta
  • Aktivacija korisnika pismom.
  • Snimanje i pohranjivanje podataka u MySQL DBMS

Da bismo napisali ovu skriptu, moramo razumjeti što je registracija korisnika. Registracija korisnika podrazumijeva dobivanje stvarnih korisničkih podataka, obradu i pohranu podataka.

Jednostavnim riječima, registracija je samo bilježenje i pohranjivanje određenih podataka pomoću kojih možemo autorizirati korisnika u našem slučaju - to su Login i Password.

Ovlaštenje je davanje prava određenoj osobi ili skupini osoba za obavljanje određenih radnji, kao i postupak provjere tih prava pri pokušaju izvršenja tih radnji. Jednostavno, uz pomoć autorizacije možemo ograničiti pristup određenim sadržajima na našoj web stranici.

Pogledajmo strukturu direktorija skripti za implementaciju naše registracije s autorizacijom. Moramo rastaviti skripte na logičke komponente. Module za registraciju i autorizaciju smjestili smo u zaseban direktorij. Također ćemo smjestiti vezu na MySQL bazu podataka, datoteku s korisničkim funkcijama, datoteku CSS stila i naš HTML predložak u zasebne direktorije. Ova struktura vam omogućuje brzo kretanje kroz skripte. Zamislite da imate veliku web stranicu s hrpom modula itd. a ako nema reda, bit će vrlo teško pronaći nešto u ovakvom neredu.

Budući da ćemo sve podatke pohraniti u MySQL DBMS, napravimo malu tablicu u koju ćemo pohraniti registracijske podatke.

Prvo morate napraviti tablicu u bazi podataka. Nazovimo tablicu bez_reg gdje je bez prefiks tablice, a reg naziv tablice.

Struktura tablice: bez_reg -- -- Struktura tablice `bez_reg` -- KREIRAJ TABLICU AKO NE POSTOJI `bez_reg` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(200) NIJE 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_INKREMENT=1 ; Kreirajmo sada glavne skripte za daljnji rad. Datoteka INDEX.PHP

CONFIG.PHP datoteku

less/reg/?mode=auth">Prijava

  • 2. Gumb za resetiranje

    Kada kliknete gumb za resetiranje, svi elementi obrasca bit će postavljeni u stanje koje je navedeno u zadanim atributima i obrazac se neće predati.


    PHP skripta nije potrebna.

    3. Potvrdni okvir

    Potvrdni okviri korisniku nude niz opcija i dopuštaju proizvoljan odabir (nijedan, jedan ili više njih).

    Bijela
    zelena
    Plava
    Crvena
    Crno

    Primjer 2.
    // prvi set gumba
    // drugi set gumba
    // treći set gumba

    5. Tekstno polje (tekst)

    Prilikom stvaranja uobičajenog tekstualnog polja veličine veličine i maksimalne dopuštene duljine znakova maxlength, atribut tipa preuzima vrijednost text. Ako je parametar vrijednosti naveden, polje će prikazati vrijednost navedenu u varijabli. Prilikom kreiranja polja ne zaboravite navesti naziv polja jer... ovaj atribut je obavezan.

    6. Polje za lozinku

    Potpuno isto kao tekstualno polje, osim što znakovi koje korisnik upisuje neće biti prikazani na ekranu.

    7. Skriveno tekstualno polje (skriveno)

    Omogućuje vam prosljeđivanje nekih servisnih informacija skripti bez prikazivanja na stranici.

    8. Padajući popis (odaberite)

    Oznaka je padajući ili prošireni popis, a može se odabrati jedan ili više redaka u isto vrijeme. Ali vrijednost će biti proslijeđena zadnjem odabranom gumbu.
    Popis počinje uparenim oznakama. Oznake vam omogućuju da definirate sadržaj popisa, a parametar vrijednosti definira vrijednost niza. Ako je odabrani parametar naveden u oznaci, tada će red biti inicijalno odabran. Parametar veličine određuje koliko će redaka popis zauzimati. Ako je veličina 1, popis će biti padajući. Ako je naveden višestruki atribut, tada se može odabrati više elemenata s popisa. Ali ova se shema praktički ne koristi, a s veličinom = 1 nema smisla.

    Bijelo Zeleno Plavo Crveno Crno

    Ako trebate stvoriti padajući izbornik s predvidljivim slijedom. Na primjer, popis s godinama od 2000. do 2050. Zatim se koristi sljedeća tehnika.

    9. Višeredno polje za unos teksta (textarea)

    Polje za unos teksta s više redaka omogućuje slanje ne samo jednog reda, već nekoliko odjednom. Ako je potrebno, možete navesti atribut readonly, koji zabranjuje uređivanje, brisanje i promjenu teksta, tj. tekst će biti samo za čitanje. Ako je potrebno da se tekst inicijalno prikaže u višerednom polju za unos, tada se mora postaviti između oznaka.
    Postoji parametar prelamanja - postavljanje prelamanja redaka. Moguće vrijednosti:
    isključeno – onemogućuje prijelaz redaka;
    virtualno – prikazuje prijelome redaka, ali šalje tekst kakav je unesen;
    fizički – prijelomi redaka ostavljaju se u izvornom obliku.
    Prema zadanim postavkama, oznaka stvara prazno polje koje je široko 20 znakova i sastoji se od 2 retka.


    Kako bi tekstualno polje od više redaka bilo u skladu s html oblikovanjem (prelamanje redaka pomoću oznake
    ili
    ), zatim upotrijebite funkciju nl2br():

    Izvorno umetnuti red 1 Izvorno umetnut red 2 Izvorno umetnut red 3

    10. Gumb za učitavanje datoteka (pregledaj)

    Služi za implementaciju učitavanja datoteka na poslužitelj. Kada stvarate tekstualno polje, također trebate navesti vrstu polja kao "datoteka".

    Prenesi datoteku:

    Načini na koje preglednik komunicira s poslužiteljem

    Postoji nekoliko metoda koje nudi HTTP protokol. Ovo je važna informacija. Drugih načina nema. U praksi se koriste dva:
    GET je kada se podaci šalju u adresnu traku, na primjer kada korisnik klikne vezu.
    POST – kada klikne gumb na obrascu.

    GET metoda

    Za prijenos podataka metodom GET ne morate kreirati obrazac na HTML stranici (nitko vam ne brani koristiti obrasce za zahtjeve metodom GET) - samo poveznica na dokument uz dodatak niza upita, koji može izgledati kao varijabla=vrijednost. Parovi se spajaju pomoću znaka &, a niz se dodaje URL-u stranice pomoću upitnika “? "
    Ali ne morate koristiti parove ključ=vrijednost ako trebate proslijediti samo jednu varijablu - da biste to učinili, trebate napisati VRIJEDNOST (ne naziv) varijable nakon upitnika.
    Prednost prosljeđivanja parametara na ovaj način je da klijenti koji ne mogu koristiti metodu POST (kao što su tražilice) i dalje mogu jednostavno slijediti vezu za prosljeđivanje parametara skripti i dohvaćanje sadržaja.
    Nedostatak je taj što jednostavnim mijenjanjem parametara u adresnoj traci korisnik može okrenuti skriptu na nepredvidiv način i to stvara veliku sigurnosnu rupu, u kombinaciji s nedefiniranim varijablama i register_globals uključenim ili netko može saznati vrijednost važnu varijablu (na primjer - ID sesije) samo gledajući na zaslon monitora.
    :
    - za pristup javnim stranicama s prolaznim parametrima (povećana funkcionalnost)
    - prijenos informacija koji ne utječe na razinu sigurnosti
    :
    - za pristup zaštićenim stranicama s prijenosom parametara
    - za prijenos informacija koje utječu na razinu sigurnosti
    - za prijenos informacija koje korisnik ne može mijenjati (neki prenose tekst SQL upita.

    POST metoda

    Podatke POST metodom možete poslati samo pomoću obrasca na HTML stranici. Glavna razlika između POST-a i GET-a je u tome što se podaci ne prenose u zaglavlju zahtjeva, već u tijelu, stoga ih korisnik ne vidi. Možete ga modificirati samo promjenom samog obrasca.
    prednost:
    - veća sigurnost i funkcionalnost zahtjeva putem obrazaca POST metodom.
    mana:
    - manja dostupnost.
    Za što ga trebate koristiti:
    - za prijenos velike količine informacija (tekst, datoteke..);
    - prenijeti sve važne informacije;
    - za ograničavanje pristupa (npr. korištenje samo forme za navigaciju - opcija koja nije dostupna svim robotskim programima ili grablerima sadržaja).
    Za što se ne smije koristiti:

    PHP može prihvatiti datoteku preuzetu bilo kojim preglednikom. To omogućuje učitavanje tekstualnih i binarnih datoteka. U kombinaciji s PHP autentifikacijom i funkcijama datotečnog sustava, imate potpunu kontrolu nad time kome je dopušteno učitavati datoteke i što učiniti s datotekom nakon što je učitana.
    Stranica za učitavanje datoteke može se implementirati pomoću posebnog obrasca koji izgleda otprilike ovako:

    //Obrazac za učitavanje datoteka Pošalji ovu datoteku:

    U gornjem primjeru " URL" mora biti zamijenjeno vezom na PHP skriptu. Skriveno polje MAX _FILE_SIZE (vrijednost mora biti navedena u bajtovima) mora prethoditi polju za odabir datoteke, a njegova vrijednost je najveća dopuštena veličina prihvaćene datoteke. Također biste trebali napraviti svakako navedite enctype=" u atributima obrasca multipart/form-data" , inače datoteke neće biti učitane na poslužitelj.
    Pažnja
    Opcija MAX _FILE_SIZE je preporuka preglednika, čak i ako bi PHP također provjeravao ovaj uvjet. Zaobilaženje ovog ograničenja na strani preglednika je prilično jednostavno, tako da se ne biste trebali oslanjati na ovu značajku za blokiranje svih većih datoteka. Međutim, ne postoji način da se zaobiđe PHP-ovo ograničenje maksimalne veličine. Svejedno biste trebali dodati varijablu oblika MAX _FILE_SIZE, jer onemogućuje korisnicima da tjeskobno čekaju dok prenose goleme datoteke, samo da bi otkrili da je datoteka prevelika i da prijenos zapravo nije uspio.

    Kako definirati metodu zahtjeva?

    Direktno:

    Getenv("REQUEST_METHOD");

    vratit će GET ili POST.

    Koju metodu treba koristiti?

    Ako se obrazac koristi za traženje nekih informacija, na primjer, tijekom pretraživanja, tada ga treba poslati metodom GET. Kako bi stranica bila ažurirana, možete je označiti i/ili poslati vezu prijatelju.
    Ukoliko se kao rezultat predaje obrasca podaci zabilježe ili promijene na poslužitelju, tada ih treba poslati POST metodom, a obavezno nakon obrade obrasca preusmjeriti preglednik GET metodom. Također, POST može biti potreban ako je potrebno prenijeti veliku količinu podataka na poslužitelj (za GET je vrlo ograničen), a također i ako se preneseni podaci ne bi trebali prikazati u adresnoj traci (prilikom unosa prijave i lozinke, na primjer).
    U svakom slučaju, nakon obrade POST-a, preglednik uvijek trebate preusmjeriti na neku stranicu, pa makar i istu, ali bez podataka obrasca, kako se oni ne bi ponovno zabilježili kada se stranica osvježi.

    Kako prenijeti podatke u drugu datoteku izravno iz tijela PHP programa koristeći metode GET i POST?

    Primjer za demonstraciju slanja podataka korištenjem metoda POST i GET istovremeno i primanja odgovora od poslužitelja.

    JavaScript je blokiran u vašem pregledniku. Omogućite JavaScript kako bi stranica radila!

    Rad s obrascima

    HTML obrasci se koriste za prijenos podataka od korisnika web stranice do poslužitelja. PHP nudi brojne posebne alate za rad s obrascima.

    Predefinirane varijable

    PHP ima niz unaprijed definiranih varijabli koje se ne mijenjaju u svim aplikacijama koje se izvode u određenom okruženju. Također se nazivaju varijablama okruženja ili varijablama okruženja. Oni odražavaju postavke okruženja Apache web poslužitelja, kao i traže informacije za taj preglednik. Moguće je dobiti vrijednosti URL-a, niza upita i drugih elemenata HTTP zahtjeva.

    Sve unaprijed definirane varijable sadržane su u asocijativnom nizu $GLOBALS. Osim varijabli okruženja, ovaj niz također sadrži globalne varijable definirane u programu.

    Primjer 1 Pregledajte niz $GLOBALS

    Kao rezultat toga, popis svih globalnih varijabli, uključujući varijable okoline, pojavit će se na ekranu. Najčešće korišteni su:

    Opis varijable Sadržaj
    $_SERVER["HTTP_USER_AGENT"]Ime i verzija klijentaMozilla/5.0 (kompatibilan; Googlebot/2.1; +http://www.google.com/bot.html)
    $_SERVER["REMOTE_ADDR"]IP adresa144.76.78.4
    getenv("HTTP_X_FORWARDED_FOR")Interna IP adresa klijenta
    $_SERVER["REQUEST_METHOD"]Metoda zahtjeva (GET ili POST)DOBITI
    $_SERVER["QUERY_STRING"]U GET zahtjevu, kodirani podaci koji se šalju zajedno s URL-om
    $_SERVER["REQUEST_URL"]Puna adresa korisnika uključujući niz upita
    $_SERVER["HTTP_REFERER"]URL stranice s koje je poslan zahtjev
    $_SERVER["PHP_SELF"]Put do programa koji se izvršava/index.php
    $_SERVER["SERVER_NAME"]Domenaweb stranica
    $_SERVER["REQUEST_URI"]Staza/php/php_forma.php
    Rukovanje korisničkim unosom

    PHP program za obradu unosa može se odvojiti od HTML teksta koji sadrži forme za unos ili se može smjestiti na jednu stranicu.

    Primjer 2. Primjer obrade unosa