HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 921


По умолчанию 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
 
Ответить с цитированием

  #2  
Старый 12.09.2009, 23:02
+casper+
Banned
Регистрация: 27.06.2009
Сообщений: 200
С нами: 8880439

Репутация: 68
По умолчанию

Молодец, хорошая весчь. Надо будет испытать=)
 
Ответить с цитированием

  #3  
Старый 13.09.2009, 07:00
ReduKToR
Постоянный
Регистрация: 05.01.2009
Сообщений: 684
С нами: 9130007

Репутация: 485


По умолчанию

Вот это однозначно пригодится!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОДАЮ FTP, PHP, без PHP, MDML, Directmailer, PR4-7 Sprutnet Разное - Покупка, продажа, обмен 33 07.02.2010 22:13
FTP Indexer cardons С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 1 05.12.2005 10:25



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


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




ANTICHAT ™ © 2001- Antichat Kft.