Redirection si $var n'est pas numérique


vitalizo
WRInaute passionné
WRInaute passionné
 
Messages: 1086
Inscription: 27 Nov 2005

Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 9:54

Bonjour

Je voudrais vérifier si une variable est un chiffre ou pas. Si oui, on traite la page, si non je voudrais rediriger vers l'index.

le code:
Code: Tout sélectionner
if(is_numeric($_GET['chiffre']))   
$chiffre=mysql_real_escape_string(htmlentities($_GET['chiffre']));

$data = ma requete
$donnees1 = mysql_fetch_assoc($data);
        .......
         else     {
header("Location: index.php");  }


Mais quand je mets par exemple '11aa' dans $chiffre, il me renvoie une page 404.

Qqchose qui cloche dans mon code ?


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 10:54

si tu veux vérifier que $_GET['chiffre'] ne contient que des chiffres entre 0 et 9, is_numeric n'est pas la bonne fonction car elle accepte les exposants et le séparateur décimal.
tu peux utiliser une expression régulière :
Code: Tout sélectionner
if (preg_match('/^[0-9]+$/', $_GET['chiffre']))


vitalizo
WRInaute passionné
WRInaute passionné
 
Messages: 1086
Inscription: 27 Nov 2005

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 10:59

Salut,

non $chiffre peut être un nombre entre 1 et 99999999.


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 11:05

il ne manque pas des { } dans ton if ?


vitalizo
WRInaute passionné
WRInaute passionné
 
Messages: 1086
Inscription: 27 Nov 2005

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 11:13

Salut,
ici oui, je les ai zappé en recopiant le code.

Mais même en les mettant, quand je teste avec $chiffre= 11aa, ca me renvoie une 404 alors que je voudrais que ca redirige sur index.


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 11:42

c'est pas plutôt une règle de réécriture qui ne "match" pas?


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 11:51

Tu fais la redirection avec header() mais pas de exit(), donc le code après le header("Location: index.php") est exécuté aussi.
Le problème ne viendrais pas de là (on ne sait pas ce qu'il y a après) ?


Eric 2A
WRInaute discret
WRInaute discret
 
Messages: 194
Inscription: 26 Fév 2006

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 12:52

Salut,

Le fichier index.php est t-il bien présent dans le même répertoire que celui du script contenant ce code ?

Sinon, gràce à l'expression rationnelle de Forty, nous somme assurés de n'avoir que des chiffres. Ainsi, l'utilisation des fonctions mysql_escape_string et htmlentities devient superflue.

Comme spout, je pense aussi qu'il est préférable de placer la fonction exit(); après l'appel à la fonction header('Location: index.php');.

Code: Tout sélectionner
if((isset($_GET['chiffre']))and(preg_match('/^[0-9]+$/',$_GET['chiffre']))) {
   $chiffre=$_GET['chiffre'];
   $data = ma requete
   $donnees1 = mysql_fetch_assoc($data);
   // ...
} else {
   header('Location: index.php');
   exit();
}


milkiway
WRInaute accro
WRInaute accro
 
Messages: 4910
Inscription: 3 Fév 2004

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 13:08

Ton souci c'est la 404 ou le fait que ta variable n'est pas identifiée comme étant numérique ,


boby55
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 413
Inscription: 2 Avr 2008

Re: Redirection si $var n'est pas numérique

Message le Mar Sep 14, 2010 13:27

avec ça plutot (/)?

Code: Tout sélectionner
header('Location: /index.php');


et garde ton test numérique il est très bien.
Code: Tout sélectionner
is_numeric


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités