PHP Obrazci (Forms)
Vadnica logo
vadnica logo
x
HTML CSS JavaScript jQuery SQL PHP Laravel
HTML CSS JavaScript jQuery MySQL PHP Include Echo, Print Podatkovni tipi (Data Types) Spremenljivke (Variables) Nizi (String) Pretvorba podatkov (Casting) Izjeme Pogojni stavki Zanke Datum in Čas Koledar Funkcije Matrika (Array) MySQLi Obrazci (Forms) password_hash() Upravitelj gesel Filtri Ključne besede (Keyword) OOP (Razredi in Objekti) Razno Superglobalne spremenljivke Omrežne funkcije Laravel

PHP Obrazci (Forms)

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.

PHP Obrazci (Forms)

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.

PRIMER
<!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>
            
REZULTAT

Kontaktni obrazec



Pojasnilo:

  1. Uporabili smo enostaven HTML obrazec z dvema vnosnima poljema (za ime in e-poštni naslov) in gumb za pošiljanje. Obrazec pošlje podatke na procesiranje.php s pomočjo metode POST.
  2. Obdelava obrazca v procesiranje.php:
    1. Skript preveri, ali je bila metoda zahteve POST.
    2. Podatke obrazca preberemo s pomočjo globalne spremenljivke $_POST.
    3. Uporabljena je funkcija htmlspecialchars, ki prepreči XSS napade z izogibanjem posebnih znakov v vhodnih podatkih.
    4. Enostavna validacija preveri, ali sta obe polji izpolnjeni.
    5. Skript izpiše personalizirano sporočilo, če so podatki pravilno vpisani, ali pa izpiše napako.

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

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
Zaščita gesel
  1. Nikoli ne shranjujemo gesel v "plaintext" (kot navadno besedilo) obliki.
  2. Uporabimo funkcijo password_hash za varno zgoščevanje (hash).
  3. Uporabiti moramo password_verify za preverjanje gesel.
  4. Uporaba močnejših algoritmov, kot BCRYPT.
  5. Ne implementiramo (brez potrebe) svojih lastnih mehanizmov, ker password_hash opravi vse.
  6. Dobro je implementirati spremljanje sumljivih aktivnosti (npr. ponavljajoči poskusi prijave).

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

Hvala za obisk! Dodajam politiko zasebnosti.

© 2024 Vse pravice pridržane.

Donirajte preko PayPal ADMIN