Назад Содержание Вперед

PHP-Personal Home Page Tools

PHP - язык написания сценариев, внедренный в HTML. Многое из синтаксиса заимствовано из C, Java и Perl, с добавлением специфичных для PHP возможностей. Задача языка состоит в том, чтобы дать возможность Web-разработчикам легко и быстро создавать динамично изменяемые html-страницы. Важной особенностью PHP является его интеграция с базами данных. Мы рассмотрим роботу только с базами данных MySQL.
Для PHP существует четыре способа отделения его от общего кода HTML

  1. <? echo ("SGML инструкции\n"); ?>
  2. <?php echo("XML документ\n"); ?>
  3. <script language="php"> echo ("стандарт"); </script>
  4. <% echo ("ASP-стиль"); %>

Сокращенный стиль можно использовать при установке значения On директивы register_globals в файле php.ini. При установке значения Off нужно установить также значение On директивы track_vars.

Команды PHP отделяются друг от друга точкой с запятой. Хотя перед закрывающим тегом (?>) точку с запятой ставить не обязательно.

PHP поддерживает комментарии в стиле C, C++ и Unix shell. Например:

 <?php
    echo "test"; // Комментарий 
    /* Это многострочный
    комментарий */
    echo "test2";
    echo "Test3"; # Это unix-shell комментарий
?>

Описание переменных и типы данных PHP.

Прежде всего, заметим, что идентификатор переменных всегда начинается с символа $. Кроме того, существует понятие границы определения переменных.

Переменная, созданная внутри функции является локальной. Для описания переменной как глобальной, требуется перед ней поставить инструкцию global. Чтобы описанная переменная, с одной стороны, была локальной, а с другой, не сохраняла свое последнее значение от вызова к вызову функции, следует использовать инструкцию static.

$a = 1; /* глобальное определение */
Function Test (){
    $a=2;
    echo $a; /* локальная переменная */
}
Test ();
echo $a;
Ответ 2 1
Если требуется использовать глобальные переменные внутри функции, необходимо декларировать с помощью оператора global:
$a = 1; /* глобальное определение */
Function Test (){
    global $a;
    $a=2;
    echo $a; /* локальная переменная */
}
Test ();
echo $a;
Ответ 2 2

При написании скриптов часто используются переменные c динамически изменяемым наименованием. Например,

$a = "hello";
$$a = "world";
В данной ситуации переменной с именем a присваивается значение "hello". Следующей операцией переменной с именем, хранящимся в переменной с именем a, то есть - переменной hello мы присваиваем значение "world".
echo "$a ${$a}";

что то же:

echo "$a $hello";
В результате получаем hello world.

PHP поддерживает следующие типы данных:

Преобразование типов происходит следующим образом. Если переменной приравнивается строка (текст в кавычках), то эта переменная становится строковой. Если же с ней совершается одна из многих математических функций или она приравнивается численной переменой, она становится численной, причем если приравнивается не целому значению - то станет типом double. Пример:

$stud = "0";       // $stud строка (ASCII 48)
$stud++;            // $stud  строка "1" (ASCII 49)
$stud += 1;     // $stud  integer (2)
$stud = $stud + 1.1;        // $stud теперь double (3.1)

Преобразовывать в стиле С:

$stud = 1;      // $stud это integer
$stud = (double) $stud; // $stud это double

Операции преобразования типов:

Операторы и функции PHP.

Арифметических операций в PHP пять:
$a + $b
$a - $b
$a * $b
$a / $b
$a % $b (остаток от деления $a на $b)
Для работы со строками используется операция сложения двух строк. Символом этой операции является точка:
$a  .  $b;
При использовании операции присваивания возможны конструкции С:
$a = ($b = 4) + 5;      // $a будет равна 9, а $b 4.
$a += 5;            // что то же  $a = $a + 5;
$b = "Hello ";
$b .= "world";      // что то же  $b="Hello world"
Рассмотрим битовые операции Логические операции Операции сравнения
$a == $b, $a != $b, $a < $b, $a > $b, $a <= $b, $a >= $b.
Отметим еще операцию идентичности
$a===$b
это проверка не только на то что операнды равны, но и их типы совпадают.

Два разных обозначения логических операций не есть их дублирование. Разные обозначения определяют разный их приоритет

Приоритеты операторов
++ ==
/ * %
+ -
< <= => >
== === !=
&&
||
= += -= /= *= 5= .=
and
xor
or
Приведем пример двух эквивалентных выражений
$a and $b || $c
($a && $b) || $c

Операторы условного перехода

Конструкция операторов условного перехода PHP заимствована из С.

Оператор if

Структура:

if (выражение)
    блок_выполнения

Пример:

if ($a > $b)
    print "a больше, чем b";
if ($a > $b){
    print "a больше, чем b";
    $b = $a;
}

Оператор if...else

Пример:

if ($a > $b) {
    print "a больше, чем  b";
} else {
    print "a не больше, чем b";
}

Оператор elseif

Применяется в случае, когда следует использовать if сразу после else. Пример:

if ($a > $b) {
    print "a is bigger than b";
} elseif ($a == $b) {
    print "a is equal to b";
} else {
    print "a is smaller than b";
}

Оператор if(): ... endif;

Пример использования:

<?php if ($a==5): ?>
A = 5
<?php endif; ?>

Пример совместного использования оператора elseif

if ($a == 5):
    print "a equals 5";
    print "...";
elseif ($a == 6):
    print "a equals 6";
    print "!!!";
else:
    print "a is neither 5 nor 6";
endif;

Оператор while

Структура:

 while (выражение): блок_выполнения ... endwhile; 

Пример:

$i = 1;
while ($i <= 10) {
    print $i++;  
}

Оператор do...while

Выполняется блок выполнения до тех пор, пока справедливо выражение. Структура:

do блок_выполнения while (выражение);

Оператор for

Структура:

for (выражение1; выражение2; выражение3)
    блок_выполнения

Существует модификация этого оператора:

for (выражение1; выражение2; выражение3):
    блок_выполнения; ...; endfor;

Перед блоком выполнения стоит двоеточие.

Оператор break

Позволяет выходить из любого цикла (for, while, do...while) до окончания его выполнения. Пример:

 $i = 0;
while ($i < 10) {
    if ($arr[$i] == "stop") {
        break;
    }
    $i++;
}

Оператор continue

Позволяет пропустить дальнейшее действия блока_выполнения любого цикла и продолжить выполнение с нового цикла. Пример:

while (выражение) {
    if (выражение2) 
        continue;
    действие;
};

Пример программы аналогичной предыдущей, но без использования continue:

while (выражение) {
    if (!выражение2) 
        действие;
};

Оператор switch

Оператор выбора. Пример: фрагмент программы

if ($i == 0) {
    print "i равно 0";
} else
if ($i == 1) {
    print "i равно 1";
} else
if ($i == 2) {
    print "i равно 2";
} else
    print "ни одно условие не прошло"
можно записать в виде:
switch ($i) {
    case 0:
        print "i равно 0";
        break;
    case 1:
        print "i равно 1";
        break;
    case 2:
        print "i равно 2";
        break;
    default:
        print " ни одно условие не прошло"
}

В таком представлении есть и еще одно преимущество. Если вы не поставите оператор break, например, перед case 1:, то в случае, когда $i будет равен нулю после вывода на экран сообщения об этом программа пойдет дальше и выведет также сообщение о том, что $i равна еще и 1 и только после, встретив break; продолжит свое выполнение за пределами switch

Функции

Конструкция функций PHP имеет следующий вид
function name_function($argument1, $argument2,...)
{
//body function
}
Пример
<html>
    <body>
        <?php
        finction print_hello()
        {
            print "Hello";
        }       
    print_hello();
        ?>
    </body>
</html>
Функция может возвращать значение или объект с использованием оператора return.

Пример

<html>
    <body>
        <?php
        finction Sum($FistNumber,$SecondNumber)
        {
            $Add=$FistNumber+$SecondNumber;
            return $Add;
        }       
        print Sum(1,2);
        ?>
    </body>
</html>
В PHP представлена возможность присвоить имя функции некоторой переменной и использовать ее так же как и функцию.

Пример

<html>
    <body>
        <?php
        finction print_hello()
        {
            print "Hello";
        }
    $fname="print_hello";
    $fname();           
        ?>
    </body>
</html>
Это предоставляет возможность получать имя функции на основании параметров запроса.

Массивы

Массивы в PHP можно создавать либо непосредственным перечислением, либо используя функцию array().

Пример

$symbol=array("alpha","beta","gamma");
либо
$symbol[] "alpha";
$symbol[] "beta";
$symbol[] "gamma";
В этой случае $symbol[1] содержит "beta".
Допустимы такие конструкции, как отсутствие инициализации промежуточных значений массива. Например, можно ввести $symbol[32] "delta";. В этом случае все элементы массива от третьего до тридцать первого не будут инициализированы и обращение к ним вызовет ошибку выполнения программы.

Для определения количества элементов массива используется функция count(). Заметим, что так как нумерация элементов массива начинается с нуля, то номер последнего элемента массива $symbol равен count($symbol)-1.

Для пролистывания элементов массива используется функция foreach($array as $temp), где $array имя массива, а $temp имя временной переменной, в которой хранится текущее значение элемента.

Пример

foreach($symbol as $temp)
{
    print "$temp 
"; }
В результате выводятся элементы массива $symbol.

Для слияния массивов используется функция array_merge()

Пример

$lat=array("a","b","c");
$cyr=array("а","б","в");
$symbol=array_merge($lat,$cyr);
Добавление элементов к массиву проводится с помощью функции array_push()

Пример

$lat=array("a","b","c");
$symbol=array_push($lat,"d","e");
Для выделения части массива используется функция array_slice() с тремя аргументами - имя массива, начальная позиция или смещение от начала и длина участка. Если последний аргумент не указан, то выделяется участок до конца массива. Полезной функцией является array_shift(), удаляющая первый элемент массива (кроме того, она возвращает удаляемый элемент). Приведем пример проверяющий остались ли в массиве элементы.
$symbol=array("alpha","beta","gamma");
while(count($symbol))
{
     $tmp=array_shift($symbol);
    print "Удален символ "."$tmp
"; print "Массив \$symbol содержит".count($symbol). "элементов

"; }

Функция sort() сортирует массив в алфавитном порядке, если хотя бы один его элемент является строкой и в числовом порядке, если все его элементы числа. Для сортировки в обратном порядке используется функция rsort().

Ассоциированные массивы

Ассоциированный массив (структура) это массив, позволяющий ссылаться на его элементы по имени. Порядок создания ассоциированных массивов такой же, как и для простых массивов. Приведем пример.
$kadry=array(
    Name=>"Бендер",
    SecondName=>"Остап",
    age=>33,
    speciality=>"свободный художник" 
)
print $kadry[age];
Результатом выполнения программы будет число 33.

Для работы с ассоциированными массивами используются функции, отличные от рассмотренных. Для просмотра ассоциированного массива используется конструкция

foreach( $array as $key=$tmp)
$array- имя массива, $key переменная, в которой сохраняет имя элемента массива, а $tmp переменная сохраняющая значение элемента.
Сортировка ассоциированного массива производится функцией asort(). Для сортировки ассоциированного массива по именам полей используется функция ksort(). Сортировка в обратном порядке проводится функцией krsort().
Пример просмотра двумерного ассоциированного массива и этого же отсортированного массива.
$kadry = array (
        array (
    Name=>"Бендер",
    SecondName=>"Остап",
    age=>33,
    speciality=>"свободный художник" 
    ),
        array (
    Name=>"Балаганов",
    SecondName=>"Шура",
    age=>28,
    speciality=>"сын лейтенанта Шмидта" 
    ),
        array (
    Name=>"Паниковский",
    SecondName=>"",
    age=>63,
    speciality=>"нищий" 
    )
);
foreach (
        $kadry as $val)
    {
foreach (
        $val as $key=>$newVal)
    {
    print " $key: $newVal 
"; } } asort($kadry); foreach ( $kadry as $val) { foreach ( $val as $key=>$newVal) { print " $key: $newVal
"; } } ?>

Функции обработки строк

Одной из основных строковых операция является операция конкатенации - сложения строк. В PHP точка является оператором конкатенации.

Так же как у предка PHP - языка С строка представляет собой массив элементов с начальным индексом равным нулю.
Например,

$str="строка";
print $str[0];//получим "c"
Для определения длины строки служит функция strlen().

Важной функцией является нахождение подстроки в строке. Для этой цели служит функция strstr. Функция использует два аргумента - исходная строка и подстрока. Возвращает false при отсутствии искомой подстроки и при наличии подстроки возвращает часть строки, которая начинается с подстроки.

Функция strpos() имеет два обязательных параметра - искомая строка и подстрока и необязательный параметр определяющий позицию, с которого начинается поиск подстроки. В случае вхождения подстроки возвращает номер символа, с которого начинается подстрока.

Функция substr() возвращает часть строки, начиная с заданной позиции. Эта функция получает два аргумента - исходную строку и начало позиции. Может задаваться необязательный параметр задающий число возвращаемых символов. Если вторым аргументом будет отрицательное число, то отсчет начинается с конца строки.

Следующий пример определяет клиентов у которых адрес электронной почты определен доменом Украины и в этом случае выводится специальное сообщение.

$client="bender@mail.ua";
if ($ua_client = substr($client,-3)==".ua")
  print "Оплата производится в гривнах";
else
  print "Оплата производится в EURO";
Функция substr_replace() позволяет заменить часть строки. Аргументами функции являются обрабатываемая строка, подставляемый текст и начальный индекс. Необязательным параметром является четвертый аргумент, определяющий длину вырезаемой строки. Функция находит часть строки определяемую начальным индексом и заданной длиной вырезаемой подстроки, заменяет эту часть и возвращает измененную строку.

Строка, получаемая от клиента может содержать символы игнорируемые браузером - символы пробелов в начале и в конце строки, знаки табуляции, перенос строки и возврат каретки. Для очистки строки существует от этих символов существует функция trim(). Для удаления пробела в конце строки используется функция chop(). Для очистки начала строки от символов табуляции, пробелов и пустых строк используется функция ltrim().

Для вывода потока данных в PHP существуют конструкции print и echo. Для вывода форматированных строк используется функция printf(), синтаксис которой во многом сходен с аналогом этой функции в С. Отметим некоторые особенности оператора форматированного вывода. В нем можно указать количество позиций для выводимой информации, указав размер поля сразу за знаком %. Например, printf("10s\n","десять"); указывает, что запись будет выводиться в поле размером в десять значений. По умолчанию поле выравнивается по правому краю. Для выравнивания по левому краю следует поставить знак минус перед определителем ширины поля, например, printf("-10s\n","десять");
Функция printf выводит данные в окно браузера. Для того, чтобы отформатированное значение сохранить в переменной, следует использовать функцию sprintf() с тем же синтаксисом.

Например, результатом выполнения скрипта

$cash=spintf("%.2",3.33333);
print "Остаток на счету  $cash";
будет сообщение
Остаток на счету  3.33
В PHP есть две функции специально предназначенные для работы с косой чертой. Это AddSlashes(), добавляющая косую черту к строке аргумента и StripSlashes() ее удаляющую.

Работа с формами.

При взаимодействии PHP с формой HTML действию ACTION, выполняемому формой, должно быть присвоено имя PHP-сценария. В общем случае значением атрибута ACTION является URL-адрес, загружаемый при нажатии кнопки SUBMIT. Данные, введенные клиентом в форму, будут отправлены по этому адресу с использованием метода определенного атрибутом METHOD. Это может быть либо GET или POST. В первом случае все данные введенные в форму будут высланы в виде строки присоединенной к URL-адресу. При использовании метода POST они будут отправлены отдельным пакетом. Получение данных PHP от формы зависит от стиля определения PHP. В случае использования сокращенного стиля переменные формы передаются в скрипт PHP также как аргументы передаются в функцию. При использовании длинного стиля определения PHP переменные формы, в зависимости от метода отправки, нужно получать из массивов $HTTP_POST_VARS или $HTTP_GET_VARS.
Во время отсылки данных автоматически создается набор переменных окружения, описывающих как клиента, так и сервер. Приведем наиболее часто встречающиеся переменные окружения.

ПеременнаяОписание
$HTTP_USER_AGENTИнформация о клиенте (название и версия)
$REMOTE_ADDRIP-адрес клиента
$REQUEST_NETHODМетод запроса GET или POST
$QUERY_STRINGПри запросе GET данные переданные вместе с URL
$HTTP_REFERERАдрес страницы, с которой был сделан запрос

Приведем пример использования PHP для обработки данных с HTML - форм.

Создадим файл shop.html. .

<HTML><HEAD>
<TITLE>Запрос информации</TITLE>
<BODY><CENTER><h3>Информация о наших товарах</h3><P>
<TABLE WIDTH = 400><TR><TD align = right><FORM ACTION="email.php" METHOD="POST">Ваша фамилия и имя:
<INPUT TYPE="text" NAME="name" SIZE="20" MAXLENGTH="30"><P>Ваш email:
<INPUT TYPE="text" NAME="email" SIZE="20" MAXLENGTH="30"><P>Меня интересуют:
<SELECT NAME="preference" ><OPTION value ="Стулья">Стулья
<OPTION value = "Рога">Рога
<OPTION value = "Копыта">Копыта
</SELECT><P>
<INPUT TYPE="submit"  VALUE="Отправить запрос!">
</FORM></TD></TR></TABLE></CENTER>
</BODY></HTML>
В нем мы указали, что данные формы будут обрабатываться файлом email.php. Приведем его содержание:
<?
$name=$HTTP_POST_VARS["name"];
$email=$HTTP_POST_VARS["email"]; 
$preference=$HTTP_POST_VARS["preference"];
PRINT "<CENTER>";PRINT "<h3>ООО Рога и копыта </h3>  приветствует Вас, $name. ";
PRINT "<p>";
PRINT "Вас интересуют $preference. <p> Подробную информацию мы пошлем вам на email:<i> $email.</i>";
PRINT "</CENTER>";?>
Теперь, если пользователь вызовет shop.html и наберет в форме имя "Остап Бендер", email:
bender@mysite.com и скажет, что его интересуют "Стулья", а после этого нажмет "Отправить запрос!", то в ответ вызовется email.php, который выведет на экран примерно следующее:

ООО Рога и копыта

приветствует Вас, Остап Бендер.

Вас интересуют Стулья.

Подробную информацию мы пошлем вам на email: bender@mysite.com

Работа с файлами.

В каждый документ PHP можно включать другой документ. Для этой цели служит оператор оператор require. Этот оператор действует примерно так-же как и #include в C. Файл, указанный в кавычках включается в скрипт и выполняется, но только однажды. В файле, включаемом оператором require резонно хранить какие-то данные, необходимые для многих скриптов и соответственно включать его в эти "многие" скрипты.

Оператор include позволяет включать код, содержащийся в указанном файле (func.inc в нашем случае) и выполнять его столько раз, сколько программа встречает этот оператор. Например, в файле func.inc хранится программа вывода на экран определенных параметров. Каждый раз, когда нам нужно будет выводить эти параметры мы будем вставлять в текст нашей основной программы include ("func.inc"), то есть это в принципе тоже самое, как если-бы мы везде в таких случаях вставляли бы текст, содержащийся в файле func.inc

Перед работой с файлом неплохо убедиться в его существовании. Это можно провести с помощью оператора file_exists, возвращающая true в случае существования запрашиваемого файла и false в противном случае.

if (file_exists("header.php"))
    print "Файл найден";
Для того, чтобы убедиться, что найденный файл не есть каталог существует функция is_file и наоборот, для проверки каталога используется функция is_dir. Приведем набор функций для определения атрибутов файла, его состояния и возможности доступа - is_readable (возможность чтения), is_writeable (возможность записи), is_executable (является ли исполнимым), filesize (размер), fileatime (дата последнего доступа к файлу), filemtime (время последней модификации).

Для создания нового файла служит функция touch(). Если файл с таким именем существует, то функция НЕ изменяет его содержание. Меняется только дата модификации. Для удаления файла используется оператор unlink. Открытие файла реализует функция fopen("filename",'descriptor'), возвращающая указатель на файл. Дескриптор может принимать значения 'r' (для чтения), 'w' (открывает для записи, если файл с таким именем существует, то вся информация в нем будет уничтожена) и 'a' (для дозаписи в конец файла). Закрывается файл функцией fclose().

Пример.

if ($f=fopen("filename",'w')) or die ("Файл не удается открыть");
После открытия файла, можно читать либо строками либо отдельными символами. Для чтения строки существует функция fgets(). Функция имеет два аргумента - указатель на файл и максимальное число символов, которые следует прочесть до того как встретится либо конец строки либо файла. Для определения конца файла служит функция feof(). Приведем пример чтения строк из файла
<?php
$myfile="proba.txt";
$f=fopen($myfile, "r") or die ("Не могу открыть $myfile");
while (! feof($f))
{
$str=fgets($f,1024);//длина строки ограничена 1024 символами.
print "$str<b>";
}
?>
Для чтения не строками, а произвольными кусками используется функция fread() с двумя аргументами - указатель на файл и количество читаемых символов. При использовании этой функции необходимо знать на сколько символов следует сдвинуться перед тем, как начинать чтение. Для этого служит функция fseek() первый аргумент - указатель на файл, второй количество символов, на которые следует отступить от начала файла. Для чтения отдельного символа используется функция fgetc(). Приведем конструкцию аналогичную рассмотренной выше, но с использованием функции fgetc().
<?php
$myfile="proba.txt";
$f=fopen($myfile, "r") or die ("Не могу открыть $myfile");
while (! feof($f))
{
$char=fgetс($f);
print "$char<b>";
}
?>
Для записи в файл используются функции fwrite() или fputs() у которых первый аргумент указатель на файл, второй - записываемая строка.

Работа PHP предполагает, что одновременно одну и ту же функцию могут вызвать несколько пользователей. Для того, чтобы предупредить разрушение файла, которое может произойти при такой ситуации, предусмотрена функция блокировки файла flock(). Функция имеет два аргумента - указатель на файл и номер режима блокировки.

Режим блокировкиТип блокировкиОписание
1ЧастичнаяРазрешает другим процессам читать файл, но запрещает запись
2Полная Запрещает другим процессам как чтение, так и запись в файл
3ОсвобождениеСнимает блокировку файла

Функции PHP работы с сетью и протоколами.

Протоколы представляют собой правила взаимодействия в различных ситуациях. HTTP (Hypertext Transfer Protocol) используется при передаче Web-страниц, FTP (File Transfer Protocol) служит для передачи файлов, POP (Post Office Protocol) почтовый протокол предназначенный для получения почты и пр.

Для отправления электронной почны используется функция PHP mail(). Приведем ее синтаксис

mail(string_address, string_theme, string_message, string [heading])
Первые три параметра представляют собой адрес, по которому отправляется сообщение, строку темы и текст сообщения. Четвертый параметр представляет собой дополнительные заголовки - например, сообщения From, Reply-To и подобное. В качестве разделителя можно использовать символ \n.

Функции FTP (File Transfer Protocol) используются для передачи файлов между хостами. Так как по умолчанию эти функции не подключаются, то при установке PHP следует с файл php.ini добавить строку

extension=php_ftp.dll
Соединение с FTP сервером обеспечивается функцией ftp_connect() аргументом которой является адрес хоста. Необязательным аргументом является номер порта, через который происходит соединение (по умолчанию стандартный FTP порт - 21). При удачном соединении возвращает дескриптор соединения, в противном случае возвращает false. Результат регистрации на сервере возвращается функцией ftp_login(). Функция имеет три аргумента - дескриптор соединения, имя пользователя и пароль. Как правило, если пользователь анонимный, в качестве пароля используют адрес его электронной почты. Разрыв соединения производится функцией ftp_quit().
Для закачки файла требуется, прежде всего, открыть локальный файл для записи с помощью функции fopen() и вызвать функцию закачки ftp_fget(). Эта функция имеет четыре аргумента- дескриптор ftp-соединения, дескриптор локального файла, путь к удаленному файлу и режим доступа к файлу - FTP_BINARY или FTP_ASCII, в зависимости от того, скачивается ли бинарный файл или текстовый. Для загрузки файла от клиента к серверу служит функция ftp_fput() с тем же синтаксисом.

Вместо функции ftp_fget() можно использовать функцию ftp_get() с синтаксисом

 ftp_fget(int ftp_connection, string path_local_file,string path_downloads_file, mode)
В отличие от функции ftp_fget(), в этом случае не требуется открытия локального файла - просто нужно указать имя локального файла на клиентской машине.

Аналогично, вместо функции ftp_fput() можно использовать функцию ftp_put()

 ftp_put(int ftp_connection,string path_downloads_file, string path_local_file, mode).

Приведем пример скрипта для загрузки файла с FTP-сервера.

<html>
    <head>
	<title>
	Downloads file	
	</title>
    </head>
<body>
<?
     $host="dnepr.org.ua"; //адрес хоста	
     $user="anonymous";    //имя пользователя
     $password ="my@mail.net"; //пароль (адрес, полученный в результате регистрации)
     $download_file="/articles/web_programming/Net.zip"; //скачиваемый файл
     $local_file="$DOCUMENT_ROOT/downloads/net.zip";     //имя скачиваемого файла на клиентской машине
     $ftpcon=ftp_connect($host);
	if (!$ftpcon)
		{
		print "Нет соединения с FTP-сервером<p>";
		exit;
		 }
	else
		print "Соединение с FTP-сервером прошло успешно";
	@ $reg=ftp_login($ftpcon, $user, $password);
	if (!reg)
		{
		print "Зарегистрируйтесь";
		ftp_quit($ftpcon);
		exit;
		}
	$f=fopen($local_file,"w");
	if (!ok=ftp_fget($ftpcon,$f,$download_file,FTP_BINARY))
	{
	print "Файл $download_file не существует";
	ftp_quit($ftpcon);
	exit;
	}
	fcose($f);
	print "Закачка файла прошла удачно";	
	ftp_quit($ftpcon);
?>
</body>
</html>
Для определения размера файла на удаленном сервере, можно использовать функцию
int frp_size(int ftp_connection,string path_file)
возвращающую размер файла в байтах и -1 в случае ошибки.

Для получения списка файлов в определенном каталоге, используется функция ftp_nlist()

$listing=ftp_nlist($ftpcon,"path_dir");
foreach($listing as $filename)
	print "$filename <br>";

Назад Содержание Вперед