Page 1 sur 1
problème requête Sql
Posté : 24 juil. 2011, 18:32
par miiidooo19
bonjour à vous tous,
j'ai un problème avec ma requête sql
topic_id c'est une variable passé dans Url quand je change l'id d'un topic par une chaine de caractère exemple 'lklmkm' il m'affiche comme résultats
Champ 'lklmkm' inconnu dans where clause
$rechercheId= mysql_query("SELECT * FROM topic WHERE id_topic='".addslashes($_GET['topic_id'])."'") or die (mysql_error());
$nbR = mysql_num_rows($rechercheId);
if ($nbR == 0)
{
echo ' Non ';
}
else echo 'Yes';
*******************************************
Deuxième question :
comment faire pour empêcher les Script de redirection dans un commentaire mais autoriser les balises Html
Merci d'avance
Re: problème requête Sql
Posté : 24 juil. 2011, 18:53
par hakazizi
"Champ 'lklmkm' inconnu dans where clause" verifie l'orthographe du nom du champs.
2ème question fais une condition en interdisant par exemple le mot script ou metat refresh ainsi que tous les nom de fonction permettant la redirection etc...
Re: problème requête Sql
Posté : 24 juil. 2011, 19:17
par miiidooo19
"Champ 'lklmkm' inconnu dans where clause" verifie l'orthographe du nom du champs.
2ème question fais une condition en interdisant par exemple le mot script ou metat refresh ainsi que tous les nom de fonction permettant la redirection etc...
pour ta première réponse le nom du champs est correct sauf que quand je met par exemple 100090909090 des chiffres ça marche vu que dans champs id_topic y a que des chiffres mais quand il s'agit d'une chaines de caractères il m'affiche le msg d'erreur "Champ 'lklmkm' inconnu dans where clause" donc ça vien de pas de nom du champ
Re: problème requête Sql
Posté : 24 juil. 2011, 19:33
par leozoe
Bonjour,
Le champ id_topic de ta table topic est de quel type ?
si il est de type int par exemple il n'accepte que les chiffres, si tu lui demandes des lettres, il ne peut rien te retourner
Re: problème requête Sql
Posté : 24 juil. 2011, 20:33
par miiidooo19
Bonjour,
Le champ id_topic de ta table topic est de quel type ?
si il est de type int par exemple il n'accepte que les chiffres, si tu lui demandes des lettres, il ne peut rien te retourner
oui Leozoe le champ id_topic c'est de type int et il accepte que les chiffres et c'est bien ça le problème psk ce champ est AUTO_INCREMENT donc je pourrai pas le mettre en varchar par exemple
moi le but de tous ça si que quand un utilisateur essayé de taper une chaine de caractères a la place de num de topic dans l'url s'affiche un msg d'erreur que je vais écrire moi et pas le msg de php :s
Re: problème requête Sql
Posté : 24 juil. 2011, 20:56
par Ryle
Il te faut tester la variable avec is_int() ou is_numeric() avant de l'utiliser ... si c'est un nombre tu exécutes ton code, sinon, tu mets un message d'erreur à la place

Re: problème requête Sql
Posté : 24 juil. 2011, 21:12
par miiidooo19
Il te faut tester la variable avec is_int() ou is_numeric() avant de l'utiliser ... si c'est un nombre tu exécutes ton code, sinon, tu mets un message d'erreur à la place

ah donc je fait un truc comme ça
if (is_int(addslashes($_GET['topic_id'])) )
{
le script
}
else
{
message d'erreur
}
c'est comme ça ?
Edit : c'est bien ça
sauf que j'ai un problem qd je met a la place de la chaine des caractères dans lurl topic.php?topic_id=1* ça m'affiche ce message d'erreur
eurreu de syntaxe dans la ligne 1 :s
Re: problème requête Sql
Posté : 24 juil. 2011, 21:52
par leozoe
pourquoi veux tu mettre une valeur non numérique dans ton url, je ne comprends pas
et pour protéger ta variable $_GET , un intval() est plus approprié je pense.
Re: problème requête Sql
Posté : 24 juil. 2011, 22:08
par miiidooo19
pourquoi veux tu mettre une valeur non numérique dans ton url, je ne comprends pas
et pour protéger ta variable $_GET , un intval() est plus approprié je pense.
si pas que je veux passer une valeur non numérique dans l'url mais juste pour éviter qd un utilisateur s'amuse a changer les valeur dans lurl
merci pour intval() je vais essayé de voir a quoi ça sert

Re: problème requête Sql
Posté : 25 juil. 2011, 01:14
par leozoe
intval() protège ta variable $_GET
intval() veut dire que ta variable $_GET ainsi protégée ne peut contenir que des valeurs numériques entières et pas de caractères
donc je ne vois pas l'utilité d'afficher un message, puisque si il insère des caractères ou même une requête pour te hacker, ils seront détuits par intval qui renverra 0
m'enfin c'est a toi de voir

Re: problème requête Sql
Posté : 27 juil. 2011, 19:47
par miiidooo19
intval() protège ta variable $_GET
intval() veut dire que ta variable $_GET ainsi protégée ne peut contenir que des valeurs numériques entières et pas de caractères
donc je ne vois pas l'utilité d'afficher un message, puisque si il insère des caractères ou même une requête pour te hacker, ils seront détuits par intval qui renverra 0
m'enfin c'est a toi de voir

ah merci c'est ce que j'ai fait ^^ au début je connais pas a quoi sert la function intval

merci encore