Сделайте, плз, простенький php-скрипт

12
[Удален]
1617

Кому не жалко просьба сделать простенький скрип - закачивальщик на ФТП.

Типа ТЗ:

1. Скрипт должен закачивать на сторонний ФТП содержание текущей директории (опционально - диры, заданной в настройках).

2. Возможность указывать целевой каталог.

3. Возможность исключения ненужных для копирования файлов и каталогов.

4. Возможность удаления после закачивания.

Если с пп3-4 заморачиваться ломает - ну их фиг с ними :)

Накидал типа интерфейс (надеюсь из него понятно, что хотелось бы).

zip ftptransfer.zip
RO
На сайте с 13.07.2009
Offline
88
#1

наглости нет предела?

[Удален]
#2
RedOK:
наглости нет предела?

Я обращался к нормальным людям, которые в состоянии поделится 5-10-ю строками кода.

Там по русски написано:

SeoNizator:
Кому не жалко

А разные "кодеры 80 уровня", удавящиеся за 0,2цента, могут даже не волноваться и не напрягаться читать-писать в этом топке.

Мой отец говорил: "делай добро и бросай его в воду"
(с) мульт

RO
На сайте с 13.07.2009
Offline
88
#3

за 0.2 цента удавится разве что аффтар сего топика :) вы попросту жадный и всего то. кстати этот скрипт уж точно не 5-10 строк, удачи

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#4
SeoNizator:
которые в состоянии поделится 5-10-ю строками кода.

Если всё так просто - то напишите сами!

pikasso
На сайте с 27.01.2008
Offline
150
#5

Хм, а что, гугл уже отменили ?

skAmZ
На сайте с 04.09.2009
Offline
122
#6

Что конкретно вы хотели не знаю, лень читать ТЗ. Данный скрипт перекачивает указанную папку на другой ftp по указанному пути.


<?php
$to_dir='/to_server/path/';
$from_dir='/from_server/path/';
$login='login';
$pass='password';
$host='host';


if($from_dir[strlen($from_dir)-1]!='/') $from_dir.='/';
function read_dir($path)
{
$files=scandir($path);
$return_arr=array();
foreach($files as $i => $name)
{
if($name=='.' or $name=='..') continue;
if(is_dir($path.$name.'/')) $return_arr=array_merge($return_arr, read_dir($path.$name.'/'));
else $return_arr[]=$path.$name;
}
return $return_arr;
}
function ftp_go_to_path($ftp, $path)
{
$current=ftp_pwd($ftp);
$paths=array_filter(explode('/', preg_replace('!^'.$current.'!', '', $path)));
if($current[strlen($current)-1]!='/') $current.='/';
foreach($paths as $i => $dir)
{
$dirs=get_dirs($ftp, $current);
if(!in_array($dir, $dirs))
{
ftp_mkdir($ftp, $current.$dir);
}
ftp_chdir($ftp, $dir);
$current.=$dir.'/';
}
}
function ftp_is_dir($row_info)
{
if($row_info[0][0]=='d') return true;
else return false;
}
function get_dirs($ftp, $path)
{
$files=ftp_rawlist($ftp, $path);
$dirs=array();
foreach($files as $i => $row_info)
{
$file_info=array_map('trim', explode(" ", preg_replace('![ ]{2,}!', '', $row_info)));

if(ftp_is_dir($file_info))
{
$dir_name=$file_info[count($file_info)-1];
if($dir_name!='.' and $dir_name!='..') $dirs[]=$dir_name;
}
}
return $dirs;
}


$files=array_unique(read_dir($from_dir));
$ftp = ftp_connect($host) or die('error connect');
ftp_login($ftp, $login, $pass) or die('error login or password');
ftp_pasv($ftp, true);
ftp_go_to_path($ftp, $to_dir);



foreach($files as $i => $path)
{
$to=$to_dir.str_replace($from_dir, '', $path);
echo $path.' -> '.$to.' - <b>';
ftp_go_to_path($ftp, dirname($to));
if(ftp_put($ftp, $to, $path, FTP_BINARY)) echo 'ok';
else echo 'fail';
echo '</b><br/>';
$dirs=get_dirs($ftp, $current);
}

ftp_quit($ftp);
?>
[Удален]
#7

skAmZ, ух как страшен он :)

pikasso
На сайте с 27.01.2008
Offline
150
#8

skAmZ, жесткий код ;))

[Удален]
#9

pikasso, ага, суровый кодерский код 🤣

ydn
На сайте с 12.05.2010
Offline
12
ydn
#10

Вот не такой суровый пример))


<?php
$ftp_server = 'ftp.blablabla.bla';
$ftp_login = 'login';
$ftp_password = 'password';
$local_dir = 'upload';
$ftp_root = '/public_html/';

function do_upload($dir = 'upload')
{
global $conn_id, $ftp_root, $transfer_mode, $local_dir;
$ftp_dir = preg_replace('/^'.$local_dir.'\/?/', '', $dir);
if ($ftp_dir != '')
echo 'Папка '. $ftp_dir . ((ftp_mkdir($conn_id, $ftp_root . $ftp_dir)) ? ' создана' : ' не создана').'<br />';
$filelist = glob(($dir!='') ? $dir.'/*' : '*');
if ($filelist == array())
return 0;
foreach ($filelist as $file)
{
if (is_file($file))
{
$transfer_mode = (preg_match('/\.(gif|jpg|png)$/', $file)) ? FTP_BINARY : FTP_ASCII;
echo 'Файл ' . $file . ((ftp_put($conn_id, $ftp_root . preg_replace('/^'.$local_dir.'\//', '', $file), $file, $transfer_mode)) ? ' загружен' : ' не загружен').'<br />';
}
else
do_upload($file);
}
return 0;
}

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_login, $ftp_password);
if (!$conn_id || !$login_result)
exit("Не удалось установить соединение с FTP сервером!\nПопытка подключения к серверу $ftp_server!");
else
echo "Установлено соединение с FTP сервером $ftp_server<br />";
do_upload($local_dir);
ftp_close($conn_id);
?>

to SeoNizator - помочь найти решение проблемы, подсказать правильный выход из ситуации - это всё без проблем, вряд ли кому-то жалко будет. Но, извините, делать работу за кого-то и уж тем более отбирать у кого-то хлеб, вряд ли у кого рука поднимется))

Вёрстка xHTML ● WordPress > Вёрстка, программирование, настройка, консультации (/ru/forum/526726) Вёрстка на халяву (/ru/forum/569543) ICQ 853588 | Написать мне личное сообщение ()
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий