Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
iowa php mioche
|
is_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
|
is_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
|
is_int , Posté le: 15-07-2005 10:39 |
|
|
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
|
is_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
|
is_int , Posté le: 15-07-2005 15:53 |
|
|
ok merci
une fois de plus tu me sauve |
|
|
iowa php mioche
|
is_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
|
is_int , Posté le: 15-07-2005 16:03 |
|
|
le exit c'est a la place du '// KO' |
|
|
iowa php mioche
|
is_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
|
is_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
|
is_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
|
is_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
|
is_int , Posté le: 15-07-2005 17:01 |
|
|
hihi sa marche nikel merci |
|
|
|