Prima di tutto, sempre al posto di $HTTP_POST_FILES usa semplicemente $_FILES, visto che la prima è ormai deprecata e andrà a sparire.
Detto questo, come puoi vedere anche nel manuale php,
$HTTP_POST_FILES['userfile']['type']
è una informazione che dovrebbe essere fornita dal browser dell'utente, quindi non ci puoi contare per nulla su, perchè... potrebbe essere vuota, o addirittura TRUCCATA appositamente.
Quindi, hai due scelte, che io di solito applico entrambe: verificare l'estensione del file originale con questo codice:
Codice PHP:
$origname=$_FILES['userfile']["name"];
$origext="";
if (($dotpos=_strrpos($origname,"."))!==false):
$origext=_strtolower(_substr($origname,$dotpos,_strlen($origname)-$dotpos+1));
endif;
che ti dà in $origext l'estensione del file originale (nel tuo caso sarebbe $origext="xls"), oppure usare la estensione fileinfo per verificare davvero il contenuto del file:
Codice PHP:
//se ho a disposizione la fileinfo la uso per verificare il file
if (function_exists("finfo_open")):
$finfo = @finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
if ($finfo!==FALSE):
$magicmime=@finfo_file($finfo, $source);
if ($magicmime===FALSE):
$magicmime="";
endif;
finfo_close($finfo);
endif;
endif;
che ti dà in $magicmime il tipo mime del contenuto del file; nota che purtroppo non tutti gli hoster (anzi, in italia pochissimi) hanno la fileinfo attiva, cosa che probabilmente cambierà con PHP 5.3, che l'ha integrata e sempre attiva.
Ciao!