Autor Zpráva
mikulas12
Profil
Ahoj, proč se mi do $id po použití funkce filter_var uloží text a ne číslice? A jakto že se to obojí vyhodnotí jako true když to dolní je string?

$idZurlAdresy = "5 delte * from user; --";

$id = (int)$idZurlAdresy;
var_dump($id); // tady mi vypíše int(5)

//vyhodnotí se jako true
if (filter_var($id, FILTER_VALIDATE_INT)) {
    echo("Variable is an integer");
} else {
    echo("Variable is not an integer");
}


$id = filter_var($id, FILTER_SANITIZE_NUMBER_INT);
var_dump($id); // tady mi vypíše string(1) "5"

// také se to vyhodnotí jako true
if (filter_var($id, FILTER_VALIDATE_INT)) {
    echo("Variable is an integer");
} else {
    echo("Variable is not an integer");
}
Keeehi
Profil
Protože to tak dělá. Vstup si převede na řetězec a pak z něho vyseparuje podřetězec podle zadaného filtru. V tvém případě tak, aby výsledný řetězec šel bez problémů přetypovat na číslo.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: