Advertisement
MakStashkevich

Работа по FTP протоколу на PHP

Nov 8th, 2016
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.38 KB | None | 0 0
  1.   $dir = "newdir";
  2.   $url = "http://ftpenabled.server.com/ftp.php?dir=$dir";
  3.  
  4.       if(!file_exists("/var/www/html/testdomain/public_html/$dir")) {
  5.  
  6.         $fh = fopen($url,"r");
  7.         while(!feof($fh))
  8.         {
  9.             set_time_limit(10);
  10.             $var = fgets($fh, 1024);
  11.             print($var);
  12.         }
  13.         fclose($fh);
  14.     }
  15. }
  16. ?>
  17.  
  18.  
  19. <?php
  20.  
  21. $dir = $HTTP_GET_VARS["dir"];
  22.  
  23. $ftp_ip          = "ftp.this.com";
  24. $ftp_username = "username";
  25. $ftp_password = "password";
  26.  
  27. if($ftp=ftp_connect($ftp_ip))
  28. {
  29.     if(ftp_login($ftp,$ftp_username,$ftp_password))
  30.     {
  31.         ftp_pasv( $ftp, 1);
  32.  
  33.         ftp_chdir($ftp,"/public_html/");
  34.  
  35.         if(!ftp_chdir($ftp,$dir))
  36.         {
  37.             ftp_mkdir($ftp,$dir);
  38.             echo("Директория $dir успешно создана");
  39.         }
  40.     }
  41.     ftp_close($ftp);
  42. }
  43.  
  44.  
  45. ///////////////////// ИНСТРУКЦИЯ /////////////////////
  46. Работа с FTP начинается с открытия "потока" (stream) и делается это функцией "ftp_connect()" (аналогично функции fopen в работе с файлами).
  47.  
  48. ftp_connect("имя хоста","порт","timeout");
  49.  
  50. Вместо "имя хоста" пропишите имя сайта, к которому вы хотите подключиться. В параметре "порт" укажите ftp-порт удаленного сервера (обычно "21"), а в "timeout" - на какое время (в секундах) вы хотите открыть соединение. Результат выполнения функции нужно присвоить какой-либо переменной, в нашем примере это переменная $open.
  51.  
  52. Пример:
  53. $open = ftp_connect("ftp.server.com", 21, 30);
  54.  
  55. Для входа по вашему аккаунту на сервере воспользуйтесь функцией "ftp_login()".
  56. Пример:
  57. ftp_login($open, "your_username", "your_password");
  58.  
  59. А лучше это сделать следующим образом:
  60. if (!ftp_login($open, "your_username", "your_password")) exit("Не могу соединиться");
  61.  
  62. Параметр "your_username" должен содержать ваш username для входа, а "your_password" - соответственно, ваш пароль. Переменная $open является идентификатором соединения с ftp узлом, к которому вы подключились с помошью "ftp_connect".
  63. Все. Если вышеуказанный код не выдал вам никаких ошибок, значит вы успешно подключились к ftp узлу.
  64.  
  65. А теперь поговорим о функциях работы с FTP:
  66. Функция ftp_mkdir() создаёт директорию, пример:
  67. ftp_mkdir($open,"test"); //Создали папку "test".
  68.  
  69. Функция ftp_rmdir удалит папку:
  70. ftp_rmdir($open,"test"); //Удалили ранее созданную нами папку папку "test".
  71.  
  72. Переименовать файл можно функцией "ftp_rename()":
  73. ftp_rename($open,"test.txt","ok_test.txt");
  74. Мы переименовали "test.txt" в "ok_test.txt" , вместо "test.txt" может быть любой другой файл.
  75.  
  76. Просмотреть содержимое вашего каталога можно следующим образом:
  77. $site = ftp_nlist($open,"");
  78. $d = 5;
  79. for ($i = 0; $i < $d; $i++) echo $site[$i];
  80.  
  81. Функция "ftp_nlist()" возвращает один файл из вашего каталога , если вам нужно просмотреть все файлы, то ее сдедует использовать в цикле, как сделано выше.
  82.  
  83. Функция "ftp_size()" возвращает размер файла, либо значение "-1" в случае неудачи:
  84. echo ftp_size($open, "test.txt");
  85.  
  86. Вам может понадобится узнать дату последнего изменения файла . Это осуществимо с помощью функции ftp_mdtm (учтите, что время возвращается в UNIX-формате):
  87. $mod = ftp_mdtm($open,"test.txt");
  88. echo $mod;
  89.  
  90. Заметьте, функция не работает с директориями. Для удаления файла воспользуйтесь функцией ftp_delete(), например:
  91. ftp_delete($open,"test.txt");
  92.  
  93. Закрывается же соединение функцией "ftp_close()".
  94. ftp_close($open);
  95.  
  96. Эта функция аналогична функции fclose() при работе с файлами, в нашем примере идентификатор соединения находится в переменной "$open".
  97.  
  98. Теперь просто фрагмент бессмысленного кода :
  99. ftp_connect("ftp.hot.ee","21","100");
  100. if(!ftp_login($open,"prosto_user","ahahaha"))
  101.     exit("Не могу соединиться");
  102. mkdir($open,"test"); //Создали директорию
  103. rmdir($open,"test"); //Удалили директорию
  104. rename($open,"test.txt","test_i_eche_raz_test.txt");
  105.                      //Переименовали файл
  106. ftp_close($open);    //Закрыли поток
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement