Bonjour,

j'ai une page avec plein d'images. En cliquant sur n'importe laquelle de ces images, je souhaite afficher une page, toujours la même, qui affichera en grand l'image sur laquelle on a cliqué.
Je pense que c'est possible en envoyant une variable, genre variable url, mais je n'arrive pas à trouver ma réponse...
du genre:
onclick->définir la variable url avec le nom de l'image sur laquelle j'ai cliqué
et dans la nouvelle fenêtre:
<?php echo '<img src=ma variable url />';?>


Aux bons soins des spécialistes, et avec tous mes remerciements...

roland
Bonjour !

C'est tout à fait possible : il te suffit d'avoir une page (appellons la zoom.php) et d'attendre un paramètre qui sera soit le nom du fichier à afficher, soit un identifiant (voir plus bas).

Dans ta page qui contient toutes les miniatures, tu mets sur toutes les images un lien du genre
<a href="zoom.php?image=mon_image_a_moi.jpg"><img src="miniatures/mon_image_a_moi.jpg" /></a>


Dans ta page zoom.php (celle qui affiche l'image en grand, donc), il te suffit de prendre le contenu de la variable $_REQUEST['image'] pour savoir quelle image afficher.

Alors, si tu prend l'option de passer le nom du fichier, attention : Il ne faut pas faire confiance aveuglément au contenu de cette variable pour éviter de te faire voler des données sensibles. En effet, rien ne te dit qu'une personne malintentionnée va en profiter pour passer le nom d'un fichier qui n'a rien de l'image.

Dans le désordre :
- Vérifier qu'il y a un et un seul . dans le nom du fichier
- Vérifier que l'extension soit l'une des extensions autorisées (jpg, jpeg, gif, png,...)
- Vérifier que le nom du fichier ne contienne pas d'espaces et de caractères en dehors de [0-9a-zA-Z].

Ces trois contrôles de base peuvent se faire facilement avec une bonne expression régulière (regex) :

  if(ereg('^([0-9a-zA-Z]+)(\.)(jpg|jpeg|gif|png)$', $_REQUEST['image'])!==FALSE)
  {
    // Le format est valide
    // ==> On continue
  }
  else
  {
    // Le format n'est pas valide
    // ==> On affiche un message d'erreur (où on redirige vers une autre page)
  }


Après ce(s) contrôle(s), s'il n'y a rien d'anormal, il ne te reste plus qu'à tester l'existence de l'image avec la fonction PHP file_exists().

Et enfin, si l'image demandée existe bel et bien, il n'y a plus qu'à faire un :
echo('<img src="grandes_images/'.$_REQUEST['image'].'">'."\n");


Si cette page (celle qui contient tes miniatures) est générée sur base d'une requête SQL, je te conseille de ne pas passer le nom de l'image, mais plutôt un identifiant (le plus souvent un entier numérique).

Dans ce cas, il te suffira de faire un

  if(ctype_digit(trim($_REQUEST['image_id']))===TRUE)
  {
    // L'image existe
    // ==> On fait la requête SQL
    
    // ... suite de ton code ici ...
  } 

pour vérifier qu'il s'agit bien d'un entier numérique, et ensuite d'interroger ta base de données.

En espérant que ca aide Smiley smile
Modifié par Bouchon (20 Jan 2008 - 12:29)
super merci!!

je vais essayer cela cette semaine et je te tiens au courant. Ton idée de faire passer l'image par une requête est également géniale, je vais gagner un temps fou.

merci encore mille fois, c'est exactement ce que je cherchais. J'aurais sans doute encore des petits tattonements sur ce sujet, on verra mais je te tiens au courant.

Roland