Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

запись на фтп

15K
15 ноября 2006 года
eviluo
30 / / 30.10.2006
нужно загрузить файл на большое количество фтп.
написал скрипт, который считывает из файла строки вида login:pass@domain.com, подключается к каждому фтп и загружает файл.
это он должен так работать:D , но проблема вот в чем, он загружает файл только на последний в списке фтп, в чем может быть проблема? :confused:

Код:
function fcount_ln($fnz) {
    if(file_exists($fnz) && $fhs = fopen($fnz, 'r')) {
        $count = 0;
        while(!feof($fhs)) {
            fgets($fhs);
            $count++;
        }
        fclose($fhs);
        return $count;
    }
}
$ftp_fname = "ftp_list.txt";
$ftp_op = fopen($ftp_fname,"r");
$count_ftp_str = fcount_ln($ftp_fname);
for($i = 0; $i < $count_ftp_str; ++$i) {
    $str = file($ftp_fname);
    $str = $str[$i];
    $mass_exp = explode(":",$str);
    $ftp_user_name = $mass_exp[0];
    $pass_vs_dom = $mass_exp[1];
    $pnd_exp = explode("@",$pass_vs_dom);
    $ftp_user_pass = $pnd_exp[0];
    $ftp_server =  $pnd_exp[1];
    $file = 'remview.php';
    $remote_file = 'htdocs/remview.php';
    $conn_id = ftp_connect($ftp_server);
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
        echo "$file загружен на $ftp_server\n<br/>";
    } else {
        echo "Не удалось загрузить $file на $ftp_server\n<br/>";
    }
    ftp_close($conn_id);
}
fclose($ftp_op);
8
15 ноября 2006 года
mfender
3.5K / / 15.06.2005
Как-то ты странно всё завернул... Упрости код до такого вида:
Код:
$ftp_fname = "ftp_list.txt";
foreach (file($ftp_fname) as $str) {
    $mass_exp = explode(":",$str);
    $ftp_user_name = $mass_exp[0];
    $pass_vs_dom = $mass_exp[1];
    $pnd_exp = explode("@",$pass_vs_dom);
    $ftp_user_pass = $pnd_exp[0];
    $ftp_server =  $pnd_exp[1];
    $file = 'remview.php';
    $remote_file = 'htdocs/remview.php';
    $conn_id = ftp_connect($ftp_server);
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
        echo "$file загружен на $ftp_server\n<br/>";
    } else {
        echo "Не удалось загрузить $file на $ftp_server\n<br/>";
    }
    ftp_close($conn_id);
}
15K
15 ноября 2006 года
eviluo
30 / / 30.10.2006
и правда чет я намудрил :rolleyes:
но та же проблема осталась, после каждой попытки подключения к фтп (кроме последней) вытает такое

 
Код:
Warning: ftp_connect() [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. in C:\www\put\put_ftp.php on line 13

Warning: ftp_login() expects parameter 1 to be resource, boolean given in C:\www\put\put_ftp.php on line 14

Warning: ftp_put() expects parameter 1 to be resource, boolean given in C:\www\put\put_ftp.php on line 15

Warning: ftp_close() expects parameter 1 to be resource, boolean given in C:\www\put\put_ftp.php on line 20
256
15 ноября 2006 года
foxweb
1.0K / / 27.07.2005
ха, залить PHP Remote Viewer на десяток других хостов!!!
не дай Бог админы всех серверов вычислят тебя, найдут и жестоко накажут ;)
15K
15 ноября 2006 года
eviluo
30 / / 30.10.2006
та если бы десяток....я бы в ручную позаливал ;)
8
15 ноября 2006 года
mfender
3.5K / / 15.06.2005
Цитата:
после каждой попытки подключения к фтп (кроме последней) вытает такоепосле каждой попытки подключения к фтп (кроме последней) вытает такое


Значит неправильные у тебя строки подключения.

15K
15 ноября 2006 года
eviluo
30 / / 30.10.2006
строки то правильные, менял их местами по всякому... все равно подключение только на последний (какой бы он не был)
8
15 ноября 2006 года
mfender
3.5K / / 15.06.2005
Да сделай ты всё по-человечески!

Код:
$ftp_fname = "ftp_list.txt";
foreach (file($ftp_fname) as $str) {
    preg_match("/^(.+):(.+)@(.*)$/", $str, $ConnStr);
    $file = 'remview.php';
    $remote_file = 'htdocs/remview.php';
    $conn_id = ftp_connect($ConnStr[3]);
    $login_result = ftp_login($conn_id, $ConnStr[1], $ConnStr[2]);
    if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
        echo "$file загружен на $ftp_server\n<br/>";
    } else {
        echo "Не удалось загрузить $file на $ftp_server\n<br/>";
    }
    ftp_close($conn_id);
}


Этот код я даже проверил на работоспособность - работает.

ЗЫ. Кстати, а почему у тебя FTP_ASCII написано? Всё нужно лить бинарно... Абсолютно всё...
15K
15 ноября 2006 года
eviluo
30 / / 30.10.2006
пасиб :)
8
15 ноября 2006 года
mfender
3.5K / / 15.06.2005
[QUOTE=eviluo]пасиб :)[/QUOTE]
Так заработало?
Я объясню причину, почему у тебя работала только последняя строчка.

Когда ты делал [COLOR=#0000bb]$pnd_exp [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]explode[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"@"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]$pass_vs_dom[/COLOR][COLOR=#007700]); [COLOR=black]в [COLOR=#0000bb]$pnd_exp[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]] [COLOR=black]попадала строка с символом конца строки. Согласись, этот символ лишний в имени сервера. А в последней строке этого символа, скорее всего нет.[/COLOR][/COLOR][/COLOR][/COLOR]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог