OVH Cloud OVH Cloud

Une GET numerique

3 réponses
Avatar
Littlebens
Je voudrais savoir quel fonction de php je dois utiliser pour être certain
qu'une variable recue par un $_GET['var'] est bel et bien numérique.

j'hésite fort, il y a is_numeric(), is_int(), ctype_digit()

Pourriez-vous m'éclairer ?

Celà me permettra d'éviter les injections SQL.

Benoit Pironet
www.lifeonline.be
www.moyen-age.be

3 réponses

Avatar
loufoque
Littlebens a dit le 08/02/2005 à 01:04:

j'hésite fort, il y a is_numeric(), is_int(), ctype_digit()


Pas is_int en tous cas.

Celà me permettra d'éviter les injections SQL.


Tu fais intval() sur ta variable, tout simplement.

Avatar
stevo
Moi j'utilise une fonction maison car les fonctions prédéfinies ne faisaient
pas exactement ce que je voulais. Je n'aime pas intval() par exemple car
lors de l'évaluation de "34toto" elle retourne 34. Ma fonction retourne
FALSE.


//=============================== // retourne le nombre entier que représente la string
// ou retourne false sinon.
// retourne le int si déjà un int
//
// 3.14 ne passe pas
// 34s ne passe pas
// 0x3454 ne passe pas
//
//=============================== function toInt($str)
{
if(!isset($str))
{
return false ;
}

if(is_int($str))
{
return $str ;
}

// valid du coup que ce n'est pas un array ou un object:
if(!is_numeric($str))
{
return false ;
}

$str = ltrim($str, "0") ;

// $str valait "0000" par exemple
if(vide($str))
{
return 0 ;
}


$temp = intval($str) ;
if(strlen($temp) != strlen($str))
{
return false ;
}

return $temp ;
}
Avatar
stevo
Oups, je fais appelle à une autre fonction que j'ai définie moi-même
"vide()" que voici. J'imagine que la remplacer par "empty()" dans la
fionction "toInt()" ferait l'affaire.


//=============================== // retourne true si $str est égale à "" ou pas settée
//=============================== function vide($str)
{
if(!isset($str))
{
return true ;
}
else
{
if(is_string($str))
{
return (strcmp($str, "") === 0) ;
}
else
{
return false ;
}
}
}