filter_input / filter_has_var în PHP

Citește o valoare direct din cererea HTTP (GET, POST, cookie) și o validează, într-un singur pas.

Sintaxă
filter_input(int $type, string $var_name, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed

Ce face filter_input / filter_has_var

filter_input(INPUT_GET, "pagina", FILTER_VALIDATE_INT) face același lucru ca filter_var($_GET["pagina"], FILTER_VALIDATE_INT), dar fără Warning când parametrul lipsește. Tipurile de intrare sunt INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER și INPUT_ENV.

Rezultatul are trei variante: valoarea validată, false dacă există dar nu trece filtrul, null dacă parametrul lipsește. filter_has_var(INPUT_GET, "pagina") spune doar dacă parametrul există.

Funcția citește datele originale ale cererii, nu variabila $_GET. Dacă modifici $_GET în cod, filter_input nu vede schimbarea. Din același motiv, în linia de comandă returnează mereu null.

Parametri

Parametru Descriere
$type Sursa: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER sau INPUT_ENV.
$var_name Numele parametrului.
$filter Opțional. Filtrul aplicat, ca la filter_var.
$options Opțional. Opțiuni și flag-uri, ca la filter_var.

Ce returnează

Valoarea filtrată, false dacă filtrul eșuează, sau null dacă parametrul nu există.

Exemple

Exemplul 1: Numărul paginii din URL

Pagina a fost deschisă cu adresa /articole?pagina=3&sortare=abc.

<?php
$pagina = filter_input(INPUT_GET, "pagina", FILTER_VALIDATE_INT, [
    "options" => ["default" => 1, "min_range" => 1],
]);
$sortare = filter_input(INPUT_GET, "sortare", FILTER_VALIDATE_INT);
$categorie = filter_input(INPUT_GET, "categorie");

var_dump($pagina, $sortare, $categorie);

Rezultat în browser

int(3)
bool(false)
NULL

Exemplul 2: Formular trimis cu POST

<?php
if (filter_has_var(INPUT_POST, "email")) {
    $email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);

    if ($email === false) {
        echo "Adresa de email nu este validă.";
    } else {
        echo "Te-ai abonat cu adresa " . htmlspecialchars($email) . ".";
    }
}

Rezultat în browser

Te-ai abonat cu adresa ana@exemplu.ro.

Greșeli frecvente

  • Testezi codul din linia de comandă sau modifici $_GET manual și filter_input returnează null. Funcția vede doar datele reale ale cererii HTTP.
  • Nu faci diferența între null (lipsește) și false (invalid). Pentru „câmp obligatoriu” verifică null, pentru „format greșit” verifică false.

Comenzi înrudite

  • filter_var: Validează sau curăță o valoare: email, număr întreg, URL, adresă IP, valoare booleană.
  • isset: Verifică dacă o variabilă există și nu are valoarea null.
  • htmlspecialchars: Transformă caracterele speciale HTML în entități, ca textul să fie afișat în siguranță în pagină.