Вход Регистрация
* -=(C)DRU987=- (Dev)

Сканер FTP или поиск по FTP-серверу

  1. //Конфигурационный файл config.php
  2.  
  3. // Адрес FTP-сервера
  4. $ftp_server = "ftp.server.ru";
  5. // Порт соединения
  6. $ftp_port = 21;
  7. // Пользователь
  8. $ftp_user = "softtime";
  9. // Пароль
  10. $ftp_password = "";
  11. // Версия Web-приложение
  12. $version = "1.0.0";
  13. // Устанавливаем время исполнения скрипта 120 с
  14. // Пытаемся установить соединение с FTP-сервером
  15. $link = ftp_connect($ftp_server);
  16. if(!$link) puterror("К сожалению, не удаётся установить соединение с FTP-сервером $ftp_server");
  17. // Осуществляем регистрацию на сервере
  18. $login = ftp_login($link, $ftp_user, $ftp_password);
  19. //$login = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  20. if(!$login) puterror("К сожалению, не удаётся зарегистрироваться на сервере");
  21. // Небольшая вспомогательная функция, которая выводит сообщение об ошибке
  22. // в окно браузера
  23. function puterror($message)
  24. {
  25. echo "<center><p class=help>$message</p>";
  26. exit();
  27. }
  28.  
  29.  
  30.  
  31.  
  32.  
  33. // FTP-сканер index.php
  34.  
  35.  
  36. // Устанавливаем соединение с FTP-сервером
  37. require_once("config.php");
  38. // Директория на сервере
  39. // $dir = "/html/forum/";
  40. $dir = "/";
  41. // Запускаем сканер
  42. scan_ftp($link, $dir);
  43. // Закрываем соединение с FTP-сервером
  44. ftp_close($link);
  45. // Результат находится в глобальном массиве $filename
  46. echo "<pre>";
  47. print_r($filename);
  48. echo "</pre>";
  49. ////////////////////////////////////////////////////////
  50. // Рекурсивная функция спуска по дереву
  51. // директорий
  52. ////////////////////////////////////////////////////////
  53. function scan_ftp($link, $dir)
  54. {
  55. GLOBAL $filename;
  56. // Получаем все файлы корневого каталога
  57. // Дескриптор соединения $link получен в config.php
  58. $file_list = ftp_rawlist($link, $dir);
  59. // Выводим содержимое каталога
  60. foreach($file_list as $file)
  61. {
  62. // Разбиваем строку по пробельным символам
  63. list($acc,
  64. $bloks,
  65. $group,
  66. $user,
  67. $size,
  68. $month,
  69. $day,
  70. $year,
  71. $file) = preg_split("/[\s]+/", $file);
  72. // Если файл начинается с точки - игнорируем его
  73. if(substr($file, 0, 1) == '.') continue;
  74. // Определяем является ли объект директорией
  75. if(substr($acc, 0, 1) == 'd')
  76. {
  77. // Директория
  78. scan_ftp($link, $dir.$file."/");
  79. }
  80. // Определяем является ли объект файлом
  81. if(substr($acc, 0, 1) == '-')
  82. {
  83. // Файл
  84. $filename[] = $file." - ".$dir.$file;
  85. }
  86. }
  87. }
» Описание: Часто требуется организовать поиск по FTP-серверу. Для того чтобы поиск осуществлялся быстро, FTP-сервер сканируют и помещают названия всех файлов и пути к ним в один файл или таблицу базы данных. При помощи такого списка осуществлять поиск гораздо проще, нежели сканировать каждый раз весь хост. С другой стороны вам может быть интересно будет просканировать свой собственный FTP-хост чтобы получить представление о его организации. Это позволит оптимизировать или реорганизовать его структуру.

Создадим небольшое Web-приложение, состоящее из двух файлов: config.php (конфигурационный файл, содержащий параметры соединения с FTP-сервером и осуществляющий установку соединения) и index.php, который представляет собой непосредственно FTP-сканер.
» Время добавления: 4 Янв 2015 в 17:40
» Посмотров: 799
» textarea
» Рейтинг: [+0 | -0]
Комментарии [0]
Онлайн: 5
Реклама
Игры между пользователями