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!