Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2008, 14h44   #1
Membre à l'essai
 
Avatar de snyfir
 
Inscription : avril 2007
Messages : 235
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 235
Points : 24
Points : 24
Par défaut Tester si l'extension d'une image est valide

Bonjour, pour savoir si le fichier qu'on m'envoie est bien une image je procède comme ceci :
Code :
1
2
3
4
5
6
7
8
9
 
// Testons si l'extension est autorisée
$infosfichier = pathinfo($_FILES['image']['name']);
$extension_upload = $infosfichier['extension'];
$extension_upload = strtolower($extension_upload); //converti en minuscule
$extensions_autorisees = array('png', 'jpg', 'jpeg', 'gif');
if (!in_array($extension_upload, $extensions_autorisees)) {
    echo "extension non valide !";
}
Le problème est que par exemple, si on prend un fichier texte et qu'on le renomme en .jpg, mon script va croire que c'est une image alors que c'est enfaite un fichier texte et le reste de mon script, va donc planter.
Comment tester si c'est bien une image et de bon type.

Merci d'avance pour vos réponses.
snyfir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 14h46   #2
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Code :
$_FILES['image']['type']
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 15h00   #3
Membre à l'essai
 
Avatar de snyfir
 
Inscription : avril 2007
Messages : 235
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 235
Points : 24
Points : 24
Citation:
Envoyé par Bisûnûrs Voir le message
Code :
$_FILES['image']['type']
Sa marche pas mieux. J'ai fait un echo de $_FILES['image']['type']. Si je prend un fichier texte et que je le renome en .gif j'obtien avec $_FILES['image']['type'] :
image/gif
snyfir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 15h30   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 383
Points : 16 383
Une methode ici :
http://www.jellyandcustard.com/2006/...-and-fileinfo/
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 19h16   #5
Membre du Club
 
Inscription : juillet 2008
Messages : 39
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 39
Points : 43
Points : 43
getimagesize est une solution simple dans le cas des images, elle renvoie faux si ce n'en est pas une. Probablement pas 100% fiable ceci dit.
ddong est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2008, 19h32   #6
Membre à l'essai
 
Avatar de snyfir
 
Inscription : avril 2007
Messages : 235
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 235
Points : 24
Points : 24
Merci pour votre aide. Enfaite j'ai opté pour :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
        if ($extension_upload == 'jpg' OR $extension_upload == 'jpeg') {
            if (!@imagecreatefromjpeg($data['tmp_name'])) {
                $this->error(_LANG_FAVOURITECLASS_IMAGE_NO_VALID);
                return false;
            }
        } else if ($extension_upload == 'png') {
            if (!@imagecreatefrompng($data['tmp_name'])) {
                $this->error(_LANG_FAVOURITECLASS_IMAGE_NO_VALID);
                return false;
            }
        } else if ($extension_upload == 'gif') {
            if (!@imagecreatefromgif($data['tmp_name'])) {
                $this->error(_LANG_FAVOURITECLASS_IMAGE_NO_VALID);
                return false;
            }
        } else {
            $this->error(_LANG_FAVOURITECLASS_IMAGE_EXTENSION_INVALID);
            return false;
        }
snyfir est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web