[PHP] Requête sql avec une variable

Requête sql avec une variable [PHP] - PHP - Programmation

Marsh Posté le 16-10-2004 à 09:06:27    

Bonjour à tous, j'ai décidé de m'attaquer à la programmation de ma galerie en utilisant le php et mysql :) J'arrive à faire pas mal de chose après avoir parcouru les diverses aides d'internet et ailleurs.
Mais là j'ai un problème que je ne comprends pas et demande l'aide de certains.
En gros j'ai une page où il y a 2 frames menu et view, la première c'est un menu déroulant contenant une miniatures de toutes les photos. Celle là ça marche.
À chaque miniature, je fais un link vers mon view.php en adjoignant ?image=photo.jpg
Jusque là ça marche, quand je click sur chaque miniature, ils affichent bien à dans la frame view la bonne photo.  
Maintenant, je voudrais aussi afficher les commentaires pour chaque photo.
Dans ma base de données, j'ai 2 données corespondant à 2 lignes de commentaires: comments1 et comments2.
donc ce que j'ai fait c'est une requête:
$requete="SELECT filename,comments1,comments2 from galeries WHERE filename=$_GET["image"] ";
 
J'ai essayé avec les guillemets, les simple guillemets etc... j'ai toujours une erreur (parse error). Même si je click sur une miniature pour initialiser la variable ça marche pas. :(
J'ai oublié quelque chose?
 
Aussi, autre solution, est-il possible d'enchaîner plusieurs paramètre dans le lien? style view.php?filename=photo.jpg?commentaire=photo de mon chat
ensuite dans mon view, j'ai $_GET["filename"] et $_GET["commentaire"]
 
ça peut marcher ça?
 
Merci de votre aide


Message édité par Cpu Toaster le 16-10-2004 à 09:06:52

---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 16-10-2004 à 09:06:27   

Reply

Marsh Posté le 16-10-2004 à 10:53:52    

divise ta requete en deux, c'est plus simple

Code :
  1. $filename = $_GET["image"];
  2. //eventuellement qques verifications pour la securité :D  
  3. $requete="SELECT filename,comments1,comments2 from galeries WHERE filename='$filename'";


 
sinon tu peux aussi faire:

Code :
  1. $requete="SELECT filename,comments1,comments2 from galeries WHERE filename= " . $_GET["image"] ;

 
(ou le . sert de concatenation (je me souviens plus si c'est . ou +, a verifier)
 
pour passer plusieurs parametres, faut utiliser des '&' entre tes params:
view.php?filename=photo.jpg&commentaire=photo
 
voila :hello:
 


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 16-10-2004 à 14:02:04    

Merci Suri, je crois que je vais passer plusieurs paramètre au lieu de refaire un tour dans la bdd parce qu'il me semble avoir déjà testé de diviser la requête en deux. Mais bon, je persévère :)
 
Sinon je suppose que pour passer une chaîne de caractère, il faut mettre des guillemets. oui? non? je sais pas? :D


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 16-10-2004 à 14:27:45    

non
mais evite d'avoir des espaces ou des caracteres bizarres dedans :d (et fait gaffe aussi, par l'url, c facile de modifier ta chaine, et tu peux te retrouver avec des chaines que tu veux pas forcement :D


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 16-10-2004 à 14:31:49    

euh, comme quoi? j'ai pas d'idée saugrenue là...
En fait mon url ressemblerait à:
"./view.php?image=sydney_001.jpg&ligne1=opera house&line2=s45 2s f4"
ça passe tout ça?


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 16-10-2004 à 14:45:43    

Bon ça marche, suis content... :)


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 16-10-2004 à 14:54:41    

par ex:
./view.php?image=sydney_001.jpg&ligne1=plicploc&line2=<marquee>toto</marquee>
 
donc mettre du html a la place de tes chaines
tu peux "desactiver" ca en appelant la fonction htmlentities
genre:  
$line1 = htmlentities($_GET["line1"]);
 
un ptit lien qui explique plus en detail le pb :
http://developpeur.journaldunet.co [...] xss1.shtml
 
(c pas vital mais bon, c pas grand chose pour l'eviter :))


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 17-10-2004 à 11:15:37    

Merci Suri pour l'explication, je vais essayer de faire attention. Quelque chose qui me suprend, c'est que tu dois mettre tes paramètres de connection à la base sql quelque part... ça craint ça non?


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 17-10-2004 à 11:40:09    

Cpu Toaster a écrit :

Merci Suri pour l'explication, je vais essayer de faire attention. Quelque chose qui me suprend, c'est que tu dois mettre tes paramètres de connection à la base sql quelque part... ça craint ça non?


 
tu les met ds un fichier d'include que t'inclue ds tes pages apres...
si ton fichier a l'extension .php ca pose aucun pb
tu cree tes variables de config  genre $pass = "blaalb"; et tu peux les utiliser apres sans crainte.


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 17-10-2004 à 12:27:12    

Oki merci :)
bon, j'ai pas tout compris aux problèmes de sécurité (au point de vue de ce que je peux faire) Donc, j'ai essayé de voir ce que j'ai et puis prendre des mesures :)
 
Au fait est-ce qu'un utilisateur peut télécharger un fichier php?


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 17-10-2004 à 12:27:12   

Reply

Marsh Posté le 17-10-2004 à 12:28:42    

Reply

Marsh Posté le 17-10-2004 à 12:46:23    

Oki merchi, bon, mon site, il est dans ma signature si tu veux y aller faire un tour :)
La méthode Post si j'ai bien compris elle a pas de problème de sécurité ?


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 17-10-2004 à 13:10:01    

en gros faut pas faire confiance aux variables modifiables par l'utilisateur.. (a la base de la secu, faut tout verifier koi)
 
la methode post a exactement les meme pb que GET.. c juste que c un peu plus la merde pour les modifier :D
 
edit: ta galerie elle est encore en html sur ton site :d


Message édité par Suri le 17-10-2004 à 13:11:28

---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 17-10-2004 à 13:27:17    

Pour l'instant oui, je suis en train d'en faire une nouvelle avec des tutures... :) ça arrive là...  
Pour l'instant ya qu'une seule galerie en php... (je suis en train de la tester mais elle est en ligne.. :D accessible en plus...)
Mince comment je fais pour sécuriser mon post alors?
J'ai un fichier où j'affiche tout mon livre d'or, et puis j'ai un fichier php où je met le code pour poster et ajouter les variables que je récupère en post pour les mettre dans ma bdd.
 
Merci de ton aide Suri.
ça marche ça? $line1 = htmlentities($_GET["line1"]);  
ou c'est amplement plus compliqué?


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 17-10-2004 à 13:37:33    

un htmlentities sur tes variables GET et POST c'est deja pas mal suffisant. Ya un truc aussi pour backslasher les quotes ( ' et " ) automatiquement et eviter l'injection de SQL mais c actif par defaut chez free.
tout tes fichiers d'include doivent porter l'extension .php (et pas .inc qui est juste un fichier texte)
A eviter aussi, c de prendre un fichier en parametre et de l'afficher genre toto.php?page=galerie.php a moins de faire un paquet de verification derriere :D (paske la on peut passer n'importe quel fichier texte derriere... j'ai deja rencontré ce genre de trou :D)
 
enfin apres, toi c juste une galerie, c pas le site du fbi :D
donc htmlentities c tout :D


Message édité par Suri le 17-10-2004 à 13:37:48

---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 17-10-2004 à 13:50:54    

Merchi merchi, je lirai plus de littérature si je fais un site professionel un jour, mais bon c'est pas ma formation, je fais ça juste comme mini passe-(beaucoup de)-temps depuis un mois :D
En tout cas merci pour ton aide! :)


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 17-10-2004 à 13:55:46    

Ça suffit ça :

Code :
  1. $pseudo = AddSlashes (htmlspecialchars(  htmlentities($_POST[pseudo])));
  2. $email = AddSlashes (htmlspecialchars( htmlentities($_POST[email])));
  3. $message = AddSlashes (htmlspecialchars( htmlentities($_POST[message])));


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 17-10-2004 à 14:02:51    

de memoire il me semble que htmlentities et htmlspecialchars font la meme chose sensiblement (je viens de verifier, htmlentities fait la meme chose mais avec plus de caracteres...)
donc tu peux enlever le htmlspecialchars :)


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 17-10-2004 à 14:05:54    

Oki merci, le début de bout de code, je l'ai pompé sur un site, (qui disait de pas pomper mais bon, j'ai compris en gros, mais je connais pas le détail exacts des fonctions)
Merci beaucoup Suri.
Si tu veux une carte postale d'ici, tu me dis :D


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le 17-10-2004 à 14:10:27    

tu as de la doc en ligne en fr ici: http://www.php.net/docs.php
et downloadable au format chm ici: http://www.php.net/download-docs.php
:D
 
pour la carte postale, uniquement si c toi qui prend la photo :D


---------------
Suri.morkitu.org : Balades au coeur de la ville...
Reply

Marsh Posté le 17-10-2004 à 14:32:06    

Ben si tu veux tu peux sélectionner dans ma galerie, et adresse en mp :)
Sinon, je t'envoie une photo de mon choix.
Enfin faudrait que je vois où je peux imprimer des cartes postales à partir de mes photos... :s
Mais bon, merci pour ton aide.


---------------
Photo Toaster - Flickr Toaster - Blog Toaster
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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