Codice PHP:
function recursive_dir($dir){


     
#Get ID connect ftp_mode and
     
global $mode$conn$remote_folder$file_list;
     
#Open resource to read data
     
if (!($handle opendir($dir)))
                  
//die("Cannot open datadir\n");
                  
send_error("Impossibile aprire la directory");
     
#Read data from local folder $default_dir
     
while(false !==($item readdir($handle))){

          if (
is_dir($dir."/".$item)) {
              
#Erase al "." and ".." to content of $item
              
if ($item != "." && $item != ".."){
                 
#Make directory on remote Server
                 
if (!(ftp_mkdir($conn$item)))
                          
//die("Cannot possible mkdir $item\n");
                          
send_error("Impossibile creare la directory $item\n");
                 
#Get current directory for current session
                 
$pwd ftp_pwd($conn);
                 
//if(!$pwd) die("Cannot get current Work Directory\n");
                 
if(!$pwdsend_error("Impossibile recuperare la directory di lavoro\n");
                 
                 if(!(
ftp_chdir($conn$pwd."/".$item)))
                                 
send_error("Impossibile cambiare directory: ".$pwd."/".$item."\n");

                 
#Call recursive dir to
                 
recursive_dir($dir."/".$item);
                 if(!(
ftp_cdup($conn)))
                                 
send_error("Impossibile cambiare directory a: $remote_folder");
                }
         }
//End for first check of $item: if is_dir($item)
         
else {
               
//$fp = @fopen($dir."/".$item, "r");
                 
$pwd ftp_pwd($conn);

                 if(
ftp_put($conn$item$dir."/".$item$mode)){
                       
                        
$file_list.= (string)$dir."/".$item."\n";
                   }
//End for if uploaded file
                //fclose($fp);
             
}
     }
//End for else

     
closedir($handle);
}
//End for recursive function