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
Modifié par Bouchon (20 Jan 2008 - 12:29)