﻿
<h1 class=p1>Основные возможности PHP при работе с FTP</h1>
<table border="0" cellspacing="10">
    <tr valign="top">
        <td>
            <a class=bluelink href="#1" title="Соединение с FTP-сервером">ftp_connect()</a>&nbsp;<br>
            <a class=bluelink href="#4" title="Загрузка файлов с сервера">ftp_get()</a>&nbsp;<br>
        </td>
        <td>
            <a class=bluelink href="#2" title="Регистрация на FTP-сервере">ftp_login()</a>&nbsp;<br>
        </td>
        <td>        
            <a class=bluelink href="#3" title="Закрытие соединения">ftp_quit()</a>&nbsp;<br>        
        </td>
    </tr>
</table>
<br>
<br>

<p class=text>Протокол FTP (<i>File Transfer Protocol</i> - протокол передачи файлов) - один из старейших протоколов Интернета, предназначенный для передачи файлов между двумя хостами.</p>
<p class=text>Как правило, при работе с FTP выполняются следующие стандартные действия:</p>
<ul>
  <li>соединение с удаленным FTP-сервером</li>
  <li>регистрация на FTP-сервере</li>
  <li>загрузка файлов с сервера или на сервер</li>
  <li>закрытие соединения</li>
</ul>
<a name=1></a>
<h2 class=p1>Соединение с FTP-сервером</h2>
<p class=text>Соединение с удаленным FTP-сервером выполняется с помощью функции <b>ftp_connect</b>:</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
  <b>ftp_connect</b><em class=gr> (string</em> <b>host</b> [, <em class=gr>int</em> <b>port</b> [, <em class=gr>int</em> <b>timeout</b>]]<em class=gr>)</em>
</pre></blockquote>
<p class=text>В качестве обязательного параметра эта функция принимает имя хоста <b>host</b>, с которым необходимо установить соединение. Второй необязательный параметр <b>port</b> указывает на номер порта, через который осуществляется соединение. Если этот параметр не указан, то соединение осуществляется через порт 21, являющийся стандартным FTP-портом. Третий необязательный параметр определяет максимально время выполнения сценария (тайм-аут) и по умолчанию равен 90 секундам.</p>
<p class=prim><b><i>Соединение с удаленным FTP-сервером</i></b></p>
<blockquote><pre>
<em class=red>&lt;?</em>
  <b>$host</b><em class=gr> = </em>"ftp://ftp.server.ru"<em class=gr>;</em>
  <b>$connect</b><em class=gr> = </em><b>ftp_connect</b><em class=gr>(</em><b>$host</b><em class=gr>);</em>
  <em class=gr>if(</em><b>!$connect</b><em class=gr>)
  {
    echo(</em>"Ошибка соединения"<em class=gr>);
    exit;
  }
  else
  {
    echo(</em>"Соединение установлено"<em class=gr>);  
  }</em>
<em class=red>?&gt;</em>
</pre></blockquote>
<a name=2></a>
<h2 class=p1>Регистрация на FTP-сервере</h2>
<p class=text>После того, как соединение установлено, необходимо зарегистрироваться на сервере с определенным именем и паролем. Сделать это можно при помощи функции <b>ftp_login</b>.</p>
<p class=prim><b><i>Регистрация на FTP-сервере </i></b></p>
<blockquote><pre>
<em class=red>&lt;?</em>
  <b>$user</b><em class=gr> = </em>"maks"<em class=gr>;</em>
  <b>$password</b><em class=gr> = </em>"password"<em class=gr>;</em>
  <b>$result</b><em class=gr> = </em><b>ftp_login</b><em class=gr>(</em><b>$connect</b>, <b>$user</b>, <b>$password</b><em class=gr>);</em>
<em class=red>?&gt;</em>
</pre></blockquote>
<p class=text>Как видно из листинга, функция <b>ftp_login</b> принимает три параметра: дескриптор FTP-соединения, возвращаемый функцией <b>ftp_connect</b>, имя пользователя и пароль.</p>
<p class=text><i>Замечание:</i> Регистрация на сервере не требуется, если FTP-сервер является анонимным.</p>
<a name=3></a>
<h2 class=p1>Закрытие соединения</h2>
<p class=text>По окончании сеанса связи с FTP-сервером, нужно закрыть FTP-соединение с помощью функции ftp_quit, принимающей в качестве единственного параметра дескриптор FTP-соединения:</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
  <b>ftp_quit</b><em class=gr>(</em><b>$connect</b><em class=gr>);</em>
</pre></blockquote>
<a name=4></a>
<h2 class=p1>Загрузка файлов с сервера</h2>
<p class=text>Загрузка файлов с сервера осуществляется при помощи функции <b>ftp_get</b>:</p>
<p class=prim><b><i>Синтаксис:</i></b></p>
<blockquote><pre>
  <em class=gr>bool</em> <b>ftp_get</b><em class=gr>(int</em> <b>ftp_connect</b>, <em class=gr>string</em> <b>local_file</b>,
                      <em class=gr>string</em> <b>remote_file</b>, <em class=gr>int</em> <b>mode</b><em class=gr>);</em>
</pre></blockquote>
<p class=text>Аргумент <b>mode</b>, задающий режим пересылки файлов, должен быть указан как константа <b>FTP_BINARY</b> или <b>FTP_ASCII</b>. Режим FTP_ASCII используется для пересылки файлов, состоящих только из ASCII-символов (т. е. текстовых файлов), а двоичный режим - для пересылки всех остальных файлов.</p>
<p class=prim><b><i>К примеру:</i></b></p>
<blockquote><pre>
<em class=red>&lt;?</em>
  <b>$local_file</b><em class=gr> = </em>"/users/local.txt"<em class=gr>;</em>
  <b>$remote_file</b><em class=gr> = </em>"remote.txt"<em class=gr>;</em>
  <b>ftp_get</b><em class=gr>(</em><b>$connect</b>, <b>$local_file</b>, <b>$remote_file</b>, <b>FTP_BINARY</b><em class=gr>);</em>
<em class=red>?&gt;</em>
</pre></blockquote>
