<?> PHP NOVA invictum.hr
Izdanje 2026.
Poglavlje 23

Validacija i filtriranje

Odvajamo provjeru valjanosti, normalizaciju i siguran izlaz kako bi svaki podatak prošao jasnu granicu povjerenja.

26 min čitanja Srednje razina PHP 8.5 ciljna verzija

Nakon ovog poglavlja

Što ćete znati napraviti

  • Razlikovati validaciju, normalizaciju i output escaping.
  • Prikupiti korisne pogreške po polju.
  • Validirani ulaz pretvoriti u tipizirani podatak.

Ne miješajte pojmove

Normaliziraj, validiraj, escapaj

Normalizacija uklanja očekivanu površinsku razliku, primjerice razmake oko e-mail adrese. Validacija odlučuje zadovoljava li vrijednost pravila. Escaping se radi tek pri izlazu i ovisi o kontekstu: HTML tekst, atribut, URL, JavaScript i SQL nisu isti konteksti.

Ne „čistimo“ proizvoljan loš unos dok ne postane valjan jer time možemo promijeniti korisnikovo značenje. Radije odbijemo vrijednost i objasnimo očekivani oblik.

Korisnik mora znati što popraviti

Prikupite sve razumne pogreške

Validacija forme vraća strukturirano polje pogrešaka. Poslovna pravila poput jedinstvenog e-maila ili dopuštenog datuma provjeravaju se uz sintaktička pravila. Poruke trebaju biti konkretne i povezane s poljem.

Validacija e-maila
<?php

$email = trim((string) ($_POST['email'] ?? ''));
$errors = [];

if ($email === '') {
    $errors['email'] = 'E-mail je obavezan.';
} elseif (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    $errors['email'] = 'Upišite valjanu e-mail adresu.';
}

Nakon granice

Ostatak aplikacije dobiva poznat oblik

Kada je sirovi unos valjan, pretvaramo ga u int, enum, datum ili DTO. Tako repozitorij i poslovni sloj ne primaju $_POST nego pouzdaniji ugovor. Validacija na klijentu ostaje dodatak za brz odaziv, ne jedina zaštita.

Provjera i pretvorba
<?php

$rawAge = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);

if (!is_int($rawAge) || $rawAge < 18 || $rawAge > 120) {
    $errors['age'] = 'Dob mora biti između 18 i 120.';
}

if ($errors === []) {
    $command = new RegisterUserData($email, $rawAge);
}

Primijenite naučeno

Vježba: Registracijski unos

Validirajte ime, e-mail, dob i prihvat uvjeta korištenja.

  1. Prikupite poruke po polju bez zaustavljanja na prvoj pogrešci.
  2. Sačuvajte sigurne unesene vrijednosti nakon pogreške.
  3. Nakon uspjeha napravite tipizirani DTO.

Za provjeru i nastavak

Službeni izvori