Pokusala sam da napravim skriptu koja ce sa jednog hostinga prebaciti fajlove na neku drugi hosting preko ftp_connect funkcija. Ali nesto mi ne funkcionise najbolje, i ne mogu da pohvatam sta. Naime, pokretanje transfera vrsim preko AJAX-a. Npr. korisnik klikne na dugme i AJAX pokrene skriptu koja se zove bridge.php u kojoj se nalaze pristupni podaci ka serveru i dve funkcije, jedna za citanje fajlova i foldera sa lokalnog hosta i druga funkcija koja te fajlove treba da prekopira preko ftp-a na drugi host.
Evo i koda:
Code:
//funkcija za konektovanje na ftp host
function ftp_copy($source_file, $destination_file, $domen_usernameF, $domen_sajtaF, $passwordF)
{
$ftp_server = "87.106.200.4";
$ftp_user = $domen_usernameF."@".$domen_sajtaF;
$ftp_password = $passwordF;
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user, $ftp_password);
if((!$conn_id) || (!$login_result))
{
$greska.="FTP connection has failed!<br />";
$greska.="Attempted to connect to $ftp_server for user $ftp_user<br />";
exit();
}
exit("Attempted to connect to $ftp_server for user $ftp_user<br />");
if( is_dir($source_file) )
{
if(!file_exists($destination_file))
{
ftp_mkdir($conn_id, $destination_file);
}
}
else
{
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
}
ftp_close($conn_id);
if(!$upload)
{
$greska.="FTP copy has failed!<br />";
return false;
}
else
{
return true;
}
}
function rec_listFiles($from = '.',$novi_fajl, $domen_usernameF, $domen_sajtaF, $passwordF)
{
if(! is_dir($from))
return false;
$files = array();
if( $dh = opendir($from))
{
while( false !== ($file = readdir($dh)))
{
// Skip '.' and '..'
if( $file == '.' || $file == '..')
continue;
$path = $from . '/' . $file;
if( is_dir($path) )
{
if(!file_exists($novi_fajl."/".$file))
{
//mkdir($novi_fajl."/".$file);
ftp_copy($novi_fajl."/".$file, $novi_fajl."/".$file, $domen_usernameF, $domen_sajtaF, $passwordF);
}
$novo=explode("/",$path);
$files += rec_listFiles($path,$novi_fajl."/".$novo[2], $domen_usernameF, $domen_sajtaF, $passwordF);
}
else
{
$files[] = $path;
//if(!copy($path,$novi_fajl."/".$file))
if(!ftp_copy($path, $novi_fajl."/".$file, $domen_usernameF, $domen_sajtaF, $passwordF))
{
$greska.="Greška pri kopiranju fajla: <b>".$novi_fajl."/".$file."</b>. Molim da javite administratoru za ovu gresku na [email protected]";
}
}
}
closedir($dh);
}
return $files;
}
//izvrsavam transfer fajlova, slika na novi host
rec_listFiles($putanja,$newfile, "dmnusername", "mojsajt.com", "dmnuserpass");
//funkcija za konektovanje na ftp host
function ftp_copy($source_file, $destination_file, $domen_usernameF, $domen_sajtaF, $passwordF)
{
$ftp_server = "87.106.200.4";
$ftp_user = $domen_usernameF."@".$domen_sajtaF;
$ftp_password = $passwordF;
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user, $ftp_password);
if((!$conn_id) || (!$login_result))
{
$greska.="FTP connection has failed!<br />";
$greska.="Attempted to connect to $ftp_server for user $ftp_user<br />";
exit();
}
exit("Attempted to connect to $ftp_server for user $ftp_user<br />");
if( is_dir($source_file) )
{
if(!file_exists($destination_file))
{
ftp_mkdir($conn_id, $destination_file);
}
}
else
{
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
}
ftp_close($conn_id);
if(!$upload)
{
$greska.="FTP copy has failed!<br />";
return false;
}
else
{
return true;
}
}
function rec_listFiles($from = '.',$novi_fajl, $domen_usernameF, $domen_sajtaF, $passwordF)
{
if(! is_dir($from))
return false;
$files = array();
if( $dh = opendir($from))
{
while( false !== ($file = readdir($dh)))
{
// Skip '.' and '..'
if( $file == '.' || $file == '..')
continue;
$path = $from . '/' . $file;
if( is_dir($path) )
{
if(!file_exists($novi_fajl."/".$file))
{
//mkdir($novi_fajl."/".$file);
ftp_copy($novi_fajl."/".$file, $novi_fajl."/".$file, $domen_usernameF, $domen_sajtaF, $passwordF);
}
$novo=explode("/",$path);
$files += rec_listFiles($path,$novi_fajl."/".$novo[2], $domen_usernameF, $domen_sajtaF, $passwordF);
}
else
{
$files[] = $path;
//if(!copy($path,$novi_fajl."/".$file))
if(!ftp_copy($path, $novi_fajl."/".$file, $domen_usernameF, $domen_sajtaF, $passwordF))
{
$greska.="Greška pri kopiranju fajla: <b>".$novi_fajl."/".$file."</b>. Molim da javite administratoru za ovu gresku na [email protected]";
}
}
}
closedir($dh);
}
return $files;
}
//izvrsavam transfer fajlova, slika na novi host
rec_listFiles($putanja,$newfile, "dmnusername", "mojsajt.com", "dmnuserpass");
Kada izvrsim ovaj skript ne prijavljuje nikakvu gresku, ali fajlovi nisu prebaceni.
Molim za neke smernice!
Hvala!
Listen very carefully, I shall say this only once!