Parametre dans URL, foire une fois sur 5...

Parametre dans URL, foire une fois sur 5... - PHP - Programmation

Marsh Posté le 02-01-2007 à 17:47:20    

Bonjour à tous et merci de votre attention.  :)  
 
Alors voila, dans une page html, j'ai ceci <a href="AffichageVignette.php?cat=Animal">
 
Cela marche globalement trés bien, mais une fois sur 5 ou 6, je me retrouve avec absolument rien dans la variable "cat" dans ma page "AffichageVignette" ce qui est trés génant car j'interroge une base MySQL avec cette variable et la requete suivante $requete1= "select nom_petite,num_image from images where categorie='$cat' order by num_image";
 
Quelqu'un aurait une idée du probleme ?
 
Merci bcp ! ;)

Reply

Marsh Posté le 02-01-2007 à 17:47:20   

Reply

Marsh Posté le 02-01-2007 à 17:49:27    

coder proprement peut être ?....  
 
pourquoi ne pas vérifier tes infos passée par URL ?
 
et puis tu as peut être un lien dans ta page qui n'a pas justement d'infos... vérifie déjà ta page html.

Reply

Marsh Posté le 02-01-2007 à 18:09:20    

Ca sent l'injection de SQL ici!
 
Sinon même chose : coder proprement et, très certainement, revoir ton modéle de données.

Reply

Marsh Posté le 03-01-2007 à 02:00:04    

Quand tu dis rien, c'est un bogue que tu constates toi même ou bien tu vois ça dans les log des gens qui tripatouille l'url à la main :??:
 
Si première solution va falloir donner plus de code sur la façon dont tu génères le lien.
 
Si deuxième solution, suffit juste de pas injecter n'importe comment et de vérifier qu'il y a quelque chose et donner une valeur par défaut ce qui est mieux ;)

Reply

Marsh Posté le 03-01-2007 à 15:47:42    

Je vais essayer d'être plus clair.
 
Mon site est en .com et l'adresse est masquée, il n'y a donc pas de tripatouillage d'adresse (enfin c surement possible mais le probleme n'est pas là, c'est un site perso consulté uniquement par des amis).
 
J'ai une page html Photographies.htm sur laquelle j'ai le lien (sur une image) suivant <a href="AffichageVignette.php?cat=Animal">.
 
Quand je clique sur ce lien et que je suis donc dans AffichageVignette.php, une fois sur 5 ou 6 ou parfois bcp plus, ma requete de selection du type "select * from images where cate=$cat" ne renvoie rien car $cat est vide.
 
Ce que je fais pour éviter d'avoir une page completement vide c'est un truc du style
if ( $cat == "" )
{
     // ERREUR
}
else
{
     // DEROULEMENT NORMAL
}
 
Mais il n'empêche que je ne comprends pas pkoi ce paramétre devient vide de façon aléatoire....
 
En espérant avoir été plus clair je vous remercie de votre aide !  :hello:

Reply

Marsh Posté le 03-01-2007 à 15:55:35    

tu fais donc de l'url rewriting, est ce que le probléme n'est pas la ?
 
Le lien est statique ou dynamique (le lien qui pose probléme).

Reply

Marsh Posté le 03-01-2007 à 23:48:12    

à mon avis c'est un problème dans le type $cat
Puisque PHP n'est pas fortement typé, il arrive souvents des problèmes sans savoir leurs origines

Reply

Marsh Posté le 04-01-2007 à 02:12:01    

Ca foire au niveau du lien ou dans le traitement ultérieur :??:

Reply

Marsh Posté le 05-01-2007 à 11:19:21    

dustnet a écrit :

$requete1= "select nom_petite,num_image from images where categorie='$cat' order by num_image";


Comme les autres l'ont dit, ça s'écrit :

Code :
  1. if(isset($_GET['cat'])) {
  2.   $cat = $_GET['cat'];
  3.   ...
  4.   requete1= 'select nom_petite,num_image from images where categorie=\'' . mysql_real_escape_string($cat) . '\' order by num_image';
  5.   ...
  6. } else {
  7.   header('404 Not Found');
  8.   ....
  9. }


Message édité par FlorentG le 05-01-2007 à 11:19:32
Reply

Marsh Posté le 05-01-2007 à 14:49:34    

Merci bcp de votre aide.
 
Le code fourni par FlorentG a completement reglé le problème. Une simple question reste à l'horizon, pourquoi cela foirait avant de façon aléatoire (le fameux "une fois sur 5 ou 6" )
 
PS: mon lien est statique.

Reply

Marsh Posté le 05-01-2007 à 14:49:34   

Reply

Marsh Posté le 05-01-2007 à 14:50:24    

Il faudrait voir le code avant, mais en utilisant register_globals, on peut souvent arriver à des problèmes du style variable réécrite

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed