ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

FTP Indexer Class by Sharky
  #1  
Старый 12.09.2009, 22:57
Аватар для Sharky
Sharky
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
Провел на форуме:
3424739

Репутация: 921


Отправить сообщение для Sharky с помощью ICQ
По умолчанию FTP Indexer Class by Sharky

FTP Indexer Class by Sharky

Описание:
Не так давно со мной случилось ужасное событие - я остался без интернета. И при поиске чего либо приходилось обходиться пользовательскими фтп в локалке. Руками это было делать неудобно, так и родилась идея индексировать файлы на фтп и потом удобно всё это искать. Собственно для этого и написан, данный мини-класс. Также можно использовать как основу для поиска файлов, допустим, в фтп ифреймере.

Функции (и примеры использования):

1. Подключение и авторизация

PHP код:
#Сиснтаксис
$ftpic = new FtpIC([сервер], [порт], [таймаут], [логин], [пароль], [Отображение ошибок]);

#Пример 
$ftpic = new FtpIC("example.com"2110"Anonymous""12345"true); 
Значения по умолчанию:

[порт] - 21
[таймаут] - 10 (в секундах)
[логин] - Anonymous
[отображение ошибок] - true

Ответы:

В случае удачного подключения и авторизации возвращает TRUE.

При неудачном подключении возвращает FALSE и, если влючено отображение ошибок выводит "Истекло время подключения."

При неудачной авторизации возвращает FALSE и, если влючено отображение ошибок выводит "Неверный логин или пароль.".

2. Закрытие соединения

PHP код:
#Пример

$ftpic->disconnect(); 
Ответы:

При удачном разрыве соединения возвращает TRUE.

Если не удалось закрыть подключение, то возвращает FALSE и, если включено отображение ошибок выводит "Не удалось закрыть подключение.".

3. Древовидная структура файлов и папок.

PHP код:
#Синтаксис
$ftpic->tree([корневая папка], [глубина построения]);
#Пример
$ftpic->tree("/www/"2); //слэш вконце обязателен для корректной работы 
Значения по умолчанию:

[корневая папка] - /
[глубина построения] - 0

Ответы:

В случае успех возвращается массив со структурой файлов и папок фтп. Содержимое также делится на два подмассива [dir] и [file]

PHP код:
#Пример ответа
[stats] => Array
                (
                    [
file] => Array
                        (
                            [
0] => webalizer.example.com.txt
                            
[1] => webalizer.site.com.txt
                            
[2] => edyvobshe.net.txt
                        
)
 
                ) 
Если не удалось получить список файлов с фтп возвращается FALSE и, если включено отображение ошибок выводит "Не удалось получить содержимое папки.".

4. Поиск файлов

PHP код:
#Синтаксис
$ftpic->find([объект поиска], [корневая папка]);
#Пример
$ftpic->find("index""/"); //поиск всех в фалов в имени которых встречается index 
Значения по умолчанию:
[корневая папка] - /

Ответы:
В случае удачи возвращается массив с полным путем до файла от заданного корня.
PHP код:
#Пример
$ftpic->find("webalizer""/");
#вернёт
 
Array
(
    [
0] => /examlpe.com/webalizer/webalizer.current
    
[1] => /examlpe.com/webalizer/webalizer.hist
    
[2] => /stats/webalizer.examlpe.com.txt

Source:

PHP код:
<?php
#FTP Indexer Class by Sharky
class FtpIC {
    
    function 
FtpIC($ftp_server$port 21$timeout 10$ftp_user 'Anonymous'$ftp_pass '12345'$display_errors true) {
        
error_reporting );
        
set_time_limit );
        
$this->sock ftp_connect $ftp_server$port$timeout );
        if (! 
$this->sock) {
            if (
$display_errors == true)
                
$this->display_error );
            return 
false;
        } elseif (! 
ftp_login $this->sock$ftp_user$ftp_pass )) {
            if (
$display_errors == true)
                
$this->display_error );
            return 
false;
        } else {
            
ftp_pasv $this->socktrue );
            return 
true;
        }
    }
    
    function 
disconnect() {
        
        if (
is_resource $this->sock ) == true) {
            
ftp_close $this->sock );
            return 
true;
        } else {
            if (
$display_errors == true)
                
$this->display_error );
            return 
false;
        }
    }
    
    function 
tree($dir '/'$gl 0) {
        
$contents ftp_rawlist $this->sock$dir );
        if (! 
$contents) {
            if (
$display_errors == true)
                
$this->display_error );
            return 
false;
        } else {
            foreach ( 
$contents as $i ) {
                
$explode preg_split "/[\s]+/"$i);
                if (
substr $explode [0], 0) == "d") {
                    if (
$gl == 0) {
                        
$result ['dir'] [$explode [8]] = $explode [8];
                    } else {
                        
$result ['dir'] [$explode [8]] = $this->tree $dir "/" $explode [8], $gl );
                    }
                } else {
                    
$result ['file'] [] = $explode [8];
                }
            }
            return 
$result;
        }
    }
    
    function 
find($obj$dir '/') {
        
$lll $this->tree $dir);
        
$keys array_keys $lll ['dir'] );
        foreach ( 
$keys as $p ) {
            
$res $this->find $obj$dir $p "/" );
            if (
sizeof $res ) > 0) {
                foreach ( 
$res as $it ) {
                    
$result [] = $it;
                }
            }
        }
        
        foreach ( 
$lll ['file'] as $i ) {
            if (
strstr $i$obj )) {
                
$result [] = $dir $i;
            }
        }
        return 
$result;
    }
    
    function 
display_error($error_num) {
        
$error [0] = 'Истекло время подключения.';
        
$error [1] = 'Неверный логин или пароль.';
        
$error [2] = 'Не удалось закрыть подключение.';
        
$error [3] = 'Не удалось получить содержимое папки.';
        echo 
'<html>
<head>
<meta http-equiv="Content-Type" content="text/htm; charset=windows-1251">
<style type="text/css">
body {
    background-color: #fff;
    margin: 40px;
    font-family: Lucida Grande, Verdana, Sans-serif;
    font-size: 12px;
    color: #4F5155;
}

h1 {
    color: #444;
    background-color: transparent;
    border-bottom: 1px solid #D0D0D0;
    font-size: 16px;
    font-weight: bold;
    margin: 24px 0 2px 0;
    padding: 5px 0 6px 0;
}

code {
    font-family: Monaco, Verdana, Sans-serif;
    font-size: 12px;
    background-color: #f9f9f9;
    border: 1px solid #D0D0D0;
    color: #002166;
    display: block;
    margin: 14px 0 14px 0;
    padding: 12px 10px 12px 10px;
}
</style>
</head>
<body>
<h1>Ошибка</h1>
<code>' 
$error [$error_num] . '</code>
</body>
</html>
'
;
    }

}
#with love by Sharky
#С пожертвованиями на корм программисту можно обращаться сюда http://forum.antichat.ru/member.php?u=24005
?>
Или скачать архивом:

WebFile.ru
Rapidshare.com
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОДАЮ FTP, PHP, без PHP, MDML, Directmailer, PR4-7 Sprutnet Разное - Покупка, продажа, обмен 33 07.02.2010 22:13
Общие сведения о Ftp уязвимостях. ReVOLVeR Чужие Статьи 0 15.09.2006 19:27
FTP Indexer cardons С/С++, C#, Delphi, .NET, Asm 1 05.12.2005 10:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ