(PHP) Как работать с FTP?

Bubmazas
Дата: 13.09.2006 18:53:06
Прошу помощи в написании скрипта!!!
Задача проста, но как это сделать мне пока не ясно...

Есть FTP сервер. Туда выкладывают файлы прямо в корневую директорию, без суб-директорий. Нужен такой скрипт, который будет сканировать всё что есть в директории и отображать названия (плюс ссылки на них) на странице сайта. То есть я просто кидаю файл на FTP сервер и он появляется на странице сайта (или записывается в MySQL).

Помогите пожалстаааа!! Я мучалась два дня но ничего у меня не вышло((
*
Дата: 13.09.2006 23:38:06
Исходя из задачи - работать с FTP вообще ненадо - работайте с файловой системой сервера.
http://php.net/filesystem
Гутманс
Дата: 14.09.2006 10:01:10
Bubmazas
Прошу помощи в написании скрипта!!!
Задача проста, но как это сделать мне пока не ясно...

Есть FTP сервер. Туда выкладывают файлы прямо в корневую директорию, без суб-директорий. Нужен такой скрипт, который будет сканировать всё что есть в директории и отображать названия (плюс ссылки на них) на странице сайта. То есть я просто кидаю файл на FTP сервер и он появляется на странице сайта (или записывается в MySQL).

Помогите пожалстаааа!! Я мучалась два дня но ничего у меня не вышло((

функция такая ftp_nlist, а как работает почитайте сами
Anjey aka PM
Дата: 14.09.2006 12:51:06
Bubmazas
Прошу помощи в написании скрипта!!!
Задача проста, но как это сделать мне пока не ясно...

Есть FTP сервер. Туда выкладывают файлы прямо в корневую директорию, без суб-директорий. Нужен такой скрипт, который будет сканировать всё что есть в директории и отображать названия (плюс ссылки на них) на странице сайта. То есть я просто кидаю файл на FTP сервер и он появляется на странице сайта (или записывается в MySQL).

Помогите пожалстаааа!! Я мучалась два дня но ничего у меня не вышло((


вам вполне подойдет директива Apache

Options +Indexes

настроить отображение каталога можно с помощью других директив, читать тут
Bubmazas
Дата: 20.09.2006 02:10:14
Разобралась как определять файлы.
А вот как получить список директорий???
LabNIT
Дата: 20.09.2006 08:17:15
<?php 
function readd($dir) 
{ 
if ($handle = opendir($dir)) 
 { 
 while (false !== ($file = readdir($handle))) 
  { 
  if (is_dir($file) && $file != '.' && $file != '..') 
   { 
   echo $dir.'/'.$file.'<br />'; 
   } 
  } 
 closedir($handle); 
 } 
} 
$dir = dirname($_SERVER['SCRIPT_FILENAME']); 

readd($dir); 
?>

Или нужно получить еще и вложенные директории?
Bubmazas
Дата: 21.09.2006 00:17:59
Да, нужно =)
Благодарю вас, чмок!))
Bubmazas
Дата: 21.09.2006 00:25:15
Протестировала. Скрипт выдаёт полный адрес папок веб-сервера, а не FTP.
Скрипт лежит в
D:/home/htdocs/tst/

Показывает в результате все папки что находятся в одной директории со скриптом.
Нужно чтобы отображались на сайте все директории и поддиректории FTP сервера. (((
Гутманс
Дата: 21.09.2006 09:55:57
Bubmazas
Протестировала. Скрипт выдаёт полный адрес папок веб-сервера, а не FTP.
Скрипт лежит в
D:/home/htdocs/tst/

Показывает в результате все папки что находятся в одной директории со скриптом.
Нужно чтобы отображались на сайте все директории и поддиректории FTP сервера. (((

Я же вам написал уже, что есть такая функция ftp_nlist она вам вернет всё содержимое из любой папки на ftp. Ей пофигу файлы там или папки. А далее вы запускаете рекурсию и сканите все содержимое (юзая еще и эту функцию ftp_chdir) и получаете дерево каталога на ftp. Вам подогнать готовый скрипт? Этого я делать не буду. Может кто-то и выложит.
LabNIT
Дата: 21.09.2006 11:37:49
Сорри, вот для FTP:

<?
if (!isset($_GET['host'],$_GET['login'],$_GET['pass'])){
  echo "Введите данные сервера:<br>\r\n<form method='get'>\r\nАдрес: <input type='text' name='host'><br>\r\nЛогин: <input type='text' name='login'><br>\r\nПароль: <input type='text' name='pass'><br>\r\n<input type='submit' value='Connect'>";
} else{
  //----------------------------------------------------------------------------
    $connect=ftp_connect($_GET['host']) or die ("Не удалось установить соединение с сервером.");
    if (@ftp_login($connect,$_GET['login'],$_GET['pass'])){
    //----------------------------------------------------------------------------
      if (isset($_GET['folder'])&& !empty($_GET['folder'])) 
          if (ftp_chdir($connect,$_GET['folder'])) echo "Текущая директория: ".ftp_pwd($connect)."<br>\r\n"; 
          else echo "Путь $_GET[folder] не найден.<br>\r\n";
      //-----------------
      $up="/";
      $pwd=explode("/",ftp_pwd($connect));
      for ($i=1;$i<(count($pwd)-1);$i++){
        $up.=$pwd[$i]."/";
      }
      //-----------------
      echo "<a href='ftp.php?host=$_GET[host]&login=$_GET[login]&pass=$_GET[pass]&folder=/'>Вернуться в родительскую директорию</a><br>\r\n";
      echo "Листинг директории: <br>\r\n<a href='ftp.php?host=$_GET[host]&login=$_GET[login]&pass=$_GET[pass]&folder=$up'>..</a><br>\r\n";
        $nlist=ftp_nlist($connect,".");
        for ($i=0;$i<count($nlist);$i++){
          if (substr($nlist[$i],0,2)=="./") echo "<a href='ftp.php?host=$_GET[host]&login=$_GET[login]&pass=$_GET[pass]&folder=".ftp_pwd($connect)."/".substr($nlist[$i],2)."'>$nlist[$i]</a><br>\r\n";
          else echo "<a href='ftp.php?host=$_GET[host]&login=$_GET[login]&pass=$_GET[pass]&folder=".ftp_pwd($connect)."/$nlist[$i]'>$nlist[$i]</a><br>\r\n";
        }
    //----------------------------------------------------------------------------
    } else {
      echo "Не удалось войти на сервер под именем $_GET[login]";
    }
    ftp_close($connect);
  //----------------------------------------------------------------------------
}
?>

ЧТобы получить список всех поддиректорий, нужно использовать реккурсию ...