Originariamente inviato da boots
Ma tu stai usando il NOT.
Se per esempio l'estensione è png, la prima è falsa, ma le altre sono (per forza) vere.
Con l'or, ne basta una vera per entrare nel if

Volendo fare con OR, dovresti fare
if(!($estensione == "png" || $estensione == "jpg" || $estensione == "gif")){
// Non permesse
}

PS: se vuoi fare una cosa più carina, fai

$allow_ext = array('jpg', 'png', 'gif');
if(!in_array($estensione, $allow_ext)){
// Non permesse
}

In questo modo, ti resta più semplice togliere/aggiungere le estensioni...che magari poi riprendere da un file di configurazione
io l'ho scritta così ma mi da sempre non consentita qualsiasi file sia:
$estensione = pathinfo($nomefile); $allow_ext = array('jpg', 'png', 'gif'); if(!in_array($estensione, $allow_ext)){ echo "estensione non consentita ".$estensione['extension']; exit; } if (!file_exists("upload/".$nomefile)) { file_put_contents("upload/".$nomefile, $streamdati); echo "Il file <a href=\"upload/".$nomefile."\">" .$nomefile. "</a> e' stato copiato sul server

".$estensione['extension']; }else{ echo "il file esiste".$estensione['extension']; }