Originariamente inviato da techno
Salve sto avendo un problema con il controllo di un file che sia una immagine:

Codice PHP:
    $tmpname=$_FILES["uplocandina"]["tmp_name"];
    
$finfo=finfo_open(FILEINFO_MIME_TYPE);
    
$type=finfo_file($finfo,$tmpname);
    
finfo_close($finfo);
    
    if(
$type!="image/gif" || $type!="image/pjpeg" || $type!="image/jpeg" || $type!="image/png" || $type!="image/x-png"$errore=true
di fatto mi da sempre file non valido cioè come se non fosse una immagine anche se invio una immagine di quel tipo.
..che è esattamente quello che ci si aspetta dalle condizioni che hai messo...
In pratica tu stai dicendo:
se non è gif OPPURE non è jpeg OPPURE non è ....

Basta che tu mandi una gif che quando fai il controllo per jpeg fallisce e dato che le hai messe come OR, il risultato è ovviamente true (perchè è una gif...)!

codice:
if ($type != "image/gif" and $type != "image/pjpeg" and $type != "image/jpeg" and $type != "image/png" and $type != "image/x-png") {
$errore = true;
}
Così come sopra, invece, tu verifichi le condizioni in questo modo:
se non è gif e non è pjpg e non è jpeg ... allora errore.
Appena una delle condizioni diventa false (es: è gif, quindi tipo != gif diventa false) allora tutto l'if assume come valore "false" e quindi non entra nel blocco dove c'è "errore"