За последние 24 часа нас посетил 63881 программист и 3080 роботов. Сейчас ищут 1316 программистов ...

Запись файлов на список фтп

Тема в разделе "PHP для новичков", создана пользователем gun15, 12 дек 2008.

  1. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    Хочу заливать файлы на ftp по списку! список вида host;user;pass дак вот скриптик выдает ошибку если ftp не верный и прекращает работу хотя в списке есть еще серваки! Что надо изменить чтобы скрипт выдавал что этот сервер не доступен или не работает и продолжал дальше работу!???
    PHP:
    1.  
    2. <?php
    3. $ftppypelist = $_POST['ftptype'];
    4. if($ftptypelist==1)
    5. {
    6.        
    7. $ftpspisok = file($_POST['ftpspisokpost']);
    8. for ($index = 0 ; $index < count($ftpspisok); $index++)
    9. {
    10. list($ftpspisok, $userspisok, $passspisok) = explode(";", $ftpspisok[$index]);
    11. $ftp_server    = $ftpspisok;
    12. $ftp_login     = $userspisok;
    13. $ftp_password  = $passspisok;
    14. $local_dir     = $dir;
    15. $ftp_root      = $_POST['ftpdir'];
    16.  
    17.  
    18. ///Заливаем папку на ftp
    19. function do_upload($dir = 'upload')
    20. {  
    21.    global $conn_id, $ftp_root, $transfer_mode, $local_dir;
    22.    $ftp_dir = preg_replace('/^'.$local_dir.'\/?/', '', $dir);
    23.    if ($ftp_dir != '')
    24.       echo 'Папка '. $ftp_dir . ((ftp_mkdir($conn_id, $ftp_root . $ftp_dir)) ? ' создана' : ' не создана').'<br />';
    25.    $filelist = glob(($dir!='') ? $dir.'/*' : '*');
    26.    if ($filelist == array())
    27.       return 0;
    28.    foreach ($filelist as $file)
    29.       {
    30.       if (is_file($file))
    31.          {
    32.          $transfer_mode = (preg_match('/\.(gif|jpg|png)$/', $file)) ? FTP_BINARY : FTP_ASCII;
    33.          echo 'Файл ' . $file . ((ftp_put($conn_id, $ftp_root . preg_replace('/^'.$local_dir.'\//', '', $file), $file, $transfer_mode)) ? ' загружен' : ' не загружен').'<br />';
    34.          }
    35.       else    
    36.          do_upload($file);
    37.       }
    38.    return 0;  
    39. }
    40.  
    41. $conn_id = ftp_connect($ftp_server);
    42. $login_result = ftp_login($conn_id, $ftp_login, $ftp_password);
    43. if (!$conn_id || !$login_result)
    44.    exit("<br>Не удалось установить соединение с FTP сервером!\nПопытка подключения к серверу $ftp_server!");
    45. else
    46.    echo "Установлено соединение с FTP сервером $ftp_server<br />";
    47. do_upload($local_dir);
    48. ftp_close($conn_id);
    49. }
    50. }
    51. ?>
     
  2. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Млин неудобно разбирать коды без подсветки!
     
  3. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    Сейчас подсвечено!
     
  4. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Может
    $ftptypelist = $_POST['ftptype']?
     
  5. gun15

    gun15 Активный пользователь

    С нами с:
    24 ноя 2008
    Сообщения:
    34
    Симпатии:
    0
    ну да я просто забыл! в коде то все правильно но если не цепляется к фтп в списке цикл прекращается!! надо чтобы просто ошибку вывел и продолжил дальше!
     
  6. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    1. Вынести описание функции do_upload из цикла.
    2. Заменить exit на echo и добавить после else фигурные скобки:
    PHP:
    1. <?
    2. ......
    3. $conn_id = ftp_connect($ftp_server);
    4. $login_result = ftp_login($conn_id, $ftp_login, $ftp_password);
    5. if (!$conn_id || !$login_result)
    6.    echo("<br>Не удалось установить соединение с FTP сервером!\nПопытка подключения к серверу $ftp_server!");
    7. else {
    8.    echo "Установлено соединение с FTP сервером $ftp_server<br />";
    9. do_upload($local_dir);
    10. ftp_close($conn_id);
    11. }
    12.  
    13. ?>