FTP сессия средствами PHP.
Предлагаю написать сценарий, автоматизирующий залив файлов на FTP сервер. Исходные данные: имя сервера, логин и пароль FTP-пользователя, путь к директории на FTP сервере, а так же список файлов, которые необходимо залить на сервер (пусть это будет мини-сайт, состоящий из 3-х файлов: index.html, image.gif, style.css).
Итак, первое, что необходимо сделать – соединиться с FTP сервером (ну, например, используем многострадальный narod.ru). Регистрируем аккаунт, и получаем данные для FTP. Например, я зарегистрировал такой:
Хост: ftp.narod.ru
Логин: ftp-php
Пароль: ftpphp
Начинаем FTP-сессию:
<?php
// переменные для логина
$ftphost = ‘ftp.narod.ru’;$user = ‘ftp-php’;
$password = ‘ftpphp’;// открываем FTP соединение, в случае неудачи останавливаем работу сценария
$fp = ftp_connect($ftphost) or die (‘Не могу соедениться c FTP сервером’);// логинимся
$connect = ftp_login($fp, $user, $password);// проверяем успешность входа
if($connect) echo “OK – мы вошли как $user <br>”;
else
echo ‘Ошибка входа на FTP сервер’;// закрываем FTP соединение
ftp_close($fp);
?>
Если все ОК – мы вошли на FTP сервер. Просто зашли… и закрыли соединение. ![]()
Все, что будем делать далее – будем писать до ftp_close()…
Во-первых, давайте создадим на нашем FTP сервере директорию /images и переместимся внутрь созданной нами папки… в нее мы будем помещать графические файлы…
ftp_mkdir ($fp, ‘images’);
ftp_chdir ($fp, ‘images’);
… Мы создали на FTP сервере папку ./images и вошли в созданную папку. Давайте зальем в нее какой-либо файл. (пусть это будет файл image.gif, который лежит в директории исполняемого скрипта – чтоб долго не искать
)
Для начала включим пассивный режим (рекомендую это делать… В пассивном передача данных инициируется клиентом, а не сервером.)
ftp_pasv ( $fp , TRUE);
Затем заливаем файл image.gif (используем бинарный режим)
$image = fopen(‘image.gif’, ‘r’); // открываем нужный файл для чтения
$loadfile = ftp_fput ( $fp, ‘image.gif’ , $image , FTP_BINARY ); // передаем его на FTP
fclose($image); // закрываем файл// проверяем успешность заливки
if($loadfile)
echo ‘Файл Успешно загружен <br>’;
else
echo ‘Ошибка загрузки файла <br>’;
Далее – вернемся в корень и зальем еще 2 файла (index.html и style.css)
ftp_cdup($fp); // Переходим в родительскую директорию
$indexfile = fopen(‘index.html’, ‘r’); // открываем нужный файл для чтения
$loadfile = ftp_fput ( $fp, ‘index.html’ , $indexfile , FTP_ASCII ); // передаем его на FTP
fclose($indexfile); // закрываем файл$stylefile = fopen(‘style.css’, ‘r’); // открываем нужный файл для чтения
$loadfile = ftp_fput ( $fp, ‘style.css’ , $stylefile , FTP_ASCII ); // передаем его на FTP
fclose($stylefile); // закрываем файл
Проверку успешности загрузки добавьте сами…
Обратите внимание – эти 2 файла мы загружали в режиме ASCII. а не в бинарном режиме…
Итак, мы научились:
- соединиться с FTP сервером и авторизоваться на нем.
- создать директорию на FTP сервере
- залить файлы в нужные директории на FTP сервере
- закрыть соединение
В нашем сценарии были использованы функции:
- ftp_connect – Устанавливает соединение с FTP сервером
- ftp_login – Выполняет вход на FTP сервер
- ftp_mkdir — Создаёт директорию на FTP сервере
- ftp_chdir – Изменяет текущую директорию на FTP сервере
- ftp_pasv – Включает или выключает пассивный режим
- ftp_fput – Загружает предварительно открытый файл на FTP сервер
- ftp_cdup – Переходит в родительскую директорию
- ftp_close – Закрывает соединение с FTP сервером
В качестве “домашнего задания” предлагаю объеденить этот урок с предыдущим
(“Пишем простейший ПАРСЕР контента на PHP“)
и написать сценарий, который будет парсить контент с удаленного сайта, сохранять его в локальный файл, и затем заливать на удаленный FTP сервер… (ничего не напоминает?
)
Как всегда жду ваших отзывов и предложений…





Добавить комментарий
Вы должны войти