[b]

se non cambi il nome la riga:

echo "ciclo ", file_exists(UPLOAD_DIR.$filenome), "
";

invece di trovare $filenome originale becchera' quello che hai modificato perche' sara' stato sovrascritto l'originale.
L'avevo notato... cmq con la tua modifica il ciclo vain loop perchè filenome sta gia' e non lo cambi.....
Ho cambiato un po la struttura ma sempre lo stesso prob:

Codice PHP:
<?php

define
("UPLOAD_DIR""./data/");

if(isset(
$_POST['action']) and $_POST['action'] == 'upload')
{
    if(isset(
$_FILES['user_file']))
    {
        
$file $_FILES['user_file'];
        
$filenome $file['name'];
        
        if(
$file['error'] == UPLOAD_ERR_OK and is_uploaded_file($file['tmp_name']))
        {   
            
$i "0";
            while(
file_exists(UPLOAD_DIR.$filenome))
            {   
                echo 
"i = "$i"
"
;
                echo 
"ciclo "$i,  "
"
;
                
$ext explode('.'$filenome);
                
$filenome $ext[0].$i;
                
$filenome $filenome.".".$ext[1];
                
$file['name'] = $filenome;
                echo 
"filenome "$filenome"
"
;
                echo 
"\$_FILES['nome'] "$file['name'], "
"
;
                
$i = ++$i;
            }
            
move_uploaded_file($file['tmp_name'], UPLOAD_DIR.$file['name']);
            
chmod(UPLOAD_DIR.$file['name'],0644);
        }
    }
}

?>