Tester l'existence d'un paramètre (id)
Résolu/Fermé
gabbermaniac
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
-
14 avril 2010 à 17:56
gabbermaniac Messages postés 137 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 août 2011 - 14 avril 2010 à 18:34
gabbermaniac Messages postés 137 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 23 août 2011 - 14 avril 2010 à 18:34
A voir également:
- Tester l'existence d'un paramètre (id)
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Remettre parametre usine pc - Guide
- Netflix paramètre compte - Guide
- Parametre windows - Guide
3 réponses
Utilisateur anonyme
14 avril 2010 à 18:16
14 avril 2010 à 18:16
salut
pour verifier
il ya la fonction php "is_int" qui verifie si la valeur est un entier
et pour la longeur : "strlen" qui compte le nombre de caratere
et pense a bien securiser $_GET car il ne faut jamais faire confiance a l'utilisateur.
on peut imaginer un truc du genre :
$id=stripslashes(htmlspecialchars($_GET['id']));
if ( is_int($id) AND strlen($id) == 4)
{ echo $data['titre']; }
else
{ header("Location: index.php?p=404"); }
pour verifier
il ya la fonction php "is_int" qui verifie si la valeur est un entier
et pour la longeur : "strlen" qui compte le nombre de caratere
et pense a bien securiser $_GET car il ne faut jamais faire confiance a l'utilisateur.
on peut imaginer un truc du genre :
$id=stripslashes(htmlspecialchars($_GET['id']));
if ( is_int($id) AND strlen($id) == 4)
{ echo $data['titre']; }
else
{ header("Location: index.php?p=404"); }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
14 avril 2010 à 18:24
14 avril 2010 à 18:24
sinon essayes avec ce preg_match:
commence par un chiffre ^, finit par un chiffre $ et 4 chiffres en tout{4}
preg_match("/^[0-9]{4}$/",$id)
commence par un chiffre ^, finit par un chiffre $ et 4 chiffres en tout{4}
gabbermaniac
Messages postés
137
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
23 août 2011
12
Modifié par gabbermaniac le 14/04/2010 à 18:48
Modifié par gabbermaniac le 14/04/2010 à 18:48
Merci, j'ai améliorer mon script en prenant en compte ces nouveaux éléments
Ma nouvelle question est la suivante: si l'utilisateur change l'id de l'url , par exemple index.php?p=article&id=1258 or dans ma bdd 1258 n'existe pas,
je ne peux pas faire (&& $id <1250) par exemple car dans ma bdd j'ai des 600 entrées (donc 600 id) allant de 1000 à 7000
Alors comment afficher la page 404 ? en somme comment vérifier que l'utilisateur tape une id existante?
merci
Re, j'ai poster en même temps que les autres réponses;
j'ai rajouter ceci pour tester l'existence:
$id=stripslashes(htmlspecialchars($_GET['id']));
if(isset($_GET["id"]) && preg_match("/^[0-9]{4}+$/",$id)) {
require "/../../connect.php";
$sql="SELECT * FROM articles WHERE id=$id";
$req = mysql_query($sql) or die(mysql_error()." ERROR ");
$data=mysql_fetch_assoc($req);
$existe = mysql_num_rows($req);
if ($existe==0) {header("Location: index.php?p=404");}
else {
echo " {$data["titre"]}";
}
}
else {
header("Location: index.php?p=404");
}
?>
Cela fonctionne parfaitement, je vous remercie de votre aide et de votre rapidité car cela faisais plusieurs jours que je bloquais la dessus (entre autre lol)
Ma nouvelle question est la suivante: si l'utilisateur change l'id de l'url , par exemple index.php?p=article&id=1258 or dans ma bdd 1258 n'existe pas,
je ne peux pas faire (&& $id <1250) par exemple car dans ma bdd j'ai des 600 entrées (donc 600 id) allant de 1000 à 7000
Alors comment afficher la page 404 ? en somme comment vérifier que l'utilisateur tape une id existante?
merci
Re, j'ai poster en même temps que les autres réponses;
j'ai rajouter ceci pour tester l'existence:
$id=stripslashes(htmlspecialchars($_GET['id']));
if(isset($_GET["id"]) && preg_match("/^[0-9]{4}+$/",$id)) {
require "/../../connect.php";
$sql="SELECT * FROM articles WHERE id=$id";
$req = mysql_query($sql) or die(mysql_error()." ERROR ");
$data=mysql_fetch_assoc($req);
$existe = mysql_num_rows($req);
if ($existe==0) {header("Location: index.php?p=404");}
else {
echo " {$data["titre"]}";
}
}
else {
header("Location: index.php?p=404");
}
?>
Cela fonctionne parfaitement, je vous remercie de votre aide et de votre rapidité car cela faisais plusieurs jours que je bloquais la dessus (entre autre lol)
14 avril 2010 à 18:23
pour verifier si l'id existe
après avoir verifié que le format est correct
si c'est ok
fait la requete sql pour l'id en question
et utilise "$existe = mysql_num_rows($req);
si $existe est superieur a 0 alor il ya eu une reponse donc l'id existe.
maintenant lje te laisse travailler