| Здраствуйте.
Я тут не давно задавал вопрос - (Помощь с FTP), где хотел сделать навигацию по фтп-серверу.
Но так толком, ничего не получилось сделать, тема заглохла и я отступился.
И вот вчера, наконец-то, пришла долгожданая книга "PHP5. Практика создания Web - сайтов".
Я её быстренько пролестал, поглядел (авторам хочу сказать большое спасибо, отличная толстая книга.) и увидел собственно, как написать ftp-manager. И вот я решил, снова поднять эту тему, потому что с ftp-manager, у меня тоже возникли проблемы. (Скрипт не стал выкладывать, потому что он приличной длинны, и у вас он есть, но если нужно вы скажите, я опубликую).
Для начала я начал тестировать ftp-manager. Скачал с диска скрипт, подправил его (указал нужный ip и т.п.), запустил, работает. Но сразу же заметил, что скрипт выдает не полные имена файлов и директорий. Если есть, например каталоги:
Фильмы 1
Фильмы 2
Другие Фильмы.
результат будет:
Фильмы
Фильмы
Другие
И это понятно почему так происходит:
<?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)
// код
?>
|
preg_split() разбивает по "пробельным" символам, поэтому и получается вместо, например (название каталога):
Всё новое о ПО
выводит:
Всё
Соответственно и каталог не будет работать (такого каталога нет на сервере)
Я конечно, почесав репу и как бы всё правильно сделать, ничего интересного не придумал, кроме как:
добавить рег.выр.
отказатся от одной и той же переменой ($file) в foreach и в list, заменив в цикле $file на $f - нужно для правильной работы рег.выр.
<?php
// код
$file_list = ftp_rawlist($link, $dir);
// код
foreach($file_list as $f) { // заменили $file на $f
list($acc,
$bloks,
$group,
$user,
$size,
$month,
$day,
$year,
$file) = preg_split("/[\s]+/", $f) // тут заменили $file на $f
preg_match("/\b$file\b.*/", $f, $matches);
$file = $matches[0];
?>
|
Вот теперь все нормально, выдает полные названия каталогов и файлов, но зараза, не может почему то правильно их передать. Так, например, каталог (Фильмы 2) отображается правильно, а путь передается как (Фильмы), о чем сверху и пишется:
Текущая папка - ftp://192.168.1.135/Фильмы
Вместо:
Текущая папка - ftp://192.168.1.135/Фильмы 2
Просьба, авторов, или кого-нибудь из вашей студии, подправить ftp-manager
http://www.softtime.ru/info/ftpmanager.php
А я бы с радостью его скачал.
Извените за столь большую тему.
Спасибо. | |