PHP omogoča ustvarjanje dinamičnih spletnih obrazcev, obdelavo uporabniškega vnosa, validacijo podatkov in odzivanje na uporabniške interakcije. Pogosto uporabljamo obrazce za zbiranje podatkov od uporabnikov, kot so prijavni obrazci, kontaktni obrazci ali obrazci za registracijo. Primer prikazuje obrazec HTML in PHP skript za obdelavo vnosa.
Z uporabo PHP in HTML lahko ustvarimo in obdelujemo obrazce za različne potrebe v naših aplikacijah. Poskrbimo za ustrezno validacijo in ustrezno odzivanje na uporabniške vnose. V spodnji tabeli najdemo še nekaj dodatnih primerov za registracijo uporabnika, vpis podatkov v obrazec itn. Začnimo s preprostim primerom obrazca, ki sprejema ime in e-poštni naslov od uporabnika. Najprej ustvarimo obrazec HTML in uporabimo metodo POST za pošiljanje podatkov obrazca na strežnik. Nato ustvarimo PHP datoteko procesiranje.php, ki bo obdelala podatke obrazca. Ta skript bo preveril, če so podatki vpisani in jih nato izpisal.
<!DOCTYPE html> <html lang="sl"> <head> <meta charset="UTF-8"> <title>PHP Obrazec</title> </head> <body> <h2>Kontaktni obrazec</h2> <form action="procesiranje.php" method="post"> <label for="ime">Ime:</label> <input type="text" id="ime" name="ime" required> <br><br> <label for="email">E-pošta:</label> <input type="email" id="email" name="email" required> <br><br> <input type="submit" value="Pošlji"> </form> </body> </html>
Kontaktni obrazec
Pojasnilo:
Za bolj napredno validacijo, lahko uporabimo PHP funkcije kot so filter_var za validacijo e-poštnega naslova in preverjanje drugih vnosov. Poglejmo si primer spremembe v PHP datoteki procesiraj.php za naprednejšo validacijo.
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { // prebere podatke iz obrazca $ime = htmlspecialchars($_POST['ime']); $email = htmlspecialchars($_POST['email']); // validacija if (empty($ime)) { echo "Ime je obvezno polje."; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Neveljaven e-poštni naslov."; } else { echo "Hvala, " . $ime . "! Vaš e-poštni naslov: " . $email; } } else { echo "Metoda ni podprta."; }
Vnosni obrazec | V tem primeru nam bo spletna stran ponudila vse vnose za vpis. Po vpisu se podatki izpišejo in se ne shranjujejo nikamor. | Glej primer |
---|
Zaščita gesel v PHP je pomembna za zagotovitev varnosti uporabniških podatkov. PHP ponuja različna orodja in funkcije za varno shranjevanje in preverjanje gesel. Poglejmo si nekaj ključnih točk:
Zaščita gesla | Zaščita gesel je ključnega pomena za varnost uporabniških računov in aplikacij. | Glej primer |
---|
Gesla morajo biti vedno ustrezno zgoščena (ang. Hashed) pred shranjevanjem v bazo podatkov, ker, če pride do vdora v bazo, uporabniki ne smejo biti dodatno ogroženi zaradi razkritja novih gesel. PHP je uvedel funkcijo password_hash ravno zaradi tega in uporablja najnovejše in varne algoritme za izdelavo "hash-a". Ta funkcija upravlja tudi s salting-om (soljenjem), kar pomeni, da avtomatsko doda naključne vrednosti k našemu geslu za dodatno varnost. Primer uporabe:
// geslo uporabnika $geslo = "MojeZeloMocnoGeslo123!"; // zgoščevanje (hash) gesla $gesloHash = password_hash($geslo, PASSWORD_DEFAULT); // izhod za shranjevanje v bazo podatkov echo $gesloHash;
Funkcija PASSWORD_DEFAULT trenutno uporablja algoritem bcrypt, vendar lahko v prihodnosti preide na bolj varen privzeti algoritem, če bo na voljo. Ko uporabnik vpiše svoje geslo (npr. med prijavo), uporabimo funkcijo password_verify, da primerja vneseno geslo z že shranjenim "hash-om". Primer:
// geslo uporabnika $geslo = "MojeZeloMocnoGeslo123!"; // zgoščevanje (hash) gesla $shranjenHash = "$2y$10$wYrFr1vZyxE/DoTGMNOxBritish5764JsqzBYzNOdcdWy1zqHmuUG8"; // preverjanje gesla if (password_verify($geslo, $shranjenHash)) { echo "Geslo je pravilno."; } else { echo "Geslo je nepravilno."; }
Pomembno je vedeti, da password_verify vrne true, če se ujemata, v nasprotnem primeru vrne false. Priporočeno je, da uporabljamo BCRYPT ali močnejše algoritme, kar trenutno uporablja password_hash. Lahko pa se izrecno odločimo za druge algoritme, npr. PASSWORD_ARGON2I ali PASSWORD_ARGON2ID, če potrebujemo višji nivo varnosti.
$hash = password_hash($password, PASSWORD_ARGON2I);
Priporočljivo je redno posodabljati hash. Če nadgradimo na bolj kompleksen algoritem, lahko izkoristimo password_needs_rehash, da preverimo, ali je hash zastarel.
if (password_needs_rehash($shranjenHash, PASSWORD_ARGON2I)) { $shranjenHash = password_hash($geslo, PASSWORD_ARGON2I); }
Tudi najbolj varen hash ne bo pomagal, če bosta baza podatkov ali aplikacija ranljivi. Poskrbeti je potrebno za zaščito baze (npr. PDO in pripravljenih poizvedb za preprečevanje SQL vbrizgov). Brez potrebe ni potrebno implementirati lastnih mehanizmov za dodaten salting (soljenje), ker funkcija password_hash opravi to sama. Kar pa se tiče vdorov priporočam zelo močno geslo za bazo podatkov, ker samo tako se lahko zaščitimo, če pa do vdora pride, je potrebno vsem uporabnikom sporočiti za ponastavitev gesla. Priporočljivo je tudi implementirati spremljanje sumljivih aktivnosti, kot recimo ponavljajoči poskusi prijave. Funkcija password_hash in spremljajoče funkcije, kot so password_verify in password_needs_rehash, zagotavljajo popolna orodja za varno delo z gesli. Izogibati pa se je potrebno starejšim metodam, kot je md5 ali sha1, ker niso več varne. Primer je namenjen samo za prikaz in ne deluje, če ga želite testirati, morate vse datoteke skopirati v vaš izbrani IDE.
Upravitelj gesel | Shranjevanje, upravljanje in organiziranje šifriranih gesel, shranjenih v JSON datoteko. | Glej primer |
---|