<?php
$legalext = array('rar','zip','jar','mp3');
$ext = explode('.',$_FILES['userfile']['name']);
$ext = strtolower($ext[count($ext)-1]);
if(preg_match('|^[a-z0-9\_\.\-\(\)]+$|i',$_FILES['userfile']['name']) AND in_array($ext,$legalext)){
$savename = str_ireplace('.'.$ext,'',$_FILES['userfile']['name']);
$savename = str_replace('.','_',$_FILES['userfile']['name']);
$savename = $savename'._'.mt_rand(111,999).'.'.$ext;
//сохраняем с именем $savename
}else{ echo'error bad name or extension file'; }
если где ошибка, сильно не бить, я 5 минут назад проснулся