|
автор: global_help (01.08.2005 в 11:49) |
|
| http://www.softtime.ru/forum/answer.php?id_forum=1&id_theme=5823&id_post=34052
Спасибо пример очень довольно таки хороший.
Есть просьба(прошэние).
Стуртура 1 таблицы такова:
id - уникальный идентификатор
name - имя FTP_сервера
url (url)FTP_сервера
Структура 2 таблицы:
id - уникальный идентификатор
url - адресс какого либо файла, полученного при сканировании
mass - вес файла
who - автор (кто добавил файл)
dats - дата добавления
ftp_name - с какого FTP, взят файл(тоесть тут будет стоять id ftp_сервера с 1 таблицы).
Помогите организовать пожалуйста | |
|
|
|
|
|
|
|
для: global_help
(01.08.2005 в 11:49)
| | Так, а где мы автора (who) будем брать? | |
|
|
|
|
автор: global_help (01.08.2005 в 15:33) |
|
|
для: cheops
(01.08.2005 в 13:36)
| | Ну я думал, что можно выдрать. Допустим проиндексирован файл - test.exe, автор - тот кто залил на фтп этот файл, что-то вроде root
Ну раз нельзя, то так и быть будем без автора.
Ну так что помошь Ваша еще в силе?
FTP-сканера еще нету в рунете
--------------------------------------------
ПОЖАЛУЙСТА | |
|
|
|
|
|
|
|
для: global_help
(01.08.2005 в 15:33)
| | >FTP-сканера еще нету в рунете
Я склоняюсь к версии, что его уже нету :))) Ведь зенит развития FTP был почти 15 лет назад, этот протокол до сих пор пользуется популярностью, но по сравнению с Web, это очень уж малая часть Интернет. | |
|
|
|
|
|
|
|
для: global_help
(01.08.2005 в 11:49)
| | Необходимо немного модифицировать сканер
<?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($file, 0, 1) == '.') continue;
// Определяем является ли объект директорией
if(substr($acc, 0, 1) == 'd')
{
// Директория
scan_ftp($link, $dir.$file."/");
}
// Определяем является ли объект файлом
if(substr($acc, 0, 1) == '-')
{
// Файл
$filename[$dir.$file]['name'] = $file;
$filename[$dir.$file]['size'] = $size;
$filename[$dir.$file]['month'] = $month;
$filename[$dir.$file]['day'] = $day;
$filename[$dir.$file]['year'] = $year;
}
}
}
?>
|
Теперь глобальный массив $filename является двумерным, тогда код, формирующий многострочный SQL-запрос INSERT для вставки данных во вторую таблицу может вылядеть следующим образом
<?php
$query = "INSERT INTO tbl VALUES ";
foreach($filename as $key => $file)
{
$query .= "(NULL,
'http://www.mysite.ru/".$key."',
'".$file['size']."',
'who',
'".$file['year'].".".$file['month'].".".$file['year']."',1),";
}
// Удаляем последнюю запятую в запросе
$query = substr($query, 0, strlen($query) - 1);
// Выводим запрос - и смотрим нет ли в нём ошибок
echo $query."<br><br>";
// Выполняем запрос
if(!mysql_query($query))
{
exit(mysql_error());
}
?>
|
Перед выполнением, SQL-запрос следует вывести и посмотреть на предмет ошибок. Ну и вместо 1 подставить реальный внешний ключ для FTP-сервера из первой таблицы. | |
|
|
|