Php obrazac za prijavu i registraciju. Izrada jednostavnog sustava registracije korisnika u PHP-u i MySQL-u

U ovom ćete članku naučiti kako izraditi obrazac za registraciju i autorizaciju koristeći HTML, JavaScript, PHP i MySql. Takvi se obrasci koriste na gotovo svakom mjestu, bez obzira na njegovu vrstu. Stvoreni su za forum, i za online trgovinu i za društvene mreže (kao što su Facebook, Twiter, Odnoklassniki) i za mnoge druge vrste stranica.

Ako imate web mjesto na vašem lokalnom računalu, nadam se da već imate lokalni poslužitelj instaliran i pokrenut. Bez toga ništa neće uspjeti.

Izrada tablice u bazi podataka

Da bismo proveli registraciju korisnika, prvo nam je potrebna baza podataka. Ako ga već imate, onda je super, u suprotnom, trebate ga stvoriti. U članku sam detaljno objasnio kako to učiniti.

I tako, imamo bazu podataka (skraćeno DB), sada trebamo napraviti tablicu korisnika u koje ćemo dodavati naše registrirane korisnike.

Kako napraviti tablicu u bazi, također sam objasnio u članku. Prije izrade tablice potrebno je definirati koja će polja sadržavati. Ova će polja odgovarati poljima iz obrasca za registraciju.

Dakle, pomislili smo, zamislili koja će polja naš obrazac imati i izraditi tablicu korisnika sa ovim poljima:

  • iskaznica- Identifikator. Polje iskaznica treba biti u svakoj tablici iz baze podataka.
  • ime- Da sačuvam ime.
  • prezime- Da sačuvam prezime.
  • elektronička pošta- Za spremanje poštanske adrese. Za prijavu ćemo koristiti e-mail, tako da ovo polje mora biti jedinstveno, odnosno imati JEDINSTVEN indeks.
  • email_status- Polje za označavanje je li pošta potvrđena ili ne. Ako je mail potvrđen, tada će imati vrijednost 1, inače vrijednost 0.
  • lozinka- Za spremanje lozinke.


Ako želite da vaš obrazac za registraciju ima još neka polja, možete ih dodati i ovdje.

To je to, naš stol korisnika spreman. Prijeđimo na sljedeći korak.

Veza s bazom podataka

Napravili smo bazu podataka, sada se trebamo spojiti na nju. Spojit ćemo se pomoću MySQLi PHP ekstenzije.

U mapi naše stranice kreirajte datoteku s imenom dbconnect.php, i u njemu pišemo sljedeću skriptu:

Pogreška veze s bazom podataka. Opis pogreške: ".mysqli_connect_error()."

"; exit(); ) // Postavite kodiranje veze $mysqli->set_charset("utf8"); //Radi praktičnosti, ovdje dodajte varijablu koja će sadržavati naziv naše stranice $address_site = "http://testsite .lokalno" ; ?>

Ova datoteka dbconnect.php morat će se povezati s rukovateljima obrascima.

Obratite pozornost na varijablu $address_site, ovdje sam naveo naziv svog testnog mjesta na kojem ću raditi. U skladu s tim navodite naziv svoje stranice.

Struktura stranice

Sada pogledajmo HTML strukturu naše web stranice.

Premjestite zaglavlje i podnožje stranice u zasebne datoteke, zaglavlje.php I podnožje.php. Povezat ćemo ih na svim stranicama. Naime, na glavnoj (datoteci indeks.php), na stranicu s obrascem za registraciju (datoteka obrazac_registar.php) i na stranici s obrascem za autorizaciju (datoteka obrazac_auth.php).

Blokiraj s našim vezama, registracija I ovlaštenje, dodajte u zaglavlje stranice tako da budu prikazani na svim stranicama. Jedna poveznica će ući na stranica obrasca za registraciju(datoteka obrazac_registar.php), a drugi na stranicu sa obrazac ovlaštenja(datoteka obrazac_auth.php).

Sadržaj datoteke header.php:

Naziv naše stranice

Kao rezultat toga, naša glavna stranica izgleda ovako:


Naravno, vaša stranica može imati potpuno drugačiju strukturu, ali to nam sada nije važno. Glavna stvar je da postoje poveznice (gumbi) za registraciju i autorizaciju.

Sada prijeđimo na obrazac za registraciju. Kao što ste već shvatili, imamo ga u dosjeu obrazac_registar.php.

Idemo u bazu podataka (u phpMyAdmin), otvorimo strukturu tablice korisnika i vidjeti koja nam polja trebaju. Dakle, potrebna su nam polja za unos imena i prezimena, polje za unos poštanske adrese (Email) i polje za unos lozinke. A iz sigurnosnih razloga, dodat ćemo polje za unos captcha.

Na poslužitelju, kao rezultat obrade registracijske forme, mogu se pojaviti razne greške zbog kojih se korisnik neće moći registrirati. Stoga, da bi korisnik razumio zašto registracija ne uspijeva, potrebno mu je prikazati poruke o tim greškama.

Prije prikaza obrasca dodajemo blok za prikaz poruka o greškama iz sesije.

I još jedan trenutak, ako je korisnik već autoriziran, a radi interesa ulazi na stranicu za registraciju izravno upisivanjem u adresnu traku preglednika web_url/obrazac_registar.php, tada ćemo u ovom slučaju umjesto obrasca za registraciju prikazati naslov da je već registriran.

Općenito, kod datoteke obrazac_registar.php dobili smo ovako:

Već ste registrirani

U pregledniku stranica za registraciju izgleda ovako:


Pomoću potreban atribut, učinili smo sva polja obaveznim.

Obratite pozornost na šifru obrasca za registraciju gdje prikazuje se captcha:


Mi smo u vrijednosti atributa src za sliku naveli put do datoteke captcha.php, koji generira ovaj captcha.

Pogledajmo kod datoteke captcha.php:

Kod je dobro komentiran, pa ću se usredotočiti samo na jednu točku.

Unutar funkcije imageTtfText(), naveden je put do fonta verdana.ttf. Da bi captcha radila ispravno, moramo stvoriti mapu fontovi, i tamo stavite datoteku fonta verdana.ttf. Možete ga pronaći i preuzeti s interneta ili preuzeti iz arhive s materijalima ovog članka.

Završili smo s HTML strukturom, vrijeme je da krenemo dalje.

Provjera e-pošte s jQueryjem

Svaki obrazac zahtijeva provjeru valjanosti unesenih podataka, kako na strani klijenta (koristeći JavaScript, jQuery), tako i na strani poslužitelja.

Posebnu pozornost moramo obratiti na polje Email. Vrlo je važno da je unesena email adresa važeća.

Za ovo polje za unos postavili smo vrstu email (type="email"), ovo nas malo upozorava na netočne formate. No, to nije dovoljno, jer kroz inspektor koda koji nam preglednik nudi, možete jednostavno promijeniti vrijednost atributa tip S elektronička pošta na tekst, i to je to, naš ček više neće vrijediti.


I u tom slučaju moramo napraviti pouzdaniju provjeru. Da bismo to učinili, koristit ćemo jQuery biblioteku iz JavaScripta.

Za povezivanje jQuery biblioteke, u datoteci zaglavlje.php između oznaka , prije završne oznake , dodajte ovaj redak:

Odmah nakon ovog retka dodajte kod za provjeru valjanosti e-pošte. Ovdje dodajemo kod za provjeru duljine unesene lozinke. Mora imati najmanje 6 znakova.

Uz pomoć ove skripte provjeravamo valjanost unesene email adrese. Ako je korisnik unio pogrešnu e-poštu, prikazujemo pogrešku o tome i deaktiviramo gumb za slanje obrasca. Ako je sve u redu, uklanjamo grešku i aktiviramo gumb za slanje na obrascu.

I tako, s provjerom valjanosti obrasca na strani klijenta, gotovi smo. Sada ga možemo poslati na server, gdje ćemo također napraviti par provjera i dodati podatke u bazu.

Registracija korisnika

Obrazac šaljemo na obradu u datoteku registar.php, POST metodom. Naziv ove datoteke rukovatelja, naveden u vrijednosti atributa akcijski. A način slanja naveden je u vrijednosti atributa metoda.

Otvori ovu datoteku registar.php i prva stvar koju trebamo učiniti je napisati funkciju pokretanja sesije i uključiti datoteku koju smo ranije stvorili dbconnect.php(U ovoj datoteci napravili smo vezu s bazom podataka). Pa ipak, odmah deklarirajte ćelije poruke_pogreške I poruke_uspjeha u globalnom polju sesije. U poruke_pogreške zabilježit ćemo sve poruke o pogreškama koje se pojave tijekom obrade obrazaca i u poruke_uspjeha Pišimo sretne poruke.

Prije nego što nastavimo, moramo provjeriti je li obrazac uopće predan. Napadač može pogledati vrijednost atributa akcijski iz obrasca i saznajte koja datoteka obrađuje ovaj obrazac. I može doći na ideju da ode izravno na ovu datoteku upisivanjem sljedeće adrese u adresnu traku preglednika: http://site_site/register.php

Stoga moramo provjeriti postoji li ćelija u globalnom POST nizu čiji naziv odgovara nazivu našeg gumba "Registracija" iz obrasca. Dakle, provjeravamo je li gumb "Registracija" pritisnut ili ne.

Ako napadač pokuša otići izravno na ovu datoteku, dobit će poruku o pogrešci. Podsjećam vas da varijabla $address_site sadrži naziv stranice i deklarirana je u datoteci dbconnect.php.

Greška! glavna stranica .

"); } ?>

Captcha vrijednost u sesiji dodana je tijekom njenog generiranja, u datoteku captcha.php. Kao podsjetnik, još jednom ću pokazati ovaj dio koda iz datoteke captcha.php, gdje se captcha vrijednost dodaje sesiji:

A sad prijeđimo na sam test. U datoteci registar.php, unutar if bloka, gdje provjeravamo da li je pritisnuta tipka "Registracija", odnosno gdje je komentar " // (1) Mjesto za sljedeći dio koda"pišemo:

//Provjeri primljeni captcha //Skrati razmake od početka i od kraja niza $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //Usporedite primljenu vrijednost s vrijednošću iz sesije. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // Ako captcha nije točna, vratite korisnika na stranicu za registraciju, a tamo ćemo prikazati poruku o pogrešci da je unio krivi captcha. $error_message = "

Greška! Unijeli ste krivi captcha

"; // Spremite poruku o pogrešci u sesiju. $_SESSION["error_messages"] = $error_message; // Vratite korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: " .$address_site ."/form_register.php"); //Zaustavite skriptu exit(); ) // (2) Mjesto za sljedeći dio koda )else( //Ako captcha nije proslijeđena ili je prazna izlaz ("

Greška! Ne postoji kontrolni kod, odnosno captcha kod. Možete otići na glavnu stranicu.

"); }

Zatim moramo obraditi primljene podatke iz POST polja. Prije svega trebamo provjeriti sadržaj globalnog POST niza, odnosno postoje li tamo ćelije čiji nazivi odgovaraju nazivima polja za unos iz naše forme.

Ako ćelija postoji, tada skraćujemo razmake od početka i od kraja niza iz ove ćelije, u suprotnom, preusmjeravamo korisnika natrag na stranicu s formularom za registraciju.

Nadalje, nakon što su razmaci obrezani, dodajemo niz u varijablu i provjeravamo da li je varijabla prazna, ako nije prazna, onda idemo dalje, u suprotnom preusmjeravamo korisnika natrag na stranicu s obrascem za registraciju.

Zalijepite ovaj kod na navedeno mjesto // (2) Mjesto za sljedeći dio koda".

/* Provjerite sadrži li globalni niz $_POST podatke poslane iz obrasca i priložite poslane podatke regularnim varijablama.*/ if(isset($_POST["first_name"]))( // Skratite razmake od početka i kraja niz $first_name = trim($_POST["first_name"]); //Provjeri je li varijabla prazna if(!empty($first_name))( // Radi sigurnosti, pretvorite posebne znakove u HTML entitete $first_name = htmlspecialchars( $first_name, ENT_QUOTES) ; )else( // Spremi poruku o pogrešci u sesiju. $_SESSION["error_messages"] .= "

Unesite svoje ime

Nedostaje polje za naziv

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) if( isset($_POST["last_name"]))( // Skrati razmake s početka i kraja niza $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // Radi sigurnosti, pretvorite posebne znakove u HTML entitete $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // Spremite poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

Unesite svoje prezime

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) )else ( // Spremite poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

Nedostaje polje za naziv

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) if( isset($_POST["email"]))( // Skrati razmake s početka i kraja niza $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) Mjesto koda za provjeru formata adrese e-pošte i njezine jedinstvenosti )else( // Spremi poruku o pogrešci u sesiju. $_SESSION["error_messages" ] .= "

Unesi svoj email

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) )else ( // Spremite poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) if( isset($_POST["password"]))( // Skrati razmake s početka i kraja niza $password = trim($_POST["password"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //Kriptiraj lozinku $password = md5($password."top_secret"); )else( // Spremi poruku o pogrešci u sesiju. $_SESSION["error_messages"] .= "

Unesite svoju lozinku

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) )else ( // Spremite poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) // (4) Mjesto za kod za dodavanje korisnika u bazu

Polje je od posebne važnosti. elektronička pošta. Moramo provjeriti format primljene poštanske adrese i njezinu jedinstvenost u bazi podataka. Odnosno je li korisnik s istom email adresom već registriran.

Na navedenoj lokaciji" // (3) Mjesto koda za provjeru formata poštanske adrese i njezine jedinstvenosti" dodajte sljedeći kod:

//Provjerite format primljene adrese e-pošte koristeći regularni izraz $reg_email = "/^**@(+(*+)*\.)++/i"; //Ako format primljene adrese e-pošte ne odgovara regularnom izrazu if(!preg_match($reg_email, $email))( // Spremi poruku o pogrešci u sesiju. $_SESSION["error_messages"] .= "

Unijeli ste nevažeću e-poštu

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) // Provjerite postoji li već takva adresa u bazi $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email."""); Ako postoji su točno jedan redak, tada je korisnik s ovom adresom e-pošte već registriran if($result_query->num_rows == 1)( //Ako rezultat nije jednak false if(($row = $result_query->fetch_assoc() ) != false) ( // Spremite poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

Korisnik s ovom email adresom je već registriran

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); )else( //Spremi poruku o pogrešci na sesiju .$_SESSION["error_messages"] .= "

Pogreška u upitu baze podataka

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); ) /* zatvori odabir */ $ result_query-> close(); //Zaustavi skriptu exit(); ) /* zatvori odabir */ $result_query->close();

I tako, završili smo sa svim provjerama, vrijeme je da dodamo korisnika u bazu podataka. Na navedenoj lokaciji" // (4) Mjesto za kod za dodavanje korisnika u bazu" dodajte sljedeći kod:

//Upit za dodavanje korisnika u bazu $result_query_insert = $mysqli->query("INSERT INTO `users` (ime, prezime, email, lozinka) VRIJEDNOSTI ("".$first_name."", "".$last_name ." ", "".$email."", "".$lozinka."")"); if(!$result_query_insert)( // Spremi poruku o pogrešci u sesiju. $_SESSION["error_messages"] .= "

Zahtjev o pogrešci za dodavanje korisnika u bazu podataka

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); )else( $_SESSION["success_messages"] = "

Registracija uspješno završena!!!
Sada se možete prijaviti koristeći svoje korisničko ime i lozinku.

"; //Pošaljite korisnika na stranicu za autorizaciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_auth.php"); ) /* Dovršite zahtjev */ $ result_query_insert-> close(); //Zatvaranje veze s bazom podataka $mysqli->close();

Ako se pojavi pogreška u zahtjevu za dodavanje korisnika u bazu podataka, sesiji dodajemo poruku o toj pogrešci i vraćamo korisnika na stranicu za registraciju.

Inače, ako je sve prošlo u redu, sesiji dodamo i poruku, ali to je već ugodnije, naime kažemo korisniku da je registracija uspjela. I preusmjeravamo ga na stranicu s obrascem za autorizaciju.

Skripta za provjeru formata e-mail adrese i duljine lozinke nalazi se u datoteci zaglavlje.php, pa će utjecati i na polja iz tog obrasca.

Sesija se također pokreće u datoteci zaglavlje.php, dakle u datoteci obrazac_auth.php sesiju ne treba pokretati jer dobivamo grešku.


Kao što rekoh, ovdje radi i skripta za provjeru formata mail adrese i duljine lozinke. Stoga, ako korisnik unese pogrešnu e-mail adresu ili kratku lozinku, odmah će dobiti poruku o pogrešci. Tipka ući postat će neaktivan.

Nakon ispravljanja grešaka, gumb ući postaje aktivan i korisnik može predati obrazac na poslužitelj gdje će se obraditi.

Autorizacija korisnika

Pripisati vrijednost akcijski obrazac za autorizaciju ima datoteku auth.php, što znači da će obrazac biti obrađen u ovoj datoteci.

Dakle, otvorimo datoteku auth.php i napišite kod za obradu autorizacijskog obrasca. Prvo što trebate učiniti je pokrenuti sesiju i uključiti datoteku dbconnect.php za povezivanje s bazom podataka.

//Deklarirajte ćeliju za dodavanje pogrešaka koje se mogu pojaviti tijekom obrade obrasca. $_SESSION["error_messages"] = ""; //Deklarajte ćeliju za dodavanje uspješnih poruka $_SESSION["success_messages"] = "";

/* Provjerite je li obrazac poslan, odnosno je li kliknuto na gumb Prijava. Ako da, onda idemo dalje, ako ne, tada ćemo korisniku prikazati poruku o pogrešci, koja navodi da je otišao izravno na ovu stranicu. */ if(isset($_POST["btn_submit_auth"]) && !empty($_POST["btn_submit_auth"]))( //(1) Mjesto za sljedeći dio koda )else( exit("

Greška! Ovoj stranici ste pristupili izravno, tako da nema podataka za obradu. Možete otići na glavnu stranicu.

"); }

//Provjeri primljeni captcha if(isset($_POST["captcha"]))( //Skrati razmake s početka i kraja niza $captcha = trim($_POST["captcha"]); if(!empty ($captcha ))( //Usporedite primljenu vrijednost s vrijednošću iz sesije. if(($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != ""))( // Ako je captcha nevažeća, vraćamo korisnika na stranicu za autorizaciju i tamo ćemo prikazati poruku o pogrešci da je unio krivi captcha. $error_message = "

Greška! Unijeli ste krivi captcha

"; // Spremite poruku o pogrešci u sesiju. $_SESSION["error_messages"] = $error_message; // Vratite korisnika na stranicu za autorizaciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: " .$address_site ."/form_auth.php"); //Zaustavi skriptu exit(); ) )else( $error_message = "

Greška! Polje za unos captcha ne smije biti prazno.

"; // Spremite poruku o pogrešci u sesiju. $_SESSION["error_messages"] = $error_message; // Vratite korisnika na stranicu za autorizaciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: " .$address_site ."/form_auth.php"); //Zaustavite skriptu exit(); ) //(2) Mjesto za obradu adrese e-pošte //(3) Mjesto za obradu lozinke //(4) Mjesto za napravite upit bazi podataka )else ( //Ako captcha nije proslijeđena exit("

Greška! Ne postoji kontrolni kod, odnosno captcha kod. Možete otići na glavnu stranicu.

"); }

Ako je korisnik ispravno unio verifikacijski kod, idemo dalje, u suprotnom ga vraćamo na stranicu za autorizaciju.

Potvrda adrese e-pošte

// Skratite razmake s početka i kraja niza $email = trim($_POST["email"]); if(isset($_POST["email"]))( if(!empty($email))( $email = htmlspecialchars($email, ENT_QUOTES); //Provjerite format primljene adrese e-pošte koristeći regularni izraz $ reg_email = " /^**@(+(*+)*\.)++/i"; //Ako format primljene adrese e-pošte ne odgovara regularnom izrazu if(!preg_match($reg_email, $email ))( // Spremi u poruku o pogrešci sesije.$_SESSION["error_messages"] .= "

Unijeli ste nevažeću e-poštu

"; //Vrati korisnika na stranicu za autorizaciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_auth.php"); //Zaustavi skriptu exit(); ) )else ( // Spremi poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

Polje za unos poštanske adrese (email) ne smije biti prazno.

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_register.php"); //Zaustavi izlaz skripte(); ) )else ( // Spremite poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

Ne postoji polje za unos Emaila

"; //Vrati korisnika na stranicu za autorizaciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_auth.php"); //Zaustavi skriptu exit(); ) // (3) Mjesto za obradu lozinke

Ukoliko je korisnik unio e-mail adresu u krivom formatu ili je vrijednost polja za e-mail adresu prazna, vraćamo ga na stranicu za autorizaciju, gdje ispisujemo poruku o tome.

Provjera lozinke

Sljedeće polje za obradu je polje za lozinku. Na određeno mjesto" //(3) Mjesto za obradu lozinke", pišemo:

If(isset($_POST["password"]))( // Skratite razmake s početka i kraja niza $password = trim($_POST["password"]); if(!empty($password))( $password = htmlspecialchars($password, ENT_QUOTES); // Šifrirajte lozinku $password = md5($password."top_secret"); )else( // Spremite poruku o pogrešci u sesiju. $_SESSION["error_messages"] . = "

Unesite svoju lozinku

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_auth.php"); //Zaustavi izlaz skripte(); ) )else ( // Spremi poruku pogreške u sesiju. $_SESSION["error_messages"] .= "

Ne postoji polje za unos lozinke

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_auth.php"); //Zaustavi izlaz skripte(); )

Ovdje pomoću funkcije md5 () kriptiramo primljenu lozinku, jer u bazi podataka imamo lozinke u šifriranom obliku. Dodatna tajna riječ u enkripciji, u našem slučaju " strogo čuvana tajna" mora biti onaj koji je korišten prilikom registracije korisnika.

Sada trebate napraviti upit prema bazi podataka o izboru korisnika čija je mail adresa jednaka primljenoj mail adresi i lozinka jednaka primljenoj lozinci.

//Upit u bazu podataka o izboru korisnika. $result_query_select = $mysqli->query("SELECT * FROM `users` WHERE email = "".$email."" AND password = "".$password."""); if(!$result_query_select)( // Spremi poruku o pogrešci u sesiju. $_SESSION["error_messages"] .= "

Pogreška upita pri odabiru korisnika iz baze podataka

"; //Vrati korisnika na stranicu za registraciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_auth.php"); //Zaustavi izlaz skripte(); )else( //Provjeriti nema li korisnika s takvim podacima u bazi, zatim prikazati poruku o grešci if($result_query_select->num_rows == 1)( // Ako uneseni podaci odgovaraju podacima iz baze, spremiti prijavu i lozinku za polje sesije. $_SESSION["email"] = $email; $_SESSION["password"] = $password; //Vrati korisnika na zaglavlje glavne stranice("HTTP/1.1 301 Moved Permanently" ); header("Lokacija: ".$address_site ."/index.php"); )else( // Spremi poruku o pogrešci u sesiju. $_SESSION["error_messages"] .= "

Pogrešno korisničko ime i/ili lozinka

"; //Vrati korisnika na stranicu za autorizaciju header("HTTP/1.1 301 Moved Permanently"); header("Lokacija: ".$address_site."/form_auth.php"); //Zaustavi skriptu exit(); ) )

Izlaz sa stranice

I zadnja stvar koju implementiramo je izlazni postupak. Trenutno u zaglavlju prikazujemo poveznice na stranicu za autorizaciju i stranicu za registraciju.

U zaglavlju stranice (datoteka zaglavlje.php), pomoću sesije provjeravamo je li korisnik već prijavljen. Ako nije, onda prikazujemo linkove za registraciju i autorizaciju, u protivnom (ako je autoriziran), tada umjesto linkova za registraciju i autorizaciju prikazujemo link Izlaz.

Izmijenjeni dio koda iz datoteke zaglavlje.php:

Registracija

Izlaz

Kada kliknete na link za izlaz sa stranice, ulazimo u datoteku odjava.php, gdje jednostavno uništavamo ćelije s email adresom i lozinkom iz sesije. Nakon toga vraćamo korisnika natrag na stranicu na kojoj je link kliknut Izlaz.

Kod datoteke odjava.php:

To je sve. Sada znate kako implementirati i obraditi registracijske i autorizacijske obrasce korisnika na vašoj stranici. Ovi obrasci se nalaze na gotovo svakom mjestu, tako da bi svaki programer trebao znati kako ih izraditi.

Također smo naučili kako validirati ulazne podatke, kako na strani klijenta (u pregledniku, koristeći JavaScript, jQuery) tako i na strani poslužitelja (koristeći PHP jezik). I mi smo naučili implementirati postupak odjave.

Sve skripte su testirane i rade. Arhivu s datotekama ove male stranice možete preuzeti na ovom linku.

U budućnosti ću napisati članak u kojem ću opisati. Također planiram napisati članak u kojem ću objasniti (bez ponovnog učitavanja stranice). Dakle, kako biste bili svjesni objavljivanja novih članaka, možete se pretplatiti na moju stranicu.

Ako imate bilo kakvih pitanja, obratite se, također, ako primijetite bilo kakvu grešku u članku, javite mi.

Plan lekcije (5. dio):

  1. Stvaranje HTML strukture za obrazac za autorizaciju
  2. Zaprimljene podatke obrađujemo
  3. Pozdrav korisnika prikazujemo u zaglavlju stranice

Svidio vam se članak?

Stvaranje stranice temeljene na članstvu isprva se čini kao zastrašujući zadatak. Ako ste ikada htjeli ovo učiniti sami, a onda ste jednostavno odustali kada ste počeli razmišljati kako ćete to sastaviti pomoću svojih PHP vještina, onda je ovaj članak za vas. Provest ćemo vas kroz svaki aspekt stvaranja web stranice koja se temelji na članstvu, sa sigurnim područjem za članove zaštićenim lozinkom.

Cijeli proces sastoji se od dva velika dijela: registracije korisnika i autentifikacije korisnika. U prvom dijelu obradit ćemo izradu registracijske forme i pohranu podataka u MySQL bazu podataka. U drugom dijelu izradit ćemo obrazac za prijavu i koristiti ga da korisnicima omogućimo pristup u sigurnom području.

Preuzmite kod

Cijeli izvorni kod za sustav registracije/prijave možete preuzeti na donjoj poveznici:

Konfiguracija i prijenos
Datoteka ReadMe sadrži detaljne upute.

Otvori izvor\include\membersite_config.php datoteku u uređivaču teksta i ažurirajte konfiguraciju. (Prijava u bazu podataka, naziv vaše web stranice, vaša adresa e-pošte itd.).

Prenesite cijeli sadržaj imenika. Testirajte register.php slanjem obrasca.

Obrazac za registraciju

Kako bismo kreirali korisnički račun, moramo prikupiti minimalnu količinu informacija od korisnika. Trebamo njegovo ime, adresu e-pošte i željeno korisničko ime i lozinku. Naravno, možemo zatražiti više informacija u ovom trenutku, ali dugačak obrazac je uvijek odbojnost. Dakle, ograničimo se samo na ta polja.

Ovdje je obrazac za registraciju:

Registar

Dakle, imamo tekstualna polja za ime, email i lozinku. Imajte na umu da koristimo za bolju upotrebljivost.

Provjera valjanosti obrasca

U ovom trenutku dobra je ideja postaviti neki oblik koda za provjeru valjanosti kako bismo bili sigurni da imamo sve podatke potrebne za kreiranje korisničkog računa. Moramo provjeriti jesu li ime i adresa e-pošte i lozinka popunjeni i je li adresa e-pošte u ispravnom formatu.

Rukovanje podnošenjem obrasca

Sada moramo obraditi podatke obrasca koji su poslani.

Evo slijeda (pogledajte datoteku fg_membersite.php u preuzetom izvoru):

funkcija RegisterUser() ( if(!isset($_POST["submitted"])) ( return false; ) $formvars = array(); if(!$this->ValidateRegistrationSubmission()) ( return false; ) $this- >CollectRegistrationSubmission($formvars); if(!$this->SaveToDatabase($formvars)) ( return false; ) if(!$this->SendUserConfirmationEmail($formvars)) ( return false; ) $this->SendAdminIntimationEmail($ formvars); vrati istinito; )

Prvo potvrđujemo predaju obrasca. Zatim prikupljamo i ‘saniramo’ podatke o slanju obrazaca (uvijek to učinite prije slanja e-pošte, spremanja u bazu podataka itd.). Podneseni obrazac zatim se sprema u tablicu baze podataka. Šaljemo e-poruku korisniku tražeći potvrdu. Zatim obavještavamo administratora da je korisnik registriran.

Spremanje podataka u bazu podataka

Sada kada smo prikupili sve podatke, moramo ih pohraniti u bazu podataka.
Evo kako spremamo poslani obrazac u bazu podataka.

funkcija SaveToDatabase(&$formvars) ( if(!$this->DBLogin()) ( $this->HandleError("Prijava u bazu podataka nije uspjela!"); return false; ) if(!$this->Ensuretable()) ( return false; ) if(!$this->IsFieldUnique($formvars,"email")) ( $this->HandleError("Ova e-pošta je već registrirana"); return false; ) if(!$this->IsFieldUnique( $formvars,"username")) ( $this->HandleError("Ovo korisničko ime je već korišteno. Pokušajte s drugim korisničkim imenom"); return false; ) if(!$this->InsertIntoDB($formvars)) ( $this- >HandleError("Umetanje u bazu podataka nije uspjelo!"); return false; ) return true; )

Imajte na umu da ste konfigurirali podatke za prijavu u bazu podataka u datoteci memberite_config.php. U većini slučajeva možete koristiti “localhost” za host baze podataka.
Nakon prijave provjeravamo da tablica postoji. (Ako ne, skripta će kreirati traženu tablicu).
Zatim se uvjeravamo da su korisničko ime i email jedinstveni. Ako nije jedinstven, korisniku vraćamo grešku.

Struktura tablice baze podataka

Ovo je struktura tablice. Funkcija CreateTable() u datoteci fg_membersite.php stvara tablicu. Evo koda:

function CreateTable() ( $qry = "Stvori tablicu $this->tablename (". "id_user INT NOT NULL AUTO_INCREMENT ,". "ime VARCHAR(128) NOT NULL ,". "e-pošta VARCHAR(64) NOT NULL ,". "broj_telefona VARCHAR(16) NOT NULL ,". "korisničko ime VARCHAR(16) NOT NULL ,". "lozinka VARCHAR(32) NOT NULL ,". "potvrdni kod VARCHAR(32) ,". "PRIMARNI KLJUČ (id_user)". ")"; if(!mysql_query($qry,$this->connection)) ( $this->HandleDBError("Pogreška pri stvaranju tablice \nupit je bio\n $qry"); return false; ) return true; )

Polje id_user sadržavat će jedinstveni ID korisnika, a također je primarni ključ tablice. Imajte na umu da dopuštamo 32 znaka za polje za lozinku. To činimo jer ćemo, kao dodatnu sigurnosnu mjeru, pohraniti lozinku u bazu podataka šifriranu pomoću MD5. Imajte na umu da budući da je MD5 jednosmjerna metoda šifriranja, nećemo moći oporaviti lozinku u slučaju da je korisnik zaboravi.

Umetanje registracije u tablicu

Ovdje je kod koji koristimo za umetanje podataka u bazu podataka. Svi naši podaci bit će dostupni u nizu $formvars.

funkcija InsertIntoDB(&$formvars) ( $confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "umetni u ".$this->tablename."(ime, e-pošta, korisničko ime, lozinka, confirmcode) values ​​​​("" . $this->SanitizeForSQL($formvars["name"]) . "", "" . $this->SanitizeForSQL($formvars["email"]) . "", "" . $ this->SanitizeForSQL($formvars["username"]) . "", "" . md5($formvars["password"]) . "", "" . $confirmcode . "")"; if(! mysql_query( $insert_query ,$this->connection)) ( $this->HandleDBError("Pogreška pri umetanju podataka u tablicu\nquery:$insert_query"); return false; ) return true; )

Primijetite da koristimo PHP funkciju md5() za šifriranje lozinke prije umetanja u bazu podataka.
Također, iz e-mail adrese korisnika izrađujemo jedinstveni kod za potvrdu.

Slanje e-pošte

Sada kada imamo registraciju u našoj bazi podataka, korisniku ćemo poslati e-poruku potvrde. Korisnik mora kliknuti poveznicu u potvrdnoj e-poruci kako bi dovršio postupak registracije.

funkcija SendUserConfirmationEmail(&$formvars) ( $mailer = new PHPMailer(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["name"]) ; $mailer->Subject = "Vaša registracija na ".$this->sitename; $mailer->From = $this->GetFromAddress(); $confirmcode = urlencode($this->MakeConfirmationMd5($formvars["email" ])); $confirm_url = $this->GetAbsoluteURLFolder()."/confirmreg.php?code=".$confirmcode; $mailer->Body ="Hello ".$formvars["name"]."\r\ n\r\n". "Hvala na vašoj registraciji na ".$this->sitename."\r\n". "Molimo kliknite donju poveznicu da potvrdite svoju registraciju.\r\n". "$confirm_url\r \n". "\r\n". "Pozdrav,\r\n". "Webmaster\r\n". $this->sitename; if(!$mailer->Send()) ( $this-> HandleError("Neuspješno slanje e-pošte potvrde registracije."); return false; ) return true; )

nadopune

9. siječnja 2012
Dodane su značajke poništavanja lozinke/promjene lozinke
Kod se sada dijeli na GitHubu.

dobrodošao natragPuno ime korisnika(); ?>!

Licenca


Kod se dijeli pod licencom LGPL. Možete ga slobodno koristiti na komercijalnim ili nekomercijalnim web stranicama.

Nema povezanih postova.

Komentari na ovaj unos su zatvoreni.

Laravel zahtijeva Composer za upravljanje ovisnostima projekta. Dakle, prije instaliranja Laravela, provjerite imate li Composer instaliran na vašem sustavu. U slučaju da prvi put čujete za Composer, to je alat za upravljanje ovisnostima za php sličan npm-u čvora.

Da biste instalirali Composer na svoj stroj, pogledajte ovaj post:

Instaliranje Laravela na Windows:

Slijedite korake u nastavku da biste instalirali laravel na Windows stroj. Bez obzira što imate xampp/wamp stack, radi za oba. Na WAMP-u svakako instalirajte laravel u mapu "www" i na XAMPP, očito "htdocs".

KORAK-1) Otvorite mapu "htdocs" na XAMPP-u, držite tipku SHIFT i desnom tipkom miša kliknite na mapu i odaberite "otvori prozor naredbe ovdje". Alternativno, možete otvoriti naredbeni prozor i promijeniti direktorij u "xampp/htdocs".

KORAK-2) Unesite sljedeću naredbu.

Skladatelj create-project laravel/laravel my_laravel_site --prefer-dist

Ovdje je "my_laravel_site" naziv mape u koju će se instalirati laravel datoteke. Promijenite ovo po svom ukusu.

KORAK-3) Sada je vrijeme za strpljenje jer će instalacija laravela potrajati neko vrijeme.

KORAK-4) Nakon instalacije, promijenite direktorij u "my_laravel_site" (cd "my_laravel_site") na naredbenom retku i unesite naredbu ispod.

php artisan serve

KORAK-5) Ovo će prikazati poruku nešto poput "Laravel razvojni poslužitelj pokrenut:" zajedno s url-om.

KORAK-6) Kopirajte i zalijepite url u preglednik. Ako stvari krenu kako treba, vidjet ćete laravelov ekran dobrodošlice.

KORAK-7) Gotovo! Uspješno ste instalirali laravel na Windows stroj i spremni ste za rad.

Postavljanje aplikacijskog ključa:

Laravel zahtijeva malo konfiguracije nakon instalacije. Zahtijeva da postavite ključ aplikacije. Ovo je nasumični niz od 32 znaka koji se koristi za šifriranje sesije i drugih osjetljivih podataka. Obično će se to postaviti automatski kada instalirate laravel putem skladatelja ili programa za instalaciju laravela.

U slučaju da nije postavljeno, morate to učiniti ručno. Najprije preimenujte datoteku ".env.example" u ".env" u korijenu vaše aplikacije. Zatim otvorite naredbeni redak i prijeđite na mapu projekta laravel. Sada pokrenite donju naredbu za generiranje ključa.

php artisan ključ:generiraj

Kopirajte ovaj generirani ključ u varijablu APP_KEY u datoteci ".env". Spremite i gotovi ste.

Instaliranje određene Laravel verzije:

Gore navedena metoda natjerat će skladatelja da preuzme i instalira najnoviju verziju Laravela. Ako želite instalirati starije verzije laravela na svoje računalo, svakako uključite odgovarajući broj verzije u naredbu create-project.

Skladatelj create-project laravel/laravel=5.4 your-project-name --prefer-dist Pročitajte također:

Isto tako možete jednostavno instalirajte laravel pomoću skladatelja na Windows. Nadam se da će vam ovaj vodič biti koristan. Podijelite ga u svom društvenom krugu ako vam se sviđa.

Mnoge stranice koje svakodnevno pregledavamo web gotovo sve imaju registraciju korisnika. U toj lekciji proći ćemo kroz osnove upravljanja korisnicima, završavajući s jednostavnim članskim područjem koje možete implementirati na svoju web stranicu.

Ova lekcija je osmišljena za početnike koji uče php gdje ćemo pokriti osnove upravljanja korisnicima.

Korak 1

Kreirajmo korisničku tablicu u bazi podataka u kojoj ćemo pohranjivati ​​podatke o korisnicima u tablici 4 polja

  • ID korisnika
  • Korisničko ime
  • Lozinka
  • email adresa

Upotrijebite SQL upit u nastavku za izradu baze podataka

STVARANJE TABLICE `korisnici` ( `UserID` INT(25 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `Korisničko ime` VARCHAR(65 ) NOT NULL, `Zaporka` VARCHAR(32) NOT NULL, `Adresa e-pošte` VARCHAR(255 ) NIJE NULL ) ;

početak_sesije(); $dbhost = "localhost" ; // Naziv glavnog računala gdje se nalazi mysql poslužitelj obično localhost $dbname = "baza podataka" ; // Naziv baze podataka $dbuser = "korisničko ime" ; // Korisničko ime baze podataka $dbpass = "lozinka" ; // Lozinka za pristup bazi podataka mysql_connect ($dbhost, $dbuser, $dbpass) ili die ("MySQL pogreška: ". mysql_error () ) ; mysql_select_db ($dbname ) ili die ("MySQL Error: " . mysql_error () ) ; ?>

Ova datoteka je odgovorna za povezivanje s bazom podataka i bit će prikazana na svim stranicama. Pogledajmo detaljnije retke koda.

početak_sesije();

Ova funkcija pokreće sesiju za novog korisnika, au njoj ćemo pohraniti podatke o tijeku sesije kako bismo mogli prepoznati već identificirane korisnike

mysql_connect($dbhost, $dbuser, $dbpass) ili die("MySQL pogreška: " . mysql_error());

mysql_select_db($dbname) ili die("MySQL pogreška: " . mysql_error());

Svaka od ovih funkcija obavlja zasebne, ali povezane zadatke.

Funkcija mysql_connect povezuje se s MySQL poslužiteljem baze podataka jer su parametri u zagradama varijable kojima su dodijeljene odgovarajuće vrijednosti Host, Username, Password ako podaci nisu točni prikazat će se poruka o pogrešci

Funkcija mysql_select_db odabire bazu čije smo ime dodijelili varijabli $dbname, ako nije moguće pronaći bazu, prikazuje poruku o pogrešci

Korak 2 Stvorite datoteku index.php

Dobar dio važan element na našoj stranici - je prvi redak PHP-a; ovaj redak će uključivati ​​datoteku koju smo stvorili iznad ( baza.php) i u biti nam omogućuje pristup bilo čemu iz te datoteke u našoj trenutnoj datoteci. To ćemo učiniti pomoću sljedećeg retka PHP koda. Napravite datoteku pod nazivom index.php i postavite ovaj kod na vrh.

Napravite novu datoteku index.php i zalijepite sljedeći kod na samom početku

Ovaj redak će sadržavati datoteku koju smo stvorili iznad (base.php), što će nam omogućiti pristup kodu te datoteke u našoj trenutnoj datoteci.

To čini funkcija uključi()

Sada ćemo napraviti vanjsko sučelje gdje će korisnik unijeti svoje podatke za registraciju, a ako je već registriran dati mogućnost promjene podataka. Budući da je ova lekcija usmjerena na PHP, nećemo se baviti HTML/CSS kodom, pogledat ćemo kasnije kada izradimo našu CSS tablicu stilova, ali za sada ćemo samo zalijepiti ovaj kod nakon prethodnog retka.

Sustav upravljanja korisnicima <title> </span> <span><link rel="stylesheet" href="/style.css" type="text/css" /> </span> </head> <body> <span><div id="main">Ovdje zalijepite php kod</div> </p> <p>Sada, prije nego što zalijepimo php program, analizirajmo princip njegovog rada, što bi trebalo biti prikazano na ekranu u određenoj situaciji:</p> <ol><li>Ako je korisnik već prijavljen, prikazujemo stranicu s raznim opcijama koje su bile skrivene prije registracije.</li> <li>Ako se korisnik još nije prijavio, ali se registrirao, prikazujemo obrazac za unos korisničkog imena i lozinke.</li> <li>Ukoliko točke 1. i 2. nisu ispunjene, prikazujemo obrazac za prijavu.</li> </ol><p>Izgledat će ovako:</p> <p><?php </span> <span>ako (! prazno prazno</span> <span>{ </span> <span>// Prikaži skrivene opcije ovdje</span> <span>} </span> <span>elseif (! prazno prazno ($_POST [ "lozinka" ] ) )</span> <span>{ </span> <span>// Prikaži obrazac za prijavu</span> <span>} </span> <span>drugo</span> <span>{ </span> <span>// Prikaži obrazac za registraciju</span> <span>} </span> <span>?> </p> <p>Kada je korisnik autoriziran na našoj stranici, informacije se pohranjuju u sesiji; možemo im pristupiti putem globalnog polja <b>$_SESSION</b>. S praznom funkcijom i znakom! u if uvjetu provjeravamo ima li varijabla vrijednost, ako varijabla ima vrijednost, izvršavamo kod između vitičastih zagrada.</p> <p>U sljedećem retku sve radi na isti način, samo ovaj put s <b>$_POST</b> globalni niz. Ovaj niz sadrži sve podatke poslane putem obrasca za prijavu koji ćemo kasnije izraditi. Posljednji else uvjet će se izvršiti ako prethodni uvjeti nisu zadovoljeni.</p> <p>Sada kada razumijemo logiku, zalijepimo sljedeći kod u datoteku index.php između oznaka <div></p> <p><?php </span> <span>if (! prazno ($_SESSION [ "LoggedIn" ] ) && ! prazno ($_SESSION [ "Korisničko ime" ] ) )</span> <span>{ </span> <span>?> </span> <span> <h1>Korisnička zona</h1> </span> <span> <p Спасибо что вошли! Вы <b><?= $_SESSION [ "Username" ] ?> </b> i svoju adresu e-pošte <b><?= $_SESSION [ "EmailAddress" ] ?> </b>.</p> </span> <span><?php </span> <span>} </span> <span>elseif (! prazno ($_POST [ "korisničko ime" ] ) && ! prazno ($_POST [ "lozinka" ] ) )</span> <span>{ </span> <span>$username = mysql_real_escape_string ($_POST [ "username" ] ) ;</span> <span>$lozinka = md5(mysql_real_escape_string</span> <span>$checklogin = mysql_query(</span> <span>if (mysql_num_rows ($checklogin ) == 1 )</span> <span>{ </span> <span>$row = mysql_fetch_array ($checklogin) ;</span> <span>jeka <span>"<h1>Uspješno ste se prijavili</h1>" </span>; </span> <span>jeka <span>"<p>Sada ćete biti preusmjereni na svoj profil.</p>" </span>; </span> <span>jeka <span>"<meta content="=2;index.php" />" </span>; </span> <span>} </span> <span>drugo</span> <span>{ </span> <span>jeka " <h1>Greška</h1>" ; </span> <span>jeka <span>"<p>Vaš račun nije pronađen ili ste unijeli krivo korisničko ime ili lozinku. <a href=\" index.php\" >pokušaj ponovno</a>.</p>" </span>; </span> <span>} </span> <span>} </span> <span>drugo</span> <span>{ </span> <span>?> </span> <h1>Ulaz</h1> <span> <p>Dobro je da ste se prijavili. Registracija.</p> </span> <span> <form method="post" action="index.php" name="loginform" id="loginform"> </span> <fieldset> <span> <label for="username">Prijaviti se:</label><input type="text" name="username" id="username" /><br /> </span> <span> <label for="password">Lozinka:</label><input type="password" name="password" id="password" /><br /> </span> <span> <input type="submit" name="login" id="login" value="Ući" /> </span> </fieldset> </form> <span><?php </span> <span>} </span> <span>?> </p> <p>Postoje dvije funkcije u ovom dijelu koda, a to su <b>mysql_real_escape_string</b> koji izbjegava posebne znakove u nizovima za korištenje u bazi podataka, čime vas štiti od loših ljudi, i <b>md 5</b> ova funkcija šifrira sve što joj se proslijedi kao parametar, u ovom slučaju to je lozinka u globalnom polju <b>$_POST</b>. Sve rezultate rada funkcija pridružujemo varijablama <b>$korisničko ime, <span>$lozinka</span> </b>.</p> <p>$checklogin = mysql_query( <span>"SELECT * FROM korisnici WHERE Korisničko ime = ""</span>. $korisničko ime. "" I Lozinka = "" . $lozinka. """ );</span> <span>if (mysql_num_rows ($checklogin ) == 1 )</span> <span>{ </span> <span>$row = mysql_fetch_array ($checklogin) ;</span> <span>$email = $row [ "EmailAddress" ] ;</span> <span>$_SESSION [ "Korisničko ime" ] = $korisničko ime;</span> <span>$_SESSION [ "EmailAddress" ] = $email;</span> <span>$_SESSION[ "Prijavljen" ] = 1;</p> <p>U ovom dijelu koda moramo provjeriti postoji li takav korisnik, za to šaljemo upit bazi podataka, izvlačimo sva polja iz tablice korisnici gdje su polja Korisničko ime i Lozinka jednaka varijablama <b>$korisničko ime i $lozinka</b>. Rezultat upita pohranjuje se u varijablu <b>$checklogin</b> dalje u stanju <b>ako</b> funkcija <b>mysql_broj_reda</b> s broji broj redaka u upitu prema bazi podataka i ako je 1, odnosno korisnik je pronađen, izvršavamo kod u vitičastim zagradama, funkcija <b>mysql_fetch_array</b> transformira rezultat upita iz <b>$checklogin</b> asocijativnom nizu, dodijelite vrijednost polja EmailAddress varijabli <b>$e-pošta</b> za buduću upotrebu.</p> <p>Upisujemo prijavu i e-poštu u trenutnoj sesiji, nakon čega se korisnik preusmjerava na svoj račun.</p> <p><b>Korak-3</b></p> <p>Sada trebamo napraviti stranicu na kojoj će se korisnici registrirati.</p> <p>Napravite register.php datoteku i kopirajte sljedeći kod u nju:</p> <p><?php include "base.php" ; ?> </span> <span><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> </span> <span><html xmlns="http://www.w3.org/1999/xhtml"> </span> <span><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </span> <span><title>Sustav upravljanja korisnicima - Registrationtitle></span> <span><link rel="stylesheet" href="/style.css" type="text/css" /> </span> </head> <body> <div id="main"> <span><?php </span> <span>if (! prazno ($_POST [ "korisničko ime" ] ) && ! prazno ($_POST [ "lozinka" ] ) )</span> <span>{ </span> <span>$username = mysql_real_escape_string ($_POST [ "username" ] ) ;</span> <span>$lozinka = md5 (mysql_real_escape_string ($_POST [ "lozinka" ] ) ) ;</span> <span>$email = mysql_real_escape_string ($_POST [ "email" ] ) ;</span> <span>$checkusername = mysql_query( <span>"SELECT * FROM korisnici WHERE Korisničko ime = ""</span>. $korisničko ime. """ );</span> <span>if (mysql_num_rows ($checkusername ) == 1 )</span> <span>{ </span> <span>jeka " <h1>Greška</h1>" ; </span> <span>jeka <span>"<p>Ova prijava je već zauzeta p>"</span>; </span> <span>} </span> <span>drugo</span> <span>{ </span> <span>$registerquery = mysql_query( <span>"INSERT INTO korisnici (korisničko ime, lozinka, email adresa) VALUES(""</span>. $korisničko ime. "", "" . $lozinka. "", "" . $e-pošta. "")" );</span> <span>ako ($registerquery)</span> <span>{ </span> <span>jeka " <h1>Sjajno</h1>" ; </span> <span>jeka <span>"<p>Vaš račun je uspješno kreiran. Možeš <a href=\" index.php\" >Voity</a>.</p>" </span>; </span> <span>} </span> <span>drugo</span> <span>{ </span> <span>jeka " <h1>Greška</h1>" ; </span> <span>jeka <span>"<p>Pokušajte se ponovno registrirati.</p>" </span>; </span> <span>} </span> <span>} </span> <span>} </span> <span>drugo</span> <span>{ </span> <span>?> </span> <span> <h1>Registracija</h1> </span> <span> <form method="post" action="register.php" name="registerform" id="registerform"> </span> <fieldset> <span> <label for="username">Prijaviti se:</label><input type="text" name="username" id="username" /><br /> </span> <span> <label for="password">Lozinka:</label><input type="password" name="password" id="password" /><br /> </span> <span> <label for="email">Email:</label><input type="text" name="email" id="email" /><br /> </span> <span> <input type="submit" name="register" id="register" value="Registracija" /> </span> </fieldset> </form> <span><?php </span> <span>} </span> <span>?> </span> </div> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> </p> <p>Ima nešto novo u ovom kodu, pisanje u bazu podataka</p> <p>Ovo je isti upit baze podataka koji je bio i prije, samo što sada ne primamo informacije, već ih upisujemo naredbom INSERT, prije svega morate odrediti u koja polja će se unositi podaci, au području VRIJEDNOSTI informacija koja će biti zapisana u našem slučaju su varijable s vrijednošću koju je proslijedio korisnik.Obratite posebnu pozornost na pravila za generiranje zahtjeva.</p> <p><b>Završetak koraka 4</b></p> <p>Kako bi se korisnik odjavio, kreirajte datoteku logout.php i u nju kopirajte kod:</p> <p><?php include "base.php; <span>$_SESIJA = niz(); sesija_uništi(); ?></span> <meta http-equiv=" refresh" content=" 0 ; index. php" </p> <p>Kao rezultat ovog koda, globalni niz $_SESSION je resetiran i sesija je uništena, ne zaboravite staviti poveznicu na ovu datoteku u korisničku opciju.</p> <p>Na kraju, da biste stilizirali sve gore, stvorite datoteku style.css i stavite sljedeći kod tamo.</p> <p>* { </span> <span>margina: 0</span> <span>ispuna: 0</span> <span>} </span> tijelo <span>{ </span> <span>} </span> a <span>{ </span> <span>boja : #000 ;</span> <span>} </span> a <span>:hover , a:active , a:visited (</span> <span>tekst-ukras : nema</span> <span>} </span> <span>#glavni(</span> <span>širina : 780px ;</span> <span>margina: 0 auto;</span> <span>margin-top : 50px ;</span> <span>ispuna: 10px</span> <span>boja pozadine: #EEE;</span> <span>} </span> set polja obrasca <span>(obrub: 0;)</span> obrazac fieldset p br <span>( jasno : lijevo ; )</span> označiti <span>{ </span> <span>margin-top : 5px ;</span> <span>prikaz: blok;</span> <span>širina: 100 px</span> <span>ispuna: 0</span> <span>plovak : lijevo ;</span> <span>} </span> ulazni <span>{ </span> <span>obitelj-fontova : Trebuchet MS;</span> <span>obrub: 1px puni #CCC;</span> <span>margin-bottom : 5px ;</span> <span>boja pozadine : #FFF ;</span> <span>ispuna: 2px</span> <span>} </span> ulazni <span>:lebdjeti(</span> <span>rub : 1px solid #222 ;</span> <span>boja pozadine: #EEE;</span> <span>} </p> <p>U principu, to je sve, naravno, primjer dan u ovoj lekciji je daleko od savršenog, ali je dizajniran za početnike da daju koncept osnova.</p> <p>Analizirajmo neke dijelove ovog koda</p> <p>$korisničko ime = mysql_real_escape_string($_POST["korisničko ime"]);</p> <p>$lozinka = md5(mysql_real_escape_string($_POST["lozinka"]));</p> <p>Postoje dvije funkcije u ovom odjeljku koda, ovo je mysql _real _escape _string koja izbjegava posebne znakove u nizovima za korištenje u bazi podataka, čime vas štiti od loših ljudi, a md 5 ova funkcija šifrira sve što joj se proslijedi kao parametar , u ovom slučaju to je lozinka u globalnom nizu $_POST. Sve rezultate rada funkcija dodjeljujemo varijablama $username , <span>$lozinka</span>.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> <div class="wp_rp_wrap wp_rp_vertical_m" id="wp_rp_first"> <div class="wp_rp_content"> <h3 class="related_post_title">Također preporučujemo</h3> <ul class="related_post wp_rp"> <li data-position="0" data-poid="in-54688" data-post-type="none"><a href="https://tokitay.ru/hr/sup-s-ryboi-mintai-rybnyi-sup-pyure-dlya-detei-osobennosti.html" class="wp_rp_thumbnail"><img src="/uploads/f02a3c374338ce80a1cff321ffb07449.jpg" alt="Pire od riblje juhe za djecu" width="150" height="150" / loading=lazy loading=lazy></a> <a href="https://tokitay.ru/hr/sup-s-ryboi-mintai-rybnyi-sup-pyure-dlya-detei-osobennosti.html" class="wp_rp_title">Pire od riblje juhe za djecu</a> </li> <li data-position="0" data-poid="in-54687" data-post-type="none"><a href="https://tokitay.ru/hr/dikie-koshki-semeistvo-koshachih-opisanie-areal-razmnozhenie-pitanie.html" class="wp_rp_thumbnail"><img src="/uploads/7b5b6fa8257c2c6dc5473c857223a987.jpg" alt="Opis, raspon, reprodukcija, prehrana, ponašanje, prijetnje, podvrste, video i fotografije lavova Predatorske mačke" width="150" height="150" / loading=lazy loading=lazy></a> <a href="https://tokitay.ru/hr/dikie-koshki-semeistvo-koshachih-opisanie-areal-razmnozhenie-pitanie.html" class="wp_rp_title">Opis, raspon, reprodukcija, prehrana, ponašanje, prijetnje, podvrste, video i fotografije lavova Predatorske mačke</a> </li> <li data-position="0" data-poid="in-53488" data-post-type="none"><a href="https://tokitay.ru/hr/raschet-otopleniya-v-chastnom-dome-smeta-na-otoplenie-v-kvartire.html" class="wp_rp_thumbnail"><img src="/uploads/27bc18e054955002aaae2eefdb211a58.jpg" alt="Predračun za grijanje u stanu Predračun za individualno grijanje" width="150" height="150" / loading=lazy loading=lazy></a> <a href="https://tokitay.ru/hr/raschet-otopleniya-v-chastnom-dome-smeta-na-otoplenie-v-kvartire.html" class="wp_rp_title">Predračun za grijanje u stanu Predračun za individualno grijanje</a> </li> <li data-position="0" data-poid="in-53487" data-post-type="none"><a href="https://tokitay.ru/hr/proekt-i-raschet-livnevoi-kanalizacii-chistye-rasch-ty-ili-kak-sostavit-smetu-na.html" class="wp_rp_thumbnail"><img src="/uploads/157615643532f185b9c9ec85eccd70eb.jpg" alt="Neto izračuni ili kako napraviti procjenu za postrojenje za pročišćavanje otpadnih voda Procjena za postrojenje za pročišćavanje oborinske kanalizacije" width="150" height="150" / loading=lazy loading=lazy></a> <a href="https://tokitay.ru/hr/proekt-i-raschet-livnevoi-kanalizacii-chistye-rasch-ty-ili-kak-sostavit-smetu-na.html" class="wp_rp_title">Neto izračuni ili kako napraviti procjenu za postrojenje za pročišćavanje otpadnih voda Procjena za postrojenje za pročišćavanje oborinske kanalizacije</a> </li> <li data-position="0" data-poid="in-53486" data-post-type="none"><a href="https://tokitay.ru/hr/sovety-po-sostavleniyu-smet-na-remont-i-obsluzhivanie-otopitelnoi.html" class="wp_rp_thumbnail"><img src="/uploads/7abf81b56fb2e5cbcf41b7910f7b281a.jpg" alt="Autonomno grijanje u privatnoj kući Procjena za sustav grijanja rada" width="150" height="150" / loading=lazy loading=lazy></a> <a href="https://tokitay.ru/hr/sovety-po-sostavleniyu-smet-na-remont-i-obsluzhivanie-otopitelnoi.html" class="wp_rp_title">Autonomno grijanje u privatnoj kući Procjena za sustav grijanja rada</a> </li> <li data-position="0" data-poid="in-52285" data-post-type="none"><a href="https://tokitay.ru/hr/avtomodelirovanie-rulit-kak-zarabotat-na-shkole-radioupravlyaemyh-mashin-biznes-na-prodazhe-radioupra.html" class="wp_rp_thumbnail"><img src="/uploads/b688679ebe15cf199e9e1afe05aa5ee5.jpg" alt="Tvrtka koja prodaje radio-upravljane automobile i helikoptere iz Kine" width="150" height="150" / loading=lazy loading=lazy></a> <a href="https://tokitay.ru/hr/avtomodelirovanie-rulit-kak-zarabotat-na-shkole-radioupravlyaemyh-mashin-biznes-na-prodazhe-radioupra.html" class="wp_rp_title">Tvrtka koja prodaje radio-upravljane automobile i helikoptere iz Kine</a> </li> </ul> </div> </div> </div> <div id="post-ratings-1424-loading" class="post-ratings-loading"> <img src="https://tokitay.ru/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" alt="Učitavam..." title="Učitavam..." class="post-ratings-image" / loading=lazy loading=lazy>Učitavam...</div><div class="nextpostlink"></div> <div class="prepostlink"><a href="https://tokitay.ru/hr/php-forma-logina-i-registracii-sozdanie-prostoi-sistemy-registracii.html" rel="prev"></a></div> <div class="postTags"></div> </div> </article> <aside id="colRight"> <form method="get" action="/" target="_blank"> <input name="s" id="form-query" value="" placeholder="Pretraživanje stranice"> <input id="form-querysub" type=submit value=""> </form> <div class="rightBoxtumb"> <h2>Nedavni članci</h2> <div class="rightBoxtumbline"></div> <ul> <li> <div class="rightBoxshadowleft"></div> <div class="rightBoxshadowright"></div> <img width="80" height="80" src="/uploads/2971fa7acb9741e8a65e44e4ec872cb7.jpg" class="attachment-loopThumb wp-post-image" alt="Pravila modeliranja automobila: kako zaraditi novac u školi radio-upravljanih automobila" / loading=lazy loading=lazy><a href="https://tokitay.ru/hr/biznes---attrakcion-radioupravlyaemyh-mashin-avtomodelirovanie-rulit-kak.html" rel="bookmark" title="Pravila modeliranja automobila: kako zaraditi novac u školi radio-upravljanih automobila">Pravila modeliranja automobila: kako zaraditi novac u školi radio-upravljanih automobila</a><br/> <p>2022-11-08 22:36:03 / <a href="https://tokitay.ru/hr/biznes---attrakcion-radioupravlyaemyh-mashin-avtomodelirovanie-rulit-kak.html" title="Pravila modeliranja automobila: kako zaraditi novac u školi radio-upravljanih automobila">Izgled</a></p> </li> <li> <div class="rightBoxshadowleft"></div> <div class="rightBoxshadowright"></div> <img width="80" height="80" src="/uploads/129d5da3d84a235bad930a6e35866c65.jpg" class="attachment-loopThumb wp-post-image" alt="Poslovne ideje uz minimalna ulaganja" / loading=lazy loading=lazy><a href="https://tokitay.ru/hr/chto-prodaetsya-v-godu-biznes-idei-s-minimalnymi-vlozheniyami-za-chto.html" rel="bookmark" title="Poslovne ideje uz minimalna ulaganja">Poslovne ideje uz minimalna ulaganja</a><br/> <p>2022-11-08 22:36:03 / <a href="https://tokitay.ru/hr/chto-prodaetsya-v-godu-biznes-idei-s-minimalnymi-vlozheniyami-za-chto.html" title="Poslovne ideje uz minimalna ulaganja">Izgled</a></p> </li> <li> <div class="rightBoxshadowleft"></div> <div class="rightBoxshadowright"></div> <img width="80" height="80" src="/uploads/e237c39a1a3f54509c0d0eac31d78e81.jpg" class="attachment-loopThumb wp-post-image" alt="Bernoullijeva jednadžba (Bernoullijev integral) Izvođenje Torricellijeve formule iz Bernoullijevog zakona" / loading=lazy loading=lazy><a href="https://tokitay.ru/hr/bernulli-uravnenie-integral-bernulli-bernulli-uravnenie.html" rel="bookmark" title="Bernoullijeva jednadžba (Bernoullijev integral) Izvođenje Torricellijeve formule iz Bernoullijevog zakona">Bernoullijeva jednadžba (Bernoullijev integral) Izvođenje Torricellijeve formule iz Bernoullijevog zakona</a><br/> <p>2022-10-13 16:48:51 / <a href="https://tokitay.ru/hr/bernulli-uravnenie-integral-bernulli-bernulli-uravnenie.html" title="Bernoullijeva jednadžba (Bernoullijev integral) Izvođenje Torricellijeve formule iz Bernoullijevog zakona">Izgled</a></p> </li> <li> <div class="rightBoxshadowleft"></div> <div class="rightBoxshadowright"></div> <img width="80" height="80" src="/uploads/3793f5eb8d8f3141af6888587312b06a.jpg" class="attachment-loopThumb wp-post-image" alt="Što su epiteti i zašto nam čine život lakšim i zanimljivijim Kako se može izraziti epitet" / loading=lazy loading=lazy><a href="https://tokitay.ru/hr/epitet-v-poezii-chto-takoe-epitety-i-pochemu-oni-delayut-nashu-zhizn.html" rel="bookmark" title="Što su epiteti i zašto nam čine život lakšim i zanimljivijim Kako se može izraziti epitet">Što su epiteti i zašto nam čine život lakšim i zanimljivijim Kako se može izraziti epitet</a><br/> <p>2022-10-13 16:48:51 / <a href="https://tokitay.ru/hr/epitet-v-poezii-chto-takoe-epitety-i-pochemu-oni-delayut-nashu-zhizn.html" title="Što su epiteti i zašto nam čine život lakšim i zanimljivijim Kako se može izraziti epitet">Izgled</a></p> </li> <li> <div class="rightBoxshadowleft"></div> <div class="rightBoxshadowright"></div> <img width="80" height="80" src="/uploads/79b1a68a462ad55e352db765e0366090.jpg" class="attachment-loopThumb wp-post-image" alt="Najljepše razglednice s Apple Spasom - sa željama i animacijom (gifovi)" / loading=lazy loading=lazy><a href="https://tokitay.ru/hr/pozdrav-otkrytki-s-yablochnym-spasom-samye-krasivye-otkrytki-s.html" rel="bookmark" title="Najljepše razglednice s Apple Spasom - sa željama i animacijom (gifovi)">Najljepše razglednice s Apple Spasom - sa željama i animacijom (gifovi)</a><br/> <p>2022-10-13 16:48:51 / <a href="https://tokitay.ru/hr/pozdrav-otkrytki-s-yablochnym-spasom-samye-krasivye-otkrytki-s.html" title="Najljepše razglednice s Apple Spasom - sa željama i animacijom (gifovi)">Izgled</a></p> </li> </ul> </div> <div class="rightBox" id="popularitypostswidget-2"> <div class="rightBoxMid"> <h2>Popularni članci</h2> <div class="rightBoxtumbline"></div> <ul> <li> <span class="ppw-post-title"><a href="https://tokitay.ru/hr/delimhanov-adam-sultanovich-biografiya-adam-sultanovich-delimhanov-politik.html" title="Delimhanov Adam Sultanovič" >Delimhanov Adam Sultanovič</a></span> <span class="post-stats"> <br> <span class="ppw-views"></span> <span class="ppw-comments"></span> <span class="ppw-date"></span> </span> <br> <a href="https://tokitay.ru/hr/delimhanov-adam-sultanovich-biografiya-adam-sultanovich-delimhanov-politik.html" title="Delimhanov Adam Sultanovič"> <img class='wpp-thumbnail' src='/uploads/2265f4d4aa8b50cd0e99317b6f259ec8.jpg' alt='Delimhanov Adam Sultanovič' / loading=lazy loading=lazy> </a> </li> <li> <span class="ppw-post-title"><a href="https://tokitay.ru/hr/pak-yuzhnaya-koreya-pak-kyn-he-osudili-za-korrupciyu-i-zloupotreblenie-vlastyu.html" title="Park Geun Hye osuđena za korupciju i zlouporabu ovlasti" >Park Geun Hye osuđena za korupciju i zlouporabu ovlasti</a></span> <span class="post-stats"> <br> <span class="ppw-views"></span> <span class="ppw-comments"></span> <span class="ppw-date"></span> </span> <br> <a href="https://tokitay.ru/hr/pak-yuzhnaya-koreya-pak-kyn-he-osudili-za-korrupciyu-i-zloupotreblenie-vlastyu.html" title="Park Geun Hye osuđena za korupciju i zlouporabu ovlasti"> <img class='wpp-thumbnail' src='/uploads/b0db54dc1770fdb936c5e92d1ce5522b.jpg' alt='Park Geun Hye osuđena za korupciju i zlouporabu ovlasti' / loading=lazy loading=lazy> </a> </li> <li> <span class="ppw-post-title"><a href="https://tokitay.ru/hr/segolen-ruayal-foto-biografiya-lichnaya-zhizn-deti-segolen-ruayal-foto.html" title="Segolene Royal: fotografija, biografija, osobni život, djeca. Bivša supruga Hollandea Segolene Royal imenovana ministricom ekologije i energetike Francuske" >Segolene Royal: fotografija, biografija, osobni život, djeca. Bivša supruga Hollandea Segolene Royal imenovana ministricom ekologije i energetike Francuske</a></span> <span class="post-stats"> <br> <span class="ppw-views"></span> <span class="ppw-comments"></span> <span class="ppw-date"></span> </span> <br> <a href="https://tokitay.ru/hr/segolen-ruayal-foto-biografiya-lichnaya-zhizn-deti-segolen-ruayal-foto.html" title="Segolene Royal: fotografija, biografija, osobni život, djeca. Bivša supruga Hollandea Segolene Royal imenovana ministricom ekologije i energetike Francuske"> <img class='wpp-thumbnail' src='/uploads/b1376ae92286076a7ce84fb5049f54cb.jpg' alt='Segolene Royal: fotografija, biografija, osobni život, djeca. Bivša supruga Hollandea Segolene Royal imenovana ministricom ekologije i energetike Francuske' / loading=lazy loading=lazy> </a> </li> <li> <span class="ppw-post-title"><a href="https://tokitay.ru/hr/biografiya-lagard-kristin-biografiya-deyatelnost-lichnaya-zhizn.html" title="Christine Lagarde: biografija, aktivnosti, osobni život Sudjelovanje MMF-a i Christine Lagarde u rješavanju grčke krize" >Christine Lagarde: biografija, aktivnosti, osobni život Sudjelovanje MMF-a i Christine Lagarde u rješavanju grčke krize</a></span> <span class="post-stats"> <br> <span class="ppw-views"></span> <span class="ppw-comments"></span> <span class="ppw-date"></span> </span> <br> <a href="https://tokitay.ru/hr/biografiya-lagard-kristin-biografiya-deyatelnost-lichnaya-zhizn.html" title="Christine Lagarde: biografija, aktivnosti, osobni život Sudjelovanje MMF-a i Christine Lagarde u rješavanju grčke krize"> <img class='wpp-thumbnail' src='/uploads/850340c17e93dafdb404427bd2d49738.jpg' alt='Christine Lagarde: biografija, aktivnosti, osobni život Sudjelovanje MMF-a i Christine Lagarde u rješavanju grčke krize' / loading=lazy loading=lazy> </a> </li> <li> <span class="ppw-post-title"><a href="https://tokitay.ru/hr/skolko-let-mizulinoi-elena-mizulina-deputat-gosdumy-rf-biografiya.html" title="Elena Mizulina, zastupnica Državne dume Ruske Federacije" >Elena Mizulina, zastupnica Državne dume Ruske Federacije</a></span> <span class="post-stats"> <br> <span class="ppw-views"></span> <span class="ppw-comments"></span> <span class="ppw-date"></span> </span> <br> <a href="https://tokitay.ru/hr/skolko-let-mizulinoi-elena-mizulina-deputat-gosdumy-rf-biografiya.html" title="Elena Mizulina, zastupnica Državne dume Ruske Federacije"> <img class='wpp-thumbnail' src='/uploads/e61549a0a371158a82df215869c402ca.jpg' alt='Elena Mizulina, zastupnica Državne dume Ruske Federacije' / loading=lazy loading=lazy> </a> </li> </ul> </div> </div> <div> <div id="leluby2" style="height:600px;width:320px;" align="center"></div> </div> </aside> </div> </div> </section> <footer id="footer"> <div id="footerInner"> <div class="logofooter"> <a href="https://tokitay.ru/hr/"><img src="/uploads/logo.png" alt="Apartmani. Dače. Stilovi. Materijali. Kupaonica. Podne obloge" / loading=lazy loading=lazy></a> </div> <div class="sharenewfooter"> <p></p> </div> </div> <div align="center">2023 <a href="https://tokitay.ru/hr/">Apartmani. Dače. Stilovi. Materijali. Kupaonica. Podne obloge</a>. Sva prava pridržana.</div> </footer> <link rel='stylesheet' id='style-name-css' href='/wp-content/plugins/lightbox/css/frontend/colorbox-1.css?ver=4.3.13' type='text/css' media='all' /> <link rel='stylesheet' id='popularity-posts-widget-css' href='/wp-content/plugins/popularity-posts-widget/style/ppw.css?ver=4.3.13' type='text/css' media='all' /> <script type='text/javascript' src='https://tokitay.ru/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=3.51.0-2014.06.20'></script> <script type='text/javascript' src='https://tokitay.ru/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=4.0.3'></script> <script type='text/javascript' src='https://tokitay.ru/wp-content/plugins/table-of-contents-plus/front.js?ver=1505'></script> <script type='text/javascript' src='https://tokitay.ru/wp-content/plugins/wp-postratings/postratings-js.js?ver=1.81'></script> <script type='text/javascript' src='https://tokitay.ru/wp-content/plugins/lightbox/js/frontend/custom.js?ver=4.3.13'></script> <script type='text/javascript' src='https://tokitay.ru/wp-content/plugins/lightbox/js/frontend/jquery.colorbox.js?ver=4.3.13'></script> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html>