Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Определение файлов и папок FTP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Tox
Отправлено: 28 Февраля, 2012 - 11:38:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




C помощью php.net собрал такой вот скрипт:
PHP:
скопировать код в буфер обмена
  1. function ftp_is_dir($dir) {
  2.   global $ftp_connect;
  3.   if (ftp_chdir($ftp_connect, $dir)) {
  4.     ftp_chdir($ftp_connect, '..');
  5.     return true;
  6.   } else {
  7.     return false;
  8.   }
  9. }
  10.                
  11. $ftp_server = "host";
  12. $ftp_user = "username";
  13. $ftp_pass = "pass";
  14.  
  15. // установить соединение или выйти
  16. $conn_id = ftp_connect($ftp_server) or die("Не удалось установить соединение с $ftp_server");
  17.  
  18. // попытка входа
  19. if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
  20.     echo "Произведен вход на $ftp_server под именем $ftp_user\n<br>";
  21.         //echo ftp_pwd($conn_id); // текущая директория
  22.         $ftp_nlist = ftp_nlist($conn_id, ".");
  23.        
  24.  
  25.        
  26.         sort($ftp_nlist);
  27. foreach ($ftp_nlist as $v) {
  28.  
  29. //1. ftp_is_dir() is true => directory
  30.   if (ftp_is_dir($v)) {
  31.  
  32. //output as [ directory ]
  33.       echo "[ " . $v . " ]<br />\n";
  34.   }
  35. }
  36. foreach ($ftp_nlist as $v) {
  37.  
  38. //2. ftp_is_dir() is false => file
  39.   if (!ftp_is_dir($v)) {
  40.  
  41. //output as file
  42.       echo "" . $v . "<br />\n";
  43.   }
  44. }
  45.        
  46.        
  47.        
  48.        
  49. } else {
  50.     echo "Не удалось войти под именем $ftp_user\n";
  51. }
  52.  
  53. // close the connection
  54. ftp_close($conn_id);

Только вот ошибку выдает - Warning: ftp_chdir() expects parameter 1 to be resource, null given in .. in line n.
Я так понял, что ftp_chdir() тут не поможет. Есть ли еще какой-нибудь способ определения того, что лежит в фолдере?


-----
In Console We Trust. Code hard. Or die.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Февраля, 2012 - 11:46:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Что такое $ftp_connect и откуда он, по вашему, должен браться?


-----
PostgreSQL DBA
 
 Top
Tox
Отправлено: 28 Февраля, 2012 - 11:51:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




простите, забыл заменить все conn_id на $ftp_connect.
Папки выводиться стали, но и ошибки - Warning: ftp_chdir() [function.ftp-chdir]: FILENAME: No such file or directory in .. on line n


-----
In Console We Trust. Code hard. Or die.
 
 Top
Panoptik
Отправлено: 28 Февраля, 2012 - 12:05:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




Цитата:
if (ftp_chdir($ftp_connect, $dir)) {
не совсем удачная проверка на директорию. при том вы меняете ее без вообще какой либо надобности.

самый плохой вариант - поставить игнор ошибок перед операцией if (@ftp_chdir($ftp_connect, $dir)) {
про более лучшие варианты почитайте в документации - как правильно определить папку на фтп


-----
Just do it
 
 Top
Tox
Отправлено: 28 Февраля, 2012 - 12:24:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




Вот, если кому нужно
PHP:
скопировать код в буфер обмена
  1. $list = ftp_rawlist($ftp_connect, '/');
  2.  
  3.  
  4. foreach ($list as $current) {
  5.     $split = preg_split("[ ]", $current, 9, PREG_SPLIT_NO_EMPTY);
  6.     if ($split[0] != "total") {
  7.         $parsed[]['isdir']          = $split[0]{0} === "d"; //Если true значит дериктория
  8.         $parsed[]['perms']          = $split[0];
  9.         $parsed[]['number']            = $split[1];
  10.         $parsed[]['owner']          = $split[2];
  11.         $parsed[]['group']          = $split[3];
  12.         $parsed[]['size']            = $split[4];
  13.         $parsed[]['month']          = $split[5];
  14.         $parsed[]['day']            = $split[6];
  15.         $parsed[]['time/year']         = $split[7];
  16.         $parsed[]['name']            = $split[8];
  17.         if($split[0]{0} === "d"){
  18.             echo "<b>".$split[8]."</b><br>";
  19.         }
  20.                 else { echo $split[8]."<BR>"; }
  21.     }
  22. }


-----
In Console We Trust. Code hard. Or die.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB