[RESOLU] Afficher les images d'un dossier.

Eléphant du PHP | 96 Messages

10 août 2013, 19:23

Bonjour, j'utilise ce script pour lister les images d'un dossier,
<?php
$dirname = "./fichiers/$pseudo";
$dir = opendir($dirname); 

while($file = readdir($dir)) {
	if($file != '.' && $file != '..' && !is_dir($dirname.$file))
	{
		echo '<a href="'.$dirname.$file.'"><img src='.$dirname.'/'.$file.' width="100" height="100" border="2"></a>';
		echo '&nbsp;&nbsp;&nbsp;&nbsp;';
	}
}

closedir($dir);
 ?>
mais le problème c'est qu'il me liste tous les fichiers. Comment puis-je faire pour qu'il ne me liste que les images ?
Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 août 2013, 20:18

salut,


Tu peux filtrer sur l'extension (en récupérant ce qui est après le dernier point et en vérifiant que cela correspond à une extension voulue).
Tu peux aussi utiliser le type mime pour un poil plus de "sécurité" avec mime_content_type (obsolète) ou fileinfo si installée ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 96 Messages

10 août 2013, 22:50

Merci j'ai trouvé. Voici mon code pour ceux que ça intéresse :
			 <?php
$dirname = "./fichiers/$pseudo";
$dir = opendir($dirname); 

while($file = readdir($dir)) {
	if($file != '.' && $file != '..' && !is_dir($dirname.$file))
	{
		$extension=strrchr($dirname.$file,'.');
		$extension=substr($extension,1) ;
	if(in_array($extension,array('jpg','png','jpeg','gif')))
		{
		echo '<a href="'.$dirname.$file.'"><img src='.$dirname.'/'.$file.' width="100" height="100" border="2"></a>';
		echo '&nbsp;&nbsp;&nbsp;&nbsp;';
	}
}
}

closedir($dir);
 ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

10 août 2013, 23:33

tu peux éviter les opendir / closedir avec la fonction glob elle te permettra aussi de filtrer directement sur les extensions.

tu ne devrais pas te fier aux extensions, sauf si tu ce n'est que toi qui upload les fichiers sinon utilise le type mime ;)

@+
Il en faut peu pour être heureux ......