créer un site


is_int

Poster un nouveau sujet sur php   Répondre au sujet à php:is_int    Accueil Forum -> php
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
iowa
php mioche
php mioche
Messageis_int , Posté le: 15-07-2005 10:27

bonjour,

voila je dois recuperer une variable passe avec la method GET et pour eviter la tentatives de hack je suis oblige de la filtrer j'ai deja mis 2 filtres

Code:

$dep = $_GET['dep'];
if ( empty ($dep)) // verifie que la variable est renseigne
{
echo "il faut renseigner un departement<br>" ;
exit();
}
if(strlen($dep) >2) // verifie la taille pour eviter toute tentatives de hack
{
echo "erreur dans le departement<br>" ;
exit();
}



j'aimerais en mettre une troisieme qui test si la variable $dep est un nombre et une 4eme qui test si c'est un nombre a virgule ( is_float )

voila j'ai trouve la fonction is_int mais je sais pas m'en servir
quoi que je balance dans l'url rien ! sa renvoie toujours false

voila ma condition :

Code:

if ( !is_int($dep))
{
echo "tentative de hack<br>" ;
exit();
}


merci
salemioche
salemioche
salemioche
Messageis_int , Posté le: 15-07-2005 10:35

quel est l'interet d'un float pour un departement ???

ma suggestion

Code:
$dep = "";

  function safe_num($s) {
    return preg_replace("/[^0-9]/",'',rtrim(rtrim(trim($s)),"\\"));
  }


if ( isset($_GET['dep']) && strlen($_GET['dep']) > 0 )
     $dep = safe_num($_GET['dep']);

if ( is_int($dep) ) {
 // OK
} else {
// KO
}

iowa
php mioche
php mioche
Messageis_int , Posté le: 15-07-2005 10:39

Embarassed je comprend pas ton code tu peux commentais stp


la variable $_GET['dep']; doit recevoire une valeur int

exemple ?dep=57

ce que je veux eviter c'est sa : ?dep=include("hack.php");
par exemple c'est pour ca que je limite a 2 caracteres

merci
salemioche
salemioche
salemioche
Messageis_int , Posté le: 15-07-2005 10:45

isset verifie que le champ est présent dans la requete, ensuite on verifie la longueur

safe-num enleve tous les caractères qui ne sont pas des chiffres de $dep, comme ca tu es sur d'avoir que des 0,1,2..9

voilou
iowa
php mioche
php mioche
Messageis_int , Posté le: 15-07-2005 15:53

ok merci

une fois de plus tu me sauve Wink
iowa
php mioche
php mioche
Messageis_int , Posté le: 15-07-2005 15:59

encore un autre truc je peux mettre ou le exit(); ???

pour que si sa soit pas un nombre sa s'affiche pas
parce que quand je rentre ?dep=salut

ben sa s'affiche comment faire pour eviter cela

merci
salemioche
salemioche
salemioche
Messageis_int , Posté le: 15-07-2005 16:03

le exit c'est a la place du '// KO'
iowa
php mioche
php mioche
Messageis_int , Posté le: 15-07-2005 16:05

c'est ce que j'ai fait mais sa execute tout le temp exit();
meme quand la valeur passe en parametre est 48 ou 12 ou 57 ...
salemioche
salemioche
salemioche
Messageis_int , Posté le: 15-07-2005 16:10

je connais pas la fonction is_int, il faut que tu mettes des traces dans ton code pour voir ce qui se passe, combien vaut $dep, etc...
iowa
php mioche
php mioche
Messageis_int , Posté le: 15-07-2005 16:20

code :

Code:

$dep = "";
  function safe_num($s) {
    return preg_replace("/[^0-9]/",'',rtrim(rtrim(trim($s)),"\\"));
  }
if ( isset($_GET['dep']) && strlen($_GET['dep']) > 0 )
     $dep = safe_num($_GET['dep']);

if ( is_int($dep) ) {
 // OK
} else
 {

exit();
}


1er test avec dep = 57
retourne = exit();

2eme test avec dep = salut
retourne = exit();

que sa soit salut ou 57 il retourne toujours exit();
salemioche
salemioche
salemioche
Messageis_int , Posté le: 15-07-2005 16:49

je comprends pas bien le fonctionnement de is_int, tu n'as qu'a faire ca :

Code:
$dep = -1;
  function safe_num($s) {
    return preg_replace("/[^0-9]/",'',rtrim(rtrim(trim($s)),"\\"));
  }
if ( isset($_GET['dep']) && strlen($_GET['dep']) > 0 )
     $dep = safe_num($_GET['dep']);

if ( $dep > 0) {
 // OK
} else
 {

exit();
}
iowa
php mioche
php mioche
Messageis_int , Posté le: 15-07-2005 17:01

hihi sa marche nikel merci
Montrer les messages depuis:   
Poster un nouveau sujet sur php   Répondre au sujet à php:is_int    Accueil Forum -> php Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
S'enregistrerS'enregistrer
ProfilProfil
Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés
RechercherRechercher
Liste des MembresMembres
FAQFAQ
ConnexionConnexion 


© Mentions Légales