[RESOLU] Controle extension php

Eléphant du PHP | 194 Messages

11 août 2022, 20:59

Bonjour à tous,

Je souhaite contrôler l'extension envoyer sur le serveur, mais je ne comprends pas il bloque au niveau de ma condition.
Voici mon code :
//détails du fichier nom, extension et taille
$nomFichier = $_FILES['avatar']['name'];
$extension = pathinfo($nomFichier, PATHINFO_EXTENSION);
$extensionMinuscule = strtolower($extension);
$taille = $_FILES['avatar']['size'];

//Controle extension
if(!empty($extensionMinuscule)){
if($extensionMinuscule != 'png' || 'jpeg' || 'jpg'){
$error["avatar"] = 'Format de fichier non pris en charge. Seulement png jpeg et jpg.';
}
}
Merci par avance de votre aide.
@+Ludo

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 août 2022, 21:45

Bah simplement parce que le contenu de ton if() n'est pas correcte
Soit tu utilises in_array() avec un tableau contenant la liste des extensions autorisées, soit tu écris tes conditions correctement entre chaque ||
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 194 Messages

12 août 2022, 22:26

Je viens de modifier :
//Controle extension
if(!empty($extensionMinuscule)){
if($extensionMinuscule != 'png' || $extensionMinuscule != 'jpeg' || $extensionMinuscule != 'jpg'){
$error["avatar"] = 'Format de fichier non pris en charge. Seulement png jpeg et jpg.';
}
}
J'ai actualisé, mais j'ai toujours le même problème, je reste bloqué dans ma condition.

Voyez vous quelque chose qui cloche.

@+Filou

Mammouth du PHP | 2703 Messages

12 août 2022, 22:36

if($extensionMinuscule != 'png' || $extensionMinuscule != 'jpeg' || $extensionMinuscule != 'jpg'){

dans quel cas cela retourne true ? cela retourne false ?

Eléphant du PHP | 194 Messages

12 août 2022, 22:40

oui j'ai beau mettre une image en png cela me considère que c'est pas en png, alors que quand je fais un vardump de $extensionMinuscule cela me retourne png

Mammouth du PHP | 2703 Messages

12 août 2022, 22:42

dans quel cas cela retourne true ? cela retourne false ?

Eléphant du PHP | 194 Messages

12 août 2022, 22:42

cela doit me retourne true quand c'est un fichier png jpg ou jpeg

Mammouth du PHP | 2703 Messages

12 août 2022, 22:43

if($extensionMinuscule != 'png' || $extensionMinuscule != 'jpeg' || $extensionMinuscule != 'jpg'){

dans quel cas cette ligne retourne false ?

Eléphant du PHP | 194 Messages

12 août 2022, 22:45

cela retourne false si $extensionMinuscule est different de png ou jpeg ou jpg

Mammouth du PHP | 2703 Messages

12 août 2022, 22:47

c'est ce que vous voulez ?

Eléphant du PHP | 194 Messages

12 août 2022, 22:49

oui tout a fait, mais le soucis c'est quand je met un fichier png ou jpg ou jpeg cela me met toujours que c'est pas bon ....ai je fais une erreur ?

Mammouth du PHP | 2703 Messages

12 août 2022, 22:52

if($extensionMinuscule != 'png' || $extensionMinuscule != 'jpeg' || $extensionMinuscule != 'jpg'){
il y a des || entre chaque condition, donc il suffit qu'une seule des 3 conditions soit juste pour que cela retourne true. si l'extension est txt, la première condition est vraie, cela retourne true. si l'extension est png, la seconde condition est vraie, cela retourne true. il y a donc bien une erreur de logique, vu que cela ne peut jamais retourner false.

Eléphant du PHP | 194 Messages

12 août 2022, 22:54

Comment faire ? il faut passer par un tableau ?

Mammouth du PHP | 2703 Messages

12 août 2022, 22:57

soit réfléchir, soit passer par in_array() comme indiqué par @rthur

Eléphant du PHP | 194 Messages

12 août 2022, 23:00

avec un elseif ?c'est une piste ou pas ?