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

Часто требуется организовать поиск по FTP-серверу. Для того чтобы поиск осуществлялся быстро, FTP-сервер сканируют и помещают названия всех файлов и пути к ним в один файл или таблицу базы данных. При помощи такого списка осуществлять поиск гораздо проще, нежели сканировать каждый раз весь хост. С другой стороны вам может быть интересно будет просканировать свой собственный FTP-хост чтобы получить представление о его организации. Это позволит оптимизировать или реорганизовать его структуру.

Создадим небольшое Web-приложение, состоящее из двух файлов: config.php (конфигурационный файл, содержащий параметры соединения с FTP-сервером и осуществляющий установку соединения) и index.php, который представляет собой непосредственно FTP-сканер.

Конфигурационный файл config.php


<?php 

  
// Адрес FTP-сервера 

  
$ftp_server "ftp.server.ru"

  
// Порт соединения 

  
$ftp_port 21

  
// Пользователь 

  
$ftp_user "softtime"

  
// Пароль 

  
$ftp_password ""

  
// Версия Web-приложение 

  
$version "1.0.0"

  
// Устанавливаем время исполнения скрипта 120 с 

  
set_time_limit(120); 

  
// Пытаемся установить соединение с FTP-сервером 

  
$link ftp_connect($ftp_server); 

  if(!
$linkputerror("К сожалению, не удаётся установить соединение с FTP-сервером $ftp_server"); 

  
// Осуществляем регистрацию на сервере 

  
$login ftp_login($link$ftp_user$ftp_password); 

  
//$login = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

  
if(!$loginputerror("К сожалению, не удаётся зарегистрироваться на сервере"); 

  
// Небольшая вспомогательная функция, которая выводит сообщение об ошибке 

  // в окно браузера 

  
function puterror($message

  { 

    echo 
"<center><p class=help>$message</p>"

    exit(); 

  } 

?>


Теперь, когда соединение установлено, можно осущестить рекурсивный спуск, по дереву директорий FTP-каталога

FTP-сканер index.php


<?php 

  
// Устанавливаем соединение с FTP-сервером 

  
require_once("config.php"); 

  
// Директория на сервере 

  // $dir = "/html/forum/"; 

  
$dir "/"

  
// Запускаем сканер 

  
scan_ftp($link$dir); 

  
// Закрываем соединение с FTP-сервером 

  
ftp_close($link); 

  
// Результат находится в глобальном массиве $filename 

  
echo "<pre>"

  
print_r($filename); 

  echo 
"</pre>"

  
//////////////////////////////////////////////////////// 

  // Рекурсивная функция спуска по дереву 

  // директорий 

  //////////////////////////////////////////////////////// 

  
function scan_ftp($link$dir

  { 

    GLOBAL 
$filename

    
// Получаем все файлы корневого каталога 

    // Дескриптор соединения $link получен в config.php 

    
$file_list ftp_rawlist($link$dir); 

    
// Выводим содержимое каталога 

    
foreach($file_list as $file

    { 

      
// Разбиваем строку по пробельным символам 

      
list($acc

           
$bloks

           
$group

           
$user

           
$size

           
$month

           
$day

           
$year

           
$file) = preg_split("/[\s]+/"$file); 

      
// Если файл начинается с точки - игнорируем его 

      
if(substr($file01) == '.') continue; 

      
// Определяем является ли объект директорией 

      
if(substr($acc01) == 'd'

      { 

        
// Директория 

        
scan_ftp($link$dir.$file."/"); 

      } 

      
// Определяем является ли объект файлом 

      
if(substr($acc01) == '-'

      { 

        
// Файл 

        
$filename[] = $file." - ".$dir.$file

      } 

    } 

  } 

?>

Результат помещается в глобальный массив $filename - поместить содержимое которого в файл или таблицу MySQL не составит труда.

Комментарии
Добавить новый Поиск
Оставить комментарий
Имя:
Email:
 
Веб-сайт:
Тема:
UBB-Код:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Пожалуйста, введите проверочный код, который Вы видите на картинке.
Powered by !JoomlaComment 3.26

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Кто онлайн

Сейчас 55 гостей онлайн