Page 1 sur 1

Afficher seulement des images dans un dossier avec php5

Posté : 11 août 2008, 20:51
par EricDesMontagnes
Bonjour, je suis en train de faire un petit script php5 pour afficher des images dans un dossier :
<?php
$ftype = 'image/jpeg'; 
$dir = new DirectoryIterator("pics/ascr/");
foreach ($dir as $file) {
   if ($file->isDot()) {
       continue;}
	$finfo = new finfo(FILEINFO_MIME);
	$fres = $finfo->file($file); 
	if (is_string($fres) && !empty($fres)) { 
   $ftype = $fres;
 print $file->getFilename();
}
}
?>
En fait ce qui pose problème c'est le test pour savoir si c'est bien une image. Vous n'auriez pas une idée ?

Posté : 12 août 2008, 04:25
par AB
$fres te retourne quoi ?

Posté : 12 août 2008, 10:15
par Ryle
Y a pas un p'tit soucis avec ton $ftype ? tu le définis d'abord comme étant égal à 'image/jpeg' et ensuite tu l'écrase avec ce qui est je suppose le type mime du fichier... (en gros il ne sert à rien).

La première question à te poser c'est comment faire pour savoir si un fichier est une image ou non ? Le plus simple est en effet de tester le type mime ou l'extension. Il te faut alors définir une liste de valeur autorisées (soit uniquement du jpg, soit également des gif, png, ...), les comparer au fichier que tu traites et en fonction du résultat, afficher ou non celui-ci :)

Posté : 12 août 2008, 20:13
par EricDesMontagnes
Si justement y'a un soucis :'( j'arrive pas à tester le type mime du fichier

Posté : 13 août 2008, 04:29
par AB
Si $fres ne te retourne rien sur un fichier existant c'est que l'extension PECL n'est pas installée sur ton serveur.
Si tu ne peux pas l'installer il faudra utiliser mime_content_type() ou tester l'extension avec un bout de code (ex: $Ext = strtolower(strrchr(basename($fichier),'.')); pas fiable si ce ne sont pas des personnes de confiance qui postent des images sur ton serveur) ou encore utiliser la fonction getimagesize().