Stvaranje baze podataka za korisnike

U današnjem digitalnom dobu, sigurnost i personalizirano korisničko iskustvo ključni su elementi svake web aplikacije, a posebno blog platformi. Sustav za prijavu korisnika omogućuje ne samo zaštitu sadržaja i podataka, već i stvaranje zajednice te personalizaciju doživljaja za registrirane korisnike. U ovom detaljnom vodiču, posvetit ćemo se petom koraku u izradi vlastite PHP blog aplikacije, fokusirajući se na implementaciju funkcionalnog sustava za prijavu korisnika.

Prethodni koraci u izradi naše blog aplikacije vjerojatno su uključivali postavljanje osnovne strukture, baze podataka i možda čak i mogućnost objave postova. Sada je vrijeme da unesemo dinamiku i sigurnost u našu aplikaciju uvođenjem sustava koji će prepoznati i autentificirati naše korisnike. Ovaj vodič će vas provesti kroz sve bitne elemente, od kreiranja odgovarajuće tablice u bazi podataka, preko dizajna jednostavne prijavne forme, do obrade korisničkih unosa i provjere autentičnosti u bazi podataka.

Stvaranje baze podataka za korisnike

Prije nego što možemo dopustiti korisnicima da se prijave, moramo imati mjesto gdje ćemo pohraniti njihove podatke. U našoj bazi podataka nazvanoj ‘blog’, kreirat ćemo novu tablicu pod nazivom ‘users’. Ova tablica će biti srž našeg sustava za prijavu, a za početak će sadržavati tri ključna polja:

  • ID: Ovo je primarni ključ (primary key) tablice, automatski će se povećavati (AUTO_INCREMENT) za svaki novi unos i osigurava jedinstvenost svakog korisničkog zapisa.
  • username: Polje za pohranu korisničkog imena, koje će biti jedinstveno za svakog korisnika. Definicija ‘varchar(40)’ znači da može sadržavati do 40 znakova.
  • password: Polje za pohranu lozinke korisnika. Za potrebe ovog osnovnog primjera, nećemo odmah implementirati enkripciju lozinki kako bismo fokus stavili na sam proces prijave. Međutim, u produkcijskim okruženjima, enkripcija lozinki je apsolutno neophodna iz sigurnosnih razloga.

Sljedeći SQL upit može se izvršiti izravno u alatu kao što je phpMyAdmin ili putem MySQL komandne linije, kako biste kreirali ovu tablicu u svojoj ‘blog’ bazi podataka:

CREATE TABLE IF NOT EXISTS `users` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(40) NOT NULL, `password` varchar(40) NOT NULL, PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Ova naredba osigurava da će tablica biti kreirana samo ako ne postoji, definirajući sve potrebne stupce i njihove tipove podataka, te postavlja primarni ključ.

Dizajn prijavne forme

Sljedeći korak je kreiranje korisničkog sučelja za prijavu. Napravit ćemo jednostavnu HTML formu koja će biti smještena u datoteci nazvanoj ‘login.php’ unutar mape naše blog aplikacije. Ova forma će sadržavati polja za unos korisničkog imena i lozinke, te gumb za slanje.

Evo koda koji možete koristiti za kreiranje datoteke ‘login.php’:

<!DOCTYPE HTML>
<html>
<head>
<meta charset=\"utf-8\"/\gt;
<title>Učionica Blog - Login</title>
</head>
<body>
<form action=\"\" method=\"post\">
<p>Korisničko ime: <input type=\"text\" name=\"user\" value=\"\"/\></p>
<p>Lozinka: <input type=\"password\" name=\"pass\" value=\"\"/\></p>
<p><input type=\"submit\" name=\"submit\" value=\"Submit\"/\></p>
</form>
</body>
</html>

Kada korisnik unese svoje podatke i klikne na gumb ‘Submit’, HTML forma će poslati podatke natrag na istu datoteku (‘login.php’) koristeći HTTP POST metodu. Ovo je ključno jer nam POST metoda omogućuje sigurno slanje osjetljivih podataka, kao što su korisnička imena i lozinke, bez izlaganja u URL-u.

Obrada korisničkih unosa u PHP-u

Sada kada imamo HTML formu, potrebno je obraditi podatke koje korisnik unese. U datoteci ‘login.php’, iznad postojećeg HTML koda, dodajemo PHP blok koji će provjeriti je li forma poslana i obraditi unesene podatke.

Prvo, provjeravamo je li poslan gumb za slanje:

<?php
if(isset($_POST[\"submit\"])){ // Forma je poslana, možemo nastaviti obradu
}
?>

Nakon što smo potvrdili da je forma poslana, dohvaćamo unesene vrijednosti korisničkog imena i lozinke:

<?php
if(isset($_POST[\"submit\"])){ $username = $_POST[\"user\"]; $password = $_POST[\"pass\"];
}
?>

Prije daljnje obrade, dobra je praksa ukloniti eventualne suvišne razmake s početka i kraja unesenih vrijednosti:

<?php
if(isset($_POST[\"submit\"])){ $username = $_POST[\"user\"]; $password = $_POST[\"pass\"]; $username = trim($username); $password = trim($password); // Daljnja obrada... }
?>

Validacija korisničkih unosa

Kako bismo osigurali da korisnik unosi podatke u željenom formatu i da su isti dovoljno složeni, koristit ćemo regularne izraze (regular expressions) za validaciju. Ovo je važan korak u sprječavanju jednostavnih i ranjivih unosa.

Definiramo pravila za korisničko ime i lozinku:

  • Korisničko ime mora biti minimalno 5 znakova duljine i može sadržavati slova, brojeve i podcrtanu crtu (‘_’).
  • Lozinka mora biti minimalno 8 znakova duljine i također može sadržavati slova, brojeve i podcrtanu crtu (‘_’).

Implementacija validacije izgledat će ovako:

<?php
// ... (prethodni kod) $errors = array(); // Polje za pohranu eventualnih grešaka if(preg_match('/^\\w{5,}$/', $username)) { // Korisničko ime je ispravno
} else { $errors[] = \"Korisničko ime mora biti minimalno 5 znakova dugo.\";
} if(preg_match('/^\\w{8,}$/', $password)) { // Lozinka je ispravna
} else { $errors[] = \"Lozinka mora biti minimalna 8 znakova duga.\";
} // Provjera grešaka nakon validacije
if(empty($errors)){ echo \"Svi unosi su ispravni.\"; // Privremena poruka

Odgovori

Vaša adresa e-pošte neće biti objavljena. Obavezna polja su označena sa * (obavezno)