На главную страницу
Форум txt.version   




Статья :: Файлы и сети

Файлы и сети

 

Файловая система

Работа с каталогами

basename

Получение компонента файлового имени в пути

string basename (string path)

Возвращает имя файла, выделенного из строки path, представляющей путь к файлу.

В большинстве систем разделителем каталогов в пути служит прямой слеш «/>>. В Windows также может использоваться обратный слеш «\».

Spath = "/home/httpd/html/index.php3":
$file =basename ($path).
// $file is set to "index.php3"

См. также dirname()

dirname

Исключение имени файла из пути

string dirname (string path)

Возвращает строку пути path, из которой исключено имя файла.

В большинстве систем разделителем каталогов в пути служит прямой слеш «/». В Windows также может использоваться обратный слеш «\».

Spath = "/etc/passwd"
Sfile = dirname ($path);
// Sfile is set to "/etc"

См. также basename().

realpath

Исключение сокращений в строке пути

string realpath (string path)

Заменяет все символьные ссылки и сокращения типа: «/./», «/../» (с дополнительными слешами «/») в строке path и возвращает полученный абсолютный путь.

$real_path = realpath
(". /. ./index.php"):

getcwd

Определение текущего каталога

string getcwd(void);

Возвращает текущую директорию, относительно которой проводятся файловые операции.

chdir

Смена текущего каталога

int chdir (string directory)

Возвращает FALSE при ошибке, в противном случае — TRUE.

mkdir

Создание каталога

int mkdir (string pathname, int mode)

Пытается создать новый каталог pathname с атрибутами доступа mode (если они указываются в восьмеричной системе, первой цифрой должен быть ноль).

mkdir ("/path/to/my/chr". 0700).

Возвращает TRUE или FALSE — при ошибке.

См. также rmdirz().

rmdir

Удаление каталога

int rmdir (string dirname)

Пытается удалить каталог dirname. Ката/юг должен быть пустым, и его атрибуты должны позволять это.

При ошибке возвращает 0 (то есть FALSE).

См. также mkdir().

diskfreespace

Определение свободного пространства в каталоге

float diskfreespace (string directory)

Возвращает в байтах свободное пространство в каталоге directory, то есть в соответствующей ей файловой системе или на разделе диска.

$df - diskfreespacet"/");
// свободное место в корневой директории "/"

dir

Класс каталога

new dir (string directory)

Псевдоориентированный механизм для получения списка файлов каталога. При создании объекта на основе класса открывается каталог, указанный directory.

После этого становятся доступны два свойства объекта: дескриптор каталога handle (который может использоваться с функциями readdir(), rewinddir() и closedir()) и строка path, указывающая, какой каталог в настоящий момент используется. У класса имеются три метода: read, rewind и close.

$d = dirC'/etc").
echo "Дескриптор: " .$d->handle."<br>\n".
echo "Путь: " $d->path."<br>\n":
while($entry=Sd->read()) {
// последовательно выводить
echo Sentry."<br>\n".// имя каждого файла. }
// имеющегося в каталоге
$d->close():

opendir

Открытие дескриптора каталога

int opendir (string path)

Возвращает дескриптор открытого каталога path, который затем можно использовать в функциях closedir(), readdir(), rewinddir().

closedir

Закрытие открытого дескриптора каталога

void closedir (int dir_handle)

В аргументе указывается дескриптор каталога, возвращенный функцией opendir ().

readdir

Получение имени следующего файла в списке каталога

string readdir (int dir_handle)

Возвращает имя следующего файла в каталоге. Файлы возвращаются в виде неупорядоченной последовательности.

<?php
$handle=opendir('.').
echo "Directory handle: $handle\n",
echo "FilesAn";
while («file = readdir($handle))
!==FALSE) {
echo "$file\n":
closedir($handle).

Заметьте, что функция также возвращает значения «.» и «..». Если они не требуются, их можно просто исключать: $handle=opendir('.'):

while (FALSE!==
($flie = readdir(Shandle))) { if
(Sfile != "." && Sfile != "..")
{ echo "$file\n".
closedir($handle):

rewinddir

Реинициализация дескриптора каталога

void rewinddir (int dir_handle)

После вызова этой функции функция readdir() с аргументом dir_ hand! e будет возвращать имена файлов с начала в списке каталога.

Получение свойств и атрибутов файлов

file_exists

Проверка существования файла

bool file_exists (string filename)

Возвращает TRUE, если файл, указанный filename, существует; иначе — FALSE. Функция не работает с удаленными файлами, файл должен находиться в доступной для сервера файловой системе.

Результаты функции кэшируются, см. функцию clearstatcache().

is_dir

Проверка существования каталога

bool is_dir (string filename)

Возвращает TRUE, если указанный каталог filename существует. Результаты функции кэшируются, см. функцию clearstatcache().

См. также: is_file() и isJink().

is_executable

Проверка существования запускаемого файла

bool is_executable (string filename)

Результаты функции кэшируются, см. функцию clearstatcache().

См. также: is file() и is link().

is_file

Проверка существования обычного файла

bool is_file (string filename)

Результаты функции кэшируются, см. функцию clearstatcache().

См. также: is_dir() и is_link().

is_ link

Проверка существования символической ссылки на файл

bool isjink (string filename)

Результаты функции кэшируются, см. функцию clearstatcache().

Функция не работает под Windows.

См. также: is_dir() и is_file().

is_eadable

Проверка существования файла, доступного для чтения bool is_readable (string filename)

Обычно PUP осуществляет доступ к файлу с привилегиями пользователя, запускающего web-сервер (часто «nobody»). Соображения безопасности должны приниматься в расчет.

Результаты функции кэшируются, см. функцию clearstatcache().

См. также is_writeable().

is_writeable

Проверка существования файла, доступного для записи

bool is_writeable (string filename)

Обычно PHP осуществляет доступ к файлу с привилегиями пользователя, запускающего web-сервер (часто «nobody»). Соображения безопасности должны приниматься в расчет.

Результаты функции кэшируются, см. функцию clearstatcache().

См. также is_readable().

is_uploaded file

Проверка существования файла, загруженного методом HTTP POST bool is_uploaded_file (string filename)

Возвращает TRUE, если файл с именем filename был загружен на сервер посредством HTTP POST. Часто это полезно, чтобы убедиться, что пользователи из злого умысла не пытались заставить сценарий работать с теми файлами, с которыми им работать не следует, например: /etc/ passwd.

См. также: move_uploaded_file().

filetype

Получение типа файла

string filetype (string filename)

Возможные возвращаемые значения: fifo, char, dir, block, link, file, unknown. В случае ошибки возвращается FALSE.

Результаты функции кэшируются, см. функцию clearstatcache().

fileatime

Получение времени последнего доступа к файлу

int fileatime (string filename)

Возвращает время в формате «Unix timestamp» пли FALSE в случае / ошибки.

Результаты функции кэшируются. см. функцию clearstatcache().

Атрибут времени последнего доступа к файлу изменяется каждый раз, когда данные файла читаются. Так как это сильно снижает производительность при интенсивной работе с файлами и каталогами, часто изменение этого атрибута в операционных системах блокируют, и тогда функция бесполезна.

filemtime

Получение времени последней записи в файл int filemtime (string filename)

Возвращает время в формате «Unix timestamp» или FALSE в случае ошибки.

Результаты функции кэшируются. см. функцию clearstatcache().

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

filectime

Получение времени последнего изменения файла

int filectime (string filename)

Возвращает время в формате «Unix timestamp» или FALSE в случае ошибки.

Результаты функции кэшируются, см. функцию clearstatcache().

В большинстве систем изменением файла считается также изменение его атрибутов (например, прав доступа).

См. также: filemtime() и fileatime().

В некоторых системах этот атрибут неправильно рассматривается как время создания файла.

filegroup

Получение группы принадлежности файла

int filegroup (string filename)

Возвращает ID группы владельца файла или FALSE в случае ошибки. Идентификатор группы возвращается в численном формате, используйте posix_getgrgid() для преобразования его в имя группы.

Результаты функции каптируются, см. функцию clearstatcache(). Функция не работает под Windows.

fileowner

Получение группы владельца файла

int fileowner (string filename)

Возвращает ID владельца файла или FALSE в случае ошибки.

Идентификатор владельца возвращается в численном формате, используйте posix_getpwuid() для преобразования его в имя владельца (username).

Результаты функции кэшируются, см. функцию clearstatcache().

Функция не работает под Windows.

fileperms

Получение атрибутов доступа файла

int fileperms (string filename)

Возвращает FALSE в случае ошибки.

Результаты функции кэшируются, см. функцию clearstatcache().

filesize

Получение размера файла

int filesize (string filename)

Возвращает FALSE в случае ошибки.

Результаты функции кэшируются, см. функцию clearstatcache().

fileinode

Получение файлового блока inode int fileinode (string filename)

Возвращает номер блока файла в файловой системе или FALSE в случае ошибки.

Результаты функции кэшируются, см. функцию clearstatcache(). Функция не работает под Windows.

Манипулирование файлами

touch

Установка времени последней модификации или создание файла

int touch (string filename [, int time])

Пытается установить для файла filename атрибут последней модификации time. Если он не указывается, используется текущее время. Если файл не существует, он создается (поэтому эту функцию часто используют для создания файла). Возвращает TRUE или FALSE — при ошибке.

if (touch (SFileName)) { print "Ок";} else { print "Ошибка". }

unlink

Удаление файла

int unlink (string filename)

В системах Unix для удаления файлов используется системная функция unlink().

Возвращает TRUE или FALSE — при ошибке. Для удаления каталога используйте: rmdir(). Функция может не работать под Windows.

сору

Копирование файла

int copy (string source, string dest)

Копирует файл source в место, указанное dest. Возвращает TRUE или FALSE — при ошибке.

if (!copy($file, Sfile.' bak')j {
print ("Ошибка копирования
$file...<br>\n"): }

См. также rename().

rename

Переименование или перемещение файла

int rename (string oldname, string newname)

Переименовывает файл oldname в newname. Возвращает TRUE или FALSE — при ошибке.

move_uploaded_file

Перемещение загруженного файла

boo! move_uploaded_file (string filename, string destination)

Функция проверяет, является ли файл filename реально загруженным t помощью метода HTTP POST, если нет — возвращается FALSE.

Затем функция перемещает файл в новое место destination; а если это неосуществимо, возвращается FALSE (с выдачей системного сообщения).

См. также: is_uploaded_file().

tempnam

Генерация уникального имени временного файла string tempnam (string dir, string prefix)

Возвращает имя несуществующего в каталоге dir файла, начинающегося с prefix. Если аргументы не указываются, то используется временный каталог системы (в Windows он указан в системной переменной ТМР и значение аргумента dir не используется; в Linux аналогично используется значение.TMPDIR; проверьте системную документацию функции tempnam(3) для разрешения вопросов).

При ошибке возвращается пустая строка.

Stmpfname " tempram ("/tmp". TOO");
// в Windows 2000 выдаст,
например:
//E:\DOCUMr-i\9335-l\LOCALS-l\
Temp\F009.tmp

В версии РНР 4.0.3 поведение функции было изменено: при получении имени одновременно создается такой файл. Это сделано для того, чтобы в промежутке между получением уникального имени и созданием такого файла друюе приложение или сценарий не могли создать идентичный временный файл.

См. также tmp'ile().

tmpfile

Создание временного файла int tmpfile (void)

Создает уникальный файл в режиме записи, возвращая его дескриптор, подобно функции fopen(). Этот файл автоматически удаляется при его явном закрытии (функцией fclose()) или завершении сценария.

Для более подробной информации просмотрите использование системной функции tmpfile()) и заголовочный файл stdio.h.

См. также tempnam().

chgrp

Изменение группы файпч

int chgrp (string f;,aname, mixed group)

Пытается сменить у файла filename группу на значение group. Только администратор может безусловно изменять этот атрибут у любого файла, иначе необходимо входить в группу владельцев файла.

Возвращает TRUE или FALSE — при ошибке. Функция не работает под Windows.

См. также: chown() и chmod().

Пытается сменить у файла filename группу на значение group. Только администратор может безусловно изменять этот атрибут у любого файла, иначе необходимо входить в группу владельцев файла.

Возвращает TRUE или FALSE — при ошибке. Функция не работает под Windows.

См. также: chown() и chmod().

chmod

Изменение атрибутов доступа файла

int chmod (string filename, int mode)

Аргумент mode нужно явно задавать как восьмеричное число (то есть первой цифрой должен быть 0), а строки типа «g+vv» не будут приниматься:

chmod ("/somedir/somefile". 755).
// десятичное число; возможно неверное
значение chmod
("/somedir/somefile". "u+rwx.go+rx"),
// строка; неверное значение
chmod ("/somedir/somefile". 0755).
// десятичное число; правильный вариант

Возвращает TRUE или FALSE — при ошибке. Функция не работает иод Windows.

См. также: chown() и chgrp().

chown

Смена владельца файла

int chown (string filename, mixed user)

Только администратор может изменять этот атрибут файла.

Возвращает TRUE или FALSE — при ошибке.

Функция не работает иод Windows.

См. также: chown() и chmod().

umask

Изменение текущего значения umask int umask (int mask)

Устанавливает значение PHP umask равным (mask & 0777) и возвращает предыдущее значение umask. При использовании РНР как серверного модуля значение umask восстанавливается при завершении каждого запроса.

При неуказании аргументов просто возвращается текущая маска. Функция может не работать под Windows.

Системные функции

linkinfo

Получение информации о файловой ссылке int linkinfo (string path)

Возвращает поле st_dev структуры stat UNIX С, возвращаемой системным запросом Istat, или FALSE (0) при ошибке. Используется для проверки существования файловой ссылки (с именем path ). Такой же метод используется макросом S_ISLNK, определенным в файле stat.h.

Функция не работает под Windows.

См. также: symlink(), link() и readlink().

readlink

Получение назначения символьной ссылке string readlink (string path)

Возвращает путь к файлу, на который указывает ссылка path, или О — при ошибке.

Функция не работает под Windows.

См. также: symlink(), readlink() и linkinfo().

symlink

Создание символьной ссылки на файл

int symlink (string target, string link)

Создает файл link, являющийся ссылкой на существующий файл target.

Функция не работает под Windows.

См. также: link(), readlink(), linkinfo().

link

Создание жесткой файловой связи

int link (string target, string link)

Функция не работает под Windows.

См. также: symlink(), readlink(), linkinfo().

stat

Получение информации о файле

array stat (string filename)

Возвращает массив следующих элементов:

0. номер устройства (device);
1. номер файлового блока (mode);
2. режим защиты файлового блока (inode);
3. число файловых связей (links);
4. идентификатор владельца (user id);
5. идентификатор группы (group id);
6. тип блочного устройства (inode);
7. размер в байтах;
8. время последнего доступа;
9. время последней модификации;
10. время последнего изменения;
11. размер блока для системного ввода-вывода;
12. число занимаемых блоков.

Результаты функции кэшируются, см. функцию clearstatcache().

Istat

Получение информации о файле или ссылке на файл array Istat (string filename)

Функция подобна stat(), но она также работает с файловыми ссылками (причем информация возвращается о самой ссылке).

clearstatcache

Очистка кэша файловой информации void clearstatcache(void);

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

Воздействует на функции stat(), Istat(), file_exists(), is_writeable(), is_readable(), is executable(), is file(), is_dir(), isJink(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype() и fileperms().

ftruncate

Урезание размера файла

int ftruncate (int fp, int size)

В качестве аргумента fp принимается дескриптор файла (а не имя), возвращаемый fopen(). Возвращает TRUE или FALSE — при ошибке.

set_file_buffer

Установка буферизации файловых операций

int set_fi1e_buffer (int fp, int buffer)

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

Функция устанавливает размер буфера buffer байтов для операций записи в файл, имеющий дескриптор fp. Если аргумент buffer указывается со значением 0, то тогда буферизация отменяется, что- позволяет быть уверенным, что все операции записи, выполненные функцией fwrite(), совершаются при ее завершении (до того, как другим приложениям будет разрешена запись в тот же файл).

Возвращается 0 или EOF, если запрос не может быть выполнен.

$fp=fopen($file, "w"): if($fp){
set_file_buffer($fp. 0).
fputs($fp. Soutput);
fclose(Sfp): }

См. также: fopen(), fwrite().

flock

Блокирование совместного доступа

boo! flock (int fp, int operation [, int wouldblock]}

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

Функция использует простейший метод блокировки чтения и записи, имеющийся в большинстве систем (Unix и Windows). В аргументах функции указывается: дескриптор открытого файла fp и способ его блокировки operation, который может принимать следующие значения

  • LOCK_SH — разделяемый доступ для чтения,
  • LOCKJiX — монопольный доступ для записи,
  • LOCKJJN — отмена разделяемой или монопольной блокировки,
  • LOCK_NB — блокировка не требуется.

Если в необязательном третьем аргументе указывается значение TRUE, то таким образом выясняется возможность блокировки (состояние errno: EWOULDBLOCK).

Возвращается TRUE или FALSE — если блокировка невозможна.

В большинстве операционных систем функция реализована для уровня приложения, и при использовании на многопоточном сервере с API, подобным ISAPI, нельзя полностью полагаться на нее для защиты от сценариев РНР параллельно исполняемых различными «потоками» (threads) одного серверного модуля. Фактически для операционной системы «потоки» одного процесса неразличимы.

Ввод и вывод

fopen

Открытие файла или URL

int fopen (string filename, string mode [, int use_include_path])

Функция открывает указанный аргументом filename поток ввода/ вывода (файл) в режиме чтения/записи mode и возвращает назначенный для него дескриптор.

Для того чтобы можно было открывать удаленные файлы (посредством протоколов http и ftp), необходимо, чтобы параметр конфшу-рации allow_url_fopen был разрешен (по умолчанию он разрешен). Эта способность РНР называется «URL fopen wrapper». В дальнейшем также станет возможно открывать сжатые файлы (gxip и bz2) аналогичным способом.

Если строка пути filename начинается с «http://» (регистр не важен) и HTTP 1.0 доступ к указанному серверу возможен, то открывается сеанс связи (указанный URL посылается серверу с указанным в пути заголовком 'Host:' для разрешения имен виртуальных хостов) и указатель файла настраивается на текст, получаемый в ответ на запрос. Это не обрабатывает редиректы адреса HTTP, поэтому необходимо включать завершающие слеши для каталогов. Файл может быть открыт только для чтения.

Если строка пути filename начинается с «ftp://» (регистр не важен), то файл запрашивается через протокол FTP. При этом сервер должен поддерживать пассивный метод ftp-передачи. Если это позволяет сервер, файл может быть открыт либо для чтения, либо для записи (но не одновременно).

Если в аргументе filename указывается значение «php://stdin» или "php://stdout", "php://stderr", открывается соответствующий стандартный ноток.

Если filename начинается с чего-либо иного, открывается соответствующий файл в локальной файловой системе. Можно указать необязательный аргумент use_include path со значением 1, и тогда файл будет искаться не только в текущем каталоге, но и в установленном по умолчанию (директивой include_path в файле php.ini) для подключаемых файлов.

Если открыть файл (в заданном режиме) не удастся, то возвращается значение FALSE.

Режим открытия mode может быть одним из следующих:

  • г — только для чтения; курсор файла устанавливается в (и последующее чтение производится с) начала файла;
  • г+ — для чтения и записи; о г начала файла;
  • w — только для записи «набело»; если файл существует, его содержимое удаляется, если не существует, то он создается;
  • w+ — для чтения и записи «набело»; если файл существует, его содержимое удаляется, если не существует, то он создастся;
  • а — только для дозаписи в конец; если файл существует, курсор устанавливается в его конец, если не существует, то он создается;
  • • а+ — для чтения и дозаписи в конец; если файл существует, курсор устанавливается в его конец, если не существует, то он создается.

В аргументе mode можно также указать символ b, что бывает полезно в системах, различающих двоичные (binary) и текстовые файлы1. Для других систем (например, Unix) это бесполезно и игнорируется.

$fp - fopen ("/home/rasmus/file.txt". "г");
$fp = fopen ("/home/rasmus/file.gif". "wb"):

Различие между двоичными и текстовыми файлами о том, что конец первых определяется исходя из их размера, а вторых — по присутствию символа конца файла (EOF).

$fp = fopen
("http://www.php net/", "r"):
$fp = fopen
("ftp;//user:password@example.com/". "w");

He забывайте, что для доступа к файлу необходимы соответствующие полномочия.

В Windows обратные слеши должны быть двойными или заменяться на прямые, если строка пути заключена в двойные кавычки.

$fp = fopen ("c:\\data\\info.txt". "r"):

Следующий пример открывает удаленный HTML-файл (по протоколу http) и выводит его заголовок:

<?php
Sfile = fopen ("http://www.php.nert/", "r");
if (!$file) {
echo "^Невозможно открыть
удаленный файл.\n":
exit; \ i
while (Ifeof ($file)) {
fgets ($nle. 1024);
/* Заголовок и его теги должны
располагаться в одной строке */
if (eregi ("<titie>( *)</title>".
Sline. $out)) { $title = $out[l]; break. }
fclose($fiie); echo Stitle; ?>

Еще один пример демонстрирует открытие и запись в FTP-фапл (на самом деле для работы с FTP-файлами рекомендуется использовать специальные функции).

<?php
Sfile ' fopen
("ftp;//ftp.php.net/inconiing/outpL:tfile". "w").
if (!$file) { echo 'vp>
Невозножно открыть удаленный
файл для записи.\n"; exit;
/* Запись в файл */
fputs ($flle. "$HnP_USER_AGENT\n");
fclose (Sfile). ?>

Заметьте, что запись в конец FTP-файла не поддерживается (файл не должен существовать, а должен создаваться). Если для НТР-доступа необходим пароль (по умолчанию вход осуществляется под именем «anonymous» без пароля), то его можно указывать в строке адреса в виде:

' ftp : //user : password@f tp . exampl e .
com/path/f ile

Такую же форму ввода пароля можно использовать и для протокола HTTP, когда требуется аутентификация типа Basic.

См. также: fclose(), fsockopen(), socket_set_timeout() и popen().

fclose

Закрытие (дескриптора) файла int fclose (int fp)

Возвращает TRUE или FALSE — при ошибке.

Дескриптор файла fp должен быть возвращен при успешном открытии файла функцией fopen() или fsockopen().

рореn

Открытие дескриптора вывода процесса

int рореп (string command, string mode)

Запускает процесс приложения command и возвращает дескриптор потока ввода/вывода, назначенный ему в режиме mode (аналогично fopen(J). При ошибке возвращает FALSE. Дескриптор может в дальнейшем использоваться функциями fgets(), fgetss() и fputs(), а затем закрыт pclose().

$fp = poptn ( VtTn/ls" "r"};

См. также pclose().

pclose

Закрытие дескриптора процесса

int pclose (int fp)

Закрывает дескриптор процесса (он должен быть предварительно успешно создан функцией рореп()).

Возвращае r-код завершения процесса.

См. также рореn().

fstat

Получение информации о файле через дескриптор

array fstat (int fp)

Возвращает массив с информацией о файле аналогично функции stat(). но отличается от нее тем, что принимает в качестве аргумента дескриптор успешно открытого файла вместо его имени.

fgetc

Чтение символа из файла

string fgetc (int fp)

Возвращает строку, содержащую один символ из файла, имеющего дескриптор fp (ранее возвращенный функцией fopen(), popen() или fsockopen()). Если это символ EOF (указатель конца файла), возвращает FALSE.

См. также: fread(), fopen(), popen(), fsockopen() и fgets().

fgets

Чтение строки из файла

string fgets (int fp, int length)

Возвращает строку из файла, имеющего дескриптор fp (ранее возвращенный функцией fopen(), popen() или fsockopen()). Длина возвращаемой строки указывается аргументом length. Если в строке встречается символ EOF (указатель конца файла) или «\n» (конец строки), то возвращаются все символы вплоть до этого (длина строки тогда может быть менее length). При ошибке возвращает FALSE.

$fd = fopen ("/tmp/inputfile.txt". "r"):
while (Ifeof ($fd)) {
$buffer = fgets($fd. 4096);
echo Sbuffer; } fclose ($fd):

См. также: fread(), fopen(), popen(), fgetc(), fsockopen() и socket_set_ timeout().

fgetss

Чтение строки из файла и удаление из нее HTML-тегов

string fgetss (int fp, int length [, string allowable_tags])

Функция подобна fgets(), за исключением того, что она также удаляет любые HTML- и PHP-теги из получаемого текста. В аргументе allowable_tags можно указать, какие теги не следует удалять.

См. также: fgets(), fopen(), fsockopen(), popen() и strip_tags().

fgetcsv

Чтение строки файла и разделение ее на поля CSV

array fgetcsv (int fp, int length [, string delimiter])

Функция сходна с fgets(), но после чтения она разделяет полученную строку на поля (согласно формату CSV) и возвращает их в элементах массива. Разделителем полей считается запятая либо другой символ, который можно указать в аргументе delimiter.

Аргумент fp должен быть дескриптором успешно открытого файла (возвращенный функциями fopen(), popen() или fsockopen()).

Аргумент length должен быть больше, чем самая длинная строка CSV-файла (включая завершающие символы строки).

Возвращает FALSE при ошибке (которой также считается непредвиденный конец файла). Часто в CSV-файлах признаком конца файла считается пустая строка, которая будет возвращена в виде массива, содержащего один нулевой элемент, и это не будет считаться ошибкой.

$l"OW = 1:
$fp = fopen ("test.csv"."r").
while
(Sdata = fgetcsv ($fp. 1000. ".")) {
$num = count ($data);
print "<p>
Jnura fields in line $row: <br>";
$row++:
for ($c=0: $c<$num: Ic++)
{ print $data[$c] "<br>";
} } fclose ($fp):

file

Чтение всего файла в массив

array file (string filename [, int use_include_path])

Функция подобна readfile(), но строки файла возвращаются в массиве. Концом строки считается символ «\п» (он также возвращается).

Можно указать необязательный аргумент use_include_path со значением 1, и тогда файл будет искаться не только в текущем каталоге, но и в установленном по умолчанию (директивой include_path в файле php.ini) для подключаемых файлов.

<?php
// прочитать web-страницу в массив
и распечатать Sfcontents = file
('http://www.php.net'): while (list (Slinejmm. Sline)
= each ($fcontents))
{ echo "<b>Line $line_num:</b> " .
htmlspecialchars ($line) .
"<br>\n", }
// прочитать в одну строку
$fcontents - join (". file
('http://www.php.net')): ?>

См. также: readfile(), fopen(), fsockopen() и popen().

fread

Чтение файла

string fread (int fp, int length)

Возвращается строка, представляющая последовательность байтов файла (указанного дескриптором fp) длиной length. Чтение прекращается также, если встречается символ EOF.

$filename = "/usr/local/something.txt";
$fd - fopen (Sfilename. "r").
$contents = fread ($fd, filesize (Sfllename)):
fclose ($fd):

См. также: fwrite(), fopen(), fsockopen(), popen(), fgets(), fgetss(), fscanf(), file(), fpassthru().

readfile

Вывод файла

int readfile (string filename [, int use_include_path])

Функция выполняет последовательно три операции. Открывает файл, так же как функция fopen() (режим открытия не указывается, так как он используется только для чтения). Читает и выводит все содержимое файла в стандартный поток вывода и закрывает файл.

Отличие этой функции от директив include(), require() в том, что она возвращает количество выведенных байтов (или значение FALSE при ошибке). В случае возникновения ошибки также выводится стандартное уведомление (если, конечно, при вызове функции сообщения об ошибках не блокируются, например, так: @readfile).

См. также: fpassthru(), file(), fopen(), include(), require(), virtual().

fpassthru

Вывод содержимого файла int fpassthru (int fp)

Читает содержимое файла с дескриптором (пока не встретится символ EOF) и выводит его в стандартный поток вывода. При ошибке возвращается FALSE.

Дескриптор должен быть возвращен при успешном открытии файла функцией fopen(), popen() или fsockopen(). После вывода файл автоматически закрывается (и дескриптор становится недействителен).

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

См. также: readfile(), fopen(), popen() и fsockopen()

fscanf

Форматированный ввод из файла

mixed fscanf (int handle, string format [, string varl...])

Функция подобна sscanf(), но она читает данные из файла (указанного дескриптором handle) и интерпретирует их согласно формату, указанному аргументом format. Если в функции указываются только два аргумента, извлеченные данные возвращаются в массиве; в противном случае необходимо указывать ссылки на переменные, в которых следует сохранить значения (тогда функция возвращает число инициализированных переменных).

$fp = fopen ("users.txt"."г").
while
(Suserinfo = fscanf ($fp. "ls\Ws\Us\n")) {
list ($name. Sprofession,
Scountrycode) = lusennfo;
//... делаем что-то со значениями
} fclose($fp),

Содержимое файла users.txt

Javier argonaut pe
hiroshi sculptor jp
robert slacker us

См. также: fread(), fgets(), fgetss(), sscanf(), printf() и sprintf().

fwrite

Запись в файл

int fwrite (int fp. string string [, int length])

Записывает содержимое строки string в файловый ноток (на который указывает дескриптор fp). При указании аргумента length производится запись только указанного числа байтов (но не большего, чем содержится в строке), а также игнорируется параметр конфигурации magic_quotes_runtime (и слеши не исключаются из записываемой строки).

См. также: fread(), fopen(), fsockopen(), popen() и fputs().

fputs

Синоним функции fwrite

int fputs (int fp, string str [, int length])

Аргумент длины записываемой строки length может не указываться (тогда строка str записывается в файл целиком).

fflush

Запись стандартного вывода в файл int fflush (int fp)

Весь буферизированный вывод записывается в открытый файл, на который указывает дескриптор fp. Возвращает TRUE или FALSE — при ошибке.

feof

Проверка достижения конца файла

int feof (int fp)

Возвращает TRUE, если курсор файла указывает на символ EOF или возникает ошибка; иначе — FALSE.

Аргумент fp должен быть дескриптором успешно открытого файла (возвращенный функциями fopen(), popen() или fsockopen()).

ftell

Проверка позиции курсора файла

int ftell (int fp)

Возвращает позицию курсора файла, на который указывает дескриптор fp, то есть то смещение от начала файлового потока, в которое производится запись или осуществляется чтение. При ошибке возвращает FALSE.

Аргумент fp должен быть дескриптором успешно открытого файла (возвращенный функциями fopen(), popen()).

См. также: fopen(), popen(). fseek() и rewind().

fseek

Установка позиции курсора файла

int fseek (int fp, int offset [. int whence])

Новая позиция курсора файла указывается аргументом offset и измеряется в байтах от места, указанного аргументом whence, который может принимать одно из значений:

  • SEEK_SET — от начала файла;
  • SEEK_CUR — от текущей позиции курсора;
  • SEEK_ENO — от конца файла.

Если аргумент whence не указывается, смещение вычисляется от начала файла. При ошибке возвращается -1, иначе 0. Заметьте: указание смещения после символа EOF не считается ошибкой.

Дескриптор файла fp должен быть возвращен успешным вызовом функции fopen(). С файлами, открытыми через протокол HTTP или FTP, функция не работает.

См. также: ftell() и rewind().

rewind

Установка курсора на начало файлового потока

int rewind (int fp)

Функция эквивалентна вызову fseek(fp, 0). При ошибке возвращается 0.

См. также: fseek() и ftel().

Работа с архивами Zlib

Модуль zlib (http://www.info-zip.org/pub/infozip/zlib/), разработанный Jean-loup Gailly и Mark Adler, позволяет производить операции файлового ввода-вывода в файлах, архивированных (сжатых) методом gzip (.gz). В этом модуле РНР используется библиотека zlib версии 1.0.9. Модуль содержит большую часть родственных функций файловой системы (с префиксом gz), которые могут работать как с обычными, так и с архивными файлами (но не с секстами).

Для текущей версии РНР поддержка этих функций должна быть косвенно включена в обычные функции файловой системы. Таким образом, при подключении модуля zlib файловые функции (с помощью метода, называемого fopen-vvrapper для .gz-файлов) могут также просто работать с архивными файлами, как и с FTP-файлами. Для этого в строке имени файла (пути к нему) нужно указывать специальный префикс 'zlib:', подобно указанию URL для доступа к FTP-файлам.

<?php
$filename='C:\ZZZ.gz1.
// открыть файл для записи с
максимальным сжатием
$zp - gzopen($filename. "w9"):
// записать строку в файл
$s =- "Only a test. test. test. test,
test test. test. test!\n"
g?wnte($zp. $s);
gzclose(SzD). // закрыть файл
$zp = gzopen($filename. "г").
print gzread($zp. 3):// прочитать
З символа gzpassthru($zp):
// выводить содержимое до
конца файла и закрыть его
// еще раз вывести содержимое файла
if (rea>1gzfile($filename) != strlen($s))
{ echo "Error with zlib functions!".} ?>

gzcompress

Сжатие строки методом Gz

string gzcompress (string data [, int level])

Аргументом level можно указать степень сжатия (от минимального О до 9).

См. также gzuncompress().

gzuncompress

Распаковка gz-сжатой строки

string gzuncompress (string data [, int length])

Возвращает оригинальную строку данных, сжатую ранее функцией gzcompress(), или FALSE в случае ошибки. Ошибка может возникнуть (помимо случая поврежденных данных), если при распаковке размер строки увеличивается более чем в 256 раз или становится больше, чем указано в необязательном аргументе length.

См. также gzcompress().

readgzfile

Вывод gz-файла

int readgzfile (string filename [, int use_include_path])

Читает файл filename, распаковывает его и выводит (в стандартный поток вывода). Функция может также работать с обычными файлами (тогда распаковка не производится).

Возвращает число выведенных байтов или FALSE — в случае ошибки. В случае ошибки также выводится сообщение об ошибке (если только функция не была вызвана как Preadgzfile).

Необязательный аргумент include_path можно использовать (если его значение равно 1), чтобы поиск файла также производился в установленных параметром include_path каталогах по умолчанию.

См. также: gzpassthru(), gzfile() и gzopen().

gzfile

Чтение всего gz-файла в массив

array gzfile (string filename [, Int use_include_path])

Функция подобна readgzfi'le(), но распакованные данные не выводятся, а возвращаются в виде массива.

См. также: readgzfile() и gzopen().

gzopen

Открытие gz-файла

int gzopen (string filename, string mode [, int use_include_path])

Функция сходна с fopen(), но она работает с файлами gzip (.gz). Аргумент,mode может быть таким же, как в функции fopen() ("rb" или "wb"), но может также включать цифру, указывающую на степень используемого сжатия (например: "wb9-") и метод: f для фильтруемых данных (например: "wb6f"), h -для компрессии Хаффмана ("wblh"). Описание параметра deflatelnit2 смотрите в файле zlib.h.

Функция также может использоваться для открытия обычного файла; в таком случае gzread() будет читать данные файла без декомпрессии.

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

Необязательный аргумент include_path можно использовать (если его значение равно 1), чтобы поиск файла также производился в установленных параметром include_path каталогах по умолчанию.

$fp = gzopen ("/tmp/file gz". "r").

См. также gzclose().

gzclose

Закрытие gz-файла int gzclose (int zp)

Закрывает gz-файл, дескриптор которого zp должен был быть ранее успешно возвращен функцией gzopen(). Возвращает TRUE или FALSE - при ошибке.

gzread

Чтение последовательности символов из gz-файла

string gzread (int zp, int length)

Число читаемых байтов указывается аргументом length. Дескриптор zp должен быть ранее успешно возвращен функцией gzopen(). Чтение прекращается, когда будет прочитано length распакованных байтов или если будет обнаружен символ конца файла EOF.

Sfilename =
"/usr/local/something txt.gz": Szd =
gzopen (Sfilename. "r"). Scontents =
gzread (Szd. 10000). gzclose (Szd);

См. также: gzwrite(), gzopen(), gzgets(), gzgetss(), gzfile() и gzpassthru().

gzgetc

Чтение символа из gz-файла

string gzgetc (int zp)

Возвращает строку, содержащую единственный (распакованный) символ файла, имеющего дескриптор zp. Если встречается символ EOF, то возвращается FALSE (так же как функцией gzeof()).

Дескриптор zp должен быть ранее успешно возвращен функцией gzopen().

См. также: gzopen() и gzgets().

gzgets

Чтение строки

string gzgets (int zp, int length)

Возвращает распакованную строку gz-файла, имеющего дескриптор zp.

Чтение прекращается, когда будет прочитано length-1 распакованных байтов, если будет обнаружен символ конца файла EOF или встретится символ конца строки.

При ошибке возвращает FALSE.

Дескриптор zp должен быть ранее успешно возвращен функцией gzopen().

См. также: gzopen(), gzgetc() и fgets().

gzgetss

Аналог gzgets, удаляющий теги HTML и PHP из текста

string gzgetss (int zp, int length [, string allowablejtags])

Необязательным аргументом можно указать, какие теги не следует удалять.

См. также: gzgets(), gzopen(), strip_tags().

gzpassthru

Вывод всего содержимого gz-файла до его конца

int gzpassthru (int zp)

Читает (распаковывая) gz-файл с дескриптором zp от текущей позиции курсора и до конца (позиции, в которой находится символ EOF) и затем выводит полученное содержимое в стандартный поток вывода. При ошибке возвращает FALSE.

Дескриптор zp должен быть ранее успешно возвращен функцией gzopen().

После вывода файл закрывается (функция gzclose() вызывается неявно).

gzwrite

Запись строки в gz-файл

int gzwrite (int zp, string string [, int length])

Записывает содержимое строки string (упаковывая) в gz-файл с дескриптором zp. Если указан аргумент length, то запись прекращается после того, как будет записано length (неупакованных) байтов (если размер строки более length байтов).

Заметьте, что параметр magic_quotes_runtime (если он разрешен) игнорируется и слеши не удаляются из строки string, если указывается аргумент length.

См. также: gzread(), gzopen() и gzputs().

gzputs

Синоним функции gzwrite

int gzputs (int zp, string str [, int length])

gzeof

Проверка наличия символа конца файла

int gzeof (int zp)

Возвращает TRUE, если текущий символ gz-файла — это EOF или если при операции чтения произошла ошибка; иначе возвращает FALSE.

Дескриптор zp должен был быть ранее успешно возвращен функцией gzopen().

gztell

Определение позиции курсора gz-файла int gztell (int zp)

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

При ошибке возвращает FALSE.

Дескриптор zp должен был быть ранее успешно возвращен функцией gzopen().

См. также: gzopen(), gzseek() и gzrewind().

gzseek

Перемещение курсора gz-файла int gzseek (int zp, int offset)

Передвигает позицию курсора файла (на который указывает дескриптор zp) на число байтов от его начала offset.

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

Функция возвращает 0 или -1 — при ошибке. Заметьте, перемещение курсора в позицию после символа EOF не считается ошибкой.

См. также: gztell() и gzrewind().

gzrewind

Перемещение курсора в начало gz-файла

int gzrewind (int zp)

При ошибке возвращается 0.

Дескриптор zp должен был быть ранее успешно возвращен функцией gzopen().

См. также: gzseek() и gztell().

Сжатые файлы Bzip2

Модуль bzip2 использует библиотеку (http://sources.redhat.com/bzip2/), написанную Джулианом Севардом (Julian Seward), которая позволяет проводить операции файлового ввода-вывода из архивов bzip2 (.bz2).

Чтобы использовать функции bzip2 в РНР, надо при компиляции указать параметр —with-bz2[=DIR] (для этого требуется библиотека bzip2/ Iibbzip2 версии не ранее 1.0.x). Этот модуль можно также подключить динамически. Так как модуль добавлен недавно, он может работать нестабильно.

<?php
Sfilename = "/tmp/testfile.bz2";
$str = "This is a test string.\n":
$bz = bzopen($filename. "w");
bzwrite($bz. $str),
bzclose($bz).
Ibz = bzopen($filename. "r").
echo print bzread($bz. 10). bzread($bz).
bzclose($bz). ?>

bzcompress

Сжатие строки методом bzip2

string bzcompress (string source [, int blocksize [, int workfactor]]) Исходная строка указывается в аргументе source.

В необязательном аргументе blocksize можно указать уровень сжатия (от 1 до 9, где 9 — максимальное сжатие, требующее максимума ресурсов), по умолчанию он равен 4.

Аргумент workfactor управляет сжатием данных с высокой частотностью. Возможные значения от 0 до 250. О — специальное значение. По умолчанию: 30.

$str = "sample data" :
$bzstr = bzcompress($str. 9);
pnnt( $bzstr ):

См. также: bzdeconpress().

bzdecompress

Распаковка строки, сжатой методом bzip2

string bzdecompress (string source [. int small])

Распаковывает строку source, содержащую сжатые методом bzip2 данные, и возвращает полученную строку. Если в необязательном аргументе указывается значение TRUE, используется алгоритм, потребляющий минимальный объем памяти (максимум 2.3 Мб), но при этом функция работает медленнее (в 2 раза).

<?php
$start_str = "Это первоначальная
несжатая строка":
Jbzstr -= bzcompress($start_str'>;
print( 'Compressed
String: Sbzstr \n<br>" ):
$str = Dzdecompress($bzstr);
print( "Decompressed
St1" rig. ' $str . "\n<br>" ): ?>

См. также: bzcompress().

bzopen

Открытие сжатого файла bzip2

int bzopen (string filename, string mode)

Возвращает дескриптор открытого файла или FALSE в случае ошибки. Аргумент mode может быть таким же, как в функции fopen() ("r" для чтения, "w" для записи и т. д.).

<?php
$bz = bzopenf"/trap/too.bz2", "r"):
$decompressea_file = bzread($oz.
fiIesize("/tmp/foo.bz2")):
bzclose($bz):
print( "The contents of
/tmp/foo.Dz2 are: " ):
print( "\n<br>n" ):
print( $decompressed_file ). ?>

См. также bzclose().

bzclose

Закрытие файла bzip2 int bzclose (int bz)

Закрывает файл bzip2, дескриптор которого bz должен был быть ранее успешно возвращен функцией bzopen(). Возвращает TRUE или FALSE - при ошибке.

См. также bzopen().

bzread

Чтение из файла bzip2

string bzread (int bz [, int length])

Число читаемых байтов можно указать аргументом length (если он не указывается, то его значением считается 1024). Дескриптор bz должен быть ранее успешно возвращен функцией bzopen(). Чтение прекращается, когда будет прочитано length распакованных байтов или если будет обнаружен символ конца файла EOF.

<?php
$bz = bzopen("/tmp/foo.bz2". "г"):
$str
bzread($bz. 2048), printt $str ):?>

См. также: bzwrite() и bzopen().

bzwrite

Запись в файл bzip2 данных

int bzwrite (int bz, string data [, int length])

В аргументе data указывается строка, содержащая записываемые данные. В аргументе bz указывается дескриптор открытого файла bzip2. Если указан аргумент length, то запись прекращается после того, как будет записано length (неупакованных) байтов (если размер строки более length байтов).

<?php
$str = "uncompressed data".
$bz - bzopenCYtmp/foo.bzZ", V).
bzwnte($bz. $str. strlpn($str)).
bzclose($bz); ?>

См. также: bzread() и bzopen().

bzflush

Запись всего буферизованного вывода в файл bzip2

int bzflush (int bz)

В аргументе bz указывается дескриптор открытого файла.

Возвращается TRUE или FALSE — при ошибке.

См. также: bzread() и bzwrite().

bzerrno

Получение номера ошибки bzip2 int bzerrno (int bz)

В аргументе bz указывается дескриптор открытого файла, при операции с которым произошла ошибка.

См. также: bzerror() и bzerrstr().

bzerrstr

Получение описания ошибки bzip2

string bzerrstr (int bz)

В аргументе bz указывается дескриптор открытого файла, при операции с которым произошла ошибка.

См. также: bzerrno() и bzerror().

bzerror

Получение номера и описания ошибки bzip2 в массиве

array bzerror (int bz)

Возвращается ассоциативный массив, содержащий соответственно два элемента. В аргументе bz указывается дескриптор открытого файла, при операции с которым произошла ошибка.

Serror = bzerror($t>z):
echo $error["errno"]:
echo Sen or["errbtr"].

См. также: bzerrno() и bzerrstr().

FTP

При использовании модуля FTP им определяются две константы: FTP_ASCII и FTP_BINARY.

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

Простейший сеанс FTP может проходить следующим образом:

<?php
/.' открытие простого FTP сеанса
$connjd = ftp_connect("$ftp_server").
// login with user-name and password
$login_result = ftp_login
($conn_id. "$ftp_user_name", "$ftp_user_pass").
// проверка связи
if ((!$conn_-d) || (!$login_result))
{ echo 'Невозможно установить
Ftp связь! ".
"Для сервера $ftp_server. пользователю
Suser", die; } else
echo "Подключение к
серверу $ftp_server успешно!"; }
// загрузить файл Supload =
ftp_put($conn_ia. "$dest,ination_file".
"Ssourcejile". rrp_BINARY):
// проверка загрузки if (!$upload)
{ echo "Загрузка не удалась!";
} else { echo "Файл $source_file был
загружен как $destination_file": }
// закрыть поток FTP
ftp_quitl$copn_id). ?>

ftp_connect

Подключение к FTP-серверу

Int ftp_connect (string host [, int port])

Аргумент host указывает имя сервера, к которому осуществляется доступ, a port — используемый для подключения порт (если он не указан или указывается 0, то используется порт по умолчанию — 21).

Возвращает дескриптор потока FTP или FALSE при ошибке.

ftp_ pasv

Переключение пассивного режима

int ftp_pasv (int ftp_stream. int pasv)

Переключает режим подключения в пассивный (если аргумент pasv равен TRUE) или активный (если аргумент pasv равен FALSE). В пассивном режиме передача данных инициируется клиентом, а не сервером (это бывает необходимо при блокировке портов у клиента).

Возвращает TRUE или FALSE — при ошибке.

ftp_ login

Вход на сервер FTP

int ftpjogin (int ftp_stream, string usemame, string password)

Зарегистрироваться в системе под именем username с паролем password.

Возвращает TRUE или FALSE — при ошибке.

ftp_quit

Завершение сеанса FTP

int ftp_quit (int ftp_stream)

ftp_pwd

Определение текущего каталога

string ftp_pwd (int ftp_stream)

Возвращает текущий каталог FTP-сервера или FALSE — при ошибке.

ftp_cdup

Переход в корневой каталог

int ftp_cdup (int ftp_stream) Возвращает TRUE или FALSE — при ошибке.

ftp_chdir

Переход в каталог

int ftp_chdir (int ftp_stream, string directory)

Возвращает TRUE или FALSE — при ошибке.

ftp_mkdir

Создание каталога

string ftpjnkdir (int ftp_stream, string directory)

Возвращает имя созданного каталога directory или FALSE — при ошибке.

ftp_rmdir

Удаление каталога

int ftp_rmdir (int ftp_streara, string directory) Возвращает TRUE или FALSE — при ошибке.

ftp_nlist

Получение листинга каталога

array ftp_nlist (int ftp_stream, string directory) Возвращает массив файловых имен или FALSE — при ошибке.

ftp_rawlist

Получение детализированного листинга каталога

array ftp_raw1ist (int ftp_stream, string directory)

Исполняет РТР-команду LIST, и возвращает ее результат в массиве, где каждый элемент соответствует строке текста «как есть». Идентификатор типа системы, возвращаемый ftp_systype(), может быть использован для определения того, как следует интерпретировать результаты.

ftp_systype

Получение системного идентификатора типа FTP-сервера

string ftp_systype (int ftp_stream)

Возвращает строковое значение или FALSE — при ошибке.

ftp_ get

Загрузка файла с FTP

int ftp_get (int ftp_stream, string 1ocal_file, string remote_file, int mode)

Загружает удаленный файл remote_file с сервера FTP и сохраняет его локально под именем local_file. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_BINARY.

Возвращает TRUE или FALSE — при ошибке.

ftp_get

Загрузка и запись файла

int ftp_fget (int ftp_stream, int fp, string remote_file, int mode)

Загружает удаленный файл remote_file с сервера FTP и сохраняет его содержимое в открытом файле, имеющем дескриптор fp. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_ BINARY.

Возвращает TRUE или FALSE — при ошибке.

 

ftp_put

Загрузка файла на сервер FTP

int ftp_put (int ftp_stream, string remote_file, string localjfile, int mode)

Сохраняет файл local_file на сервере FTP под именем remote_file. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_BINARY.

Возвращает TRUE или FALSE — при ошибке.

Supload = ftp_put
($conn_id. "C:\\myfile.txt".
"/myfile.txt". FTP_ASCII);

ftp_fput

Чтение и загрузка файла на сервер

int ftp_fput (int ftp_stream, string remote_file, int fp, int mode)

Читает открытый файл (дескриптора fp) до сто конца и загружает его на сервер FTP под именем remote_fi!e. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_BINARY.

Возвращает TRUE пли FALSE — при ошибке.

ftp_size

Определение размера файла

int ftp_size (int ftp_stream, string remotejfile)

Возвращает размер файла в байтах или -1 — при ошибке. Не все серверы поддерживают эту возможность.

ftp_mdtm

Получение времени последней модификации файла

int ftpjndtm (int ftp_stream, string remote_file)

Возвращает время в формате «UNIX timcstamp» или -1 — при ошибке.

Функция не работает с каталогами.

ftp_rename

Переименование файла на сервере

int ftp_rename (int ftp_stream, string from, string to)

Переименовывает файл from в to. Возвращает TRUE или FALSE — при ошибке.

ftp_delete

Удаление файла на сервере

int ftpjJelete (int ftp_stream. string path) Возвращает TRUE или FALSE — при ошибке.

flp_site

Выполнение команды SITE на сервере

int ftp_site (int ftp_stream, string cmd)

Посылает серверу команду cmd. Возвращает TRUE или FALSE — при ошибке.

Так как команды SITE не стандартизированы, они могут различаться. Обычно они полезны для изменения прав доступа к файлам и групповой принадлежности.

Сетевые функции

ip2long

Конвертация строки адреса IPv4 в число

int ip21ong (string ip_address)

Возвращает четырехбайтовое численное представление адреса IP v4 из строки (числа, разделенные точками, например: «127.0.0.1»).

$ip = gethostbyname("wvjw.php.net");
// получить IP адрес хоста echo
"Следующие URL эквивалентны:<bг>\n".
"http://www.php.net/. http://" Sip.
"/. и http://" .ip21ong($ip)."/<br>\n":

См. также Iong2ip().

Iong2ip

Конвертация числа в строку адреса IP v4

string Iong2ip (int proper_address)

Возвращает строковое представление IP-адреса (в формате: «ааа. bbb.ccc.ddd») из числового значения.

См. также ip2long().

gethostbyaddr

Получение имени хоста, соответствующего адресу IP string gethostbyaddr (string ip_address)

В аргументе указывается адрес IP в строковом формате. При ошибке возвращается ip_address. Заметьте: большинству IP-адресов в Интернете соответствует несколько имен (одно из них: localhost).

echo gethostbyaddr("127.001");

См. также gethostbyname().

gethostbyname

Получение IP-адреса хоста

string gethostbyname (string hostname)

print gethostbyname ("localhost");
// выведет: 127.0.0.1

См. также gethostbyaddr().

gethostbynamel

Получение списка IP-адресов, принадлежащих хосту

array gethostbynamel (string hostname)

Функция используется вместо gethostbynamez(), когда хост hostname имеет несколько сетевых интерфейсов с разными адресами.

См. также: gethostbyname(), gethostbyaddr(), checkdnsrr(), getmxrr() и раздел named справочной системы man.

getprotobyname

Определение номера порта, используемого протоколом1

int getprotobyname (string name)

В системах Unix соответствие портов и протоколов указывается в файле /etc/protocols.

См. также getprotobynumber().

getprotobynumber

Определение протокола порта

string getprotobynumber (int number)

См. также getprotobyname().

getservbyname

Определение порта Интернет-службы

Int getservbyname (string service, string protocol)

Возвращает номер порта, использующийся службой service. (В системах Uni\ это соответствие портов и служб указывается в файле /etc/services) В аргументе protocol указывается тип протокола — TCP или UDP.

echo getservbyname ("HTTP"."TCP");
// может вывести- 80

См. также getservbyportt().

getservbyport

Определение Интернет-службы, использующей порт

string getservbyport (int port, string protocol)

В аргументе protocol указывается тип протокола — TCP или UDP.

echo getservbyport(21."TCP"):
// обычно выводит ftp
echo getservbyport(23."TCP").
// обычно выводит: telnet

См. также getservbyname().

checkdnsrr

Проверка записи DNS

int checkdnsrr (string host [, string type])

Отправляет запрос DNS-сервсру для поиска записей, имеющихся для хоста host. Возвращает TRUE, если были найдены записи типа type, или FALSE в противном случае, а также при ошибке.

Аргумент type может иметь одно из следующих значений: A, MX, NS, SO A, PTR, CNAME, ANY. По умолчанию (если аргумент не указан) его значение MX.

Аргумент host может указываться строкой IP-формата с разделением точками, либо быть именем хоста.

См. также: getmxrr(), gethostbyaddr(), gethostbyname(), gethostbynaroe() и раздел named справочной системы Unix man.

getmxrr

Получение MX записи для Интернет-хоста

int getmxrr (string hostname, array mxhosts [, array weight]) Инициирует поиск в БД DNS записи MX (почтовый сервер домена) для хоста hostname. Возвращает TRUE, если запись найдена; FALSE, если поиск прошел безуспешно.

Список записей MX заносится в массив mxhosts. Если указан массив weight, он заполняется дополнительной информацией о записях.

См. также: checkdnsrr(), gethostbyname(), gethostbynamel(), gethostbyaddr() и раздел named справочной системы Unix man.

Сетевая отладка PHP

debugger_off

Блокировка внутреннего отладчика РНР

int debugger_off(void):

Отладчик пока находится в стадии разработки (для РНР 4).

debugger_ on

Разрешение использования внутреннего отладчика РНР

int debugger_on (string address)

Подключает отладчик но адресу address (на удаленном сервере). Отладчик пока находится в стадии разработки, но он доступен для РНР версии 3.

define_ syslog_variab!es

Инициализация константы диспетчера системных событий

void define_syslogj/araibles (void)

Эти константы в дальнейшем используются функциями системных событий (syslog).

См. также: openlog(), syslog() и closelog().

openlog

Подключение к диспетчеру системных событий (system logger)

int openlog (string ident. int option, int facility)

Функция не обязательна для использования. Она автоматически (при необходимости) вызывается функцией syslog(), и в этом случае аргумент ident (по умолчанию) используется со значением FALSE. Строка ident будет добавляться к каждому отсылаемому сообщению. Обычно используется при необходимости явной передачи аргументов option и facility.

Аргумент option используется для указания параметров при генерации системного события (log message). Могут использоваться следующие значения:

  • LOG_CONS — в случае ошибки при посылке сообщения оно выводится непосредственно в системную консоль;
  • LOG_NDEIAY — незамедлительно подключиться-к диспетчеру системных событий:
  • LOGJDDELAY — (по умолчанию) отложить подключение до посылки первого сообщения;
  • LOG_PERROR — также выводить сообщения в стандартный поток ошибок;
  • LOG_PID — включать в сообщения идентификатор процесса (РШ).

Возможно одновременное указание нескольких значений при помощи битового оператора ИЛИ, например: LOG_CONS | LOG_NDELAY LOG_PID.

Аргумент facility указывает вид приложения, посылающего сообщение. Это влияет на их обработку системой;

  • LOG_AUTH — сообщения безопасности/авторизации (целесообразнее использовать LOG_AUTHPRIV на тех системах, где эта константа определена);
  • LOG_AUTHPRIV — персональные сообщения бсчогасности/авторнза-ции;
  • LOG_CRON — служба таймера (демоны сгоп и at);
  • LOGJDAEMON — другие системные службы (daemons);
  • LOGJCERN — сообщения ядра системы (kernel);
  • LOG_LOCALO ... LOG_LOCAL7 — зарезервировано для локального использования;
  • LOGJ.PR — подсистема линейного принтера;
  • LOG_MAIL — почтовая подсистема (mail);
  • LOG_NEWS — подсистема новостей USENET;
  • LOG_SYSLOG — внутренне генерируемые сообщения (демоном syslogd);
  • LOGJJSER — сообщения, порождаемые приложениями (user-level);
  • IOGJJUCP — подсистема UUCP.

См. также: define_syslog_variables(), syslog() и closelog().

closelog

Отключение от диспетчера системных событий

int closelog(void)

Использование функции необязательно.

См. также: define_syslog_variables(), syslog() и openlog().

syslog

Посылка системного сообщения

Int syslog (int priority, string message)

i В аргументе message укалывается содержание сообщения. Пары символов %т в этом сообщении заменяются на строку текущего сообщения об ошибке (strerror), представляющую значение еггпо. Аргу-/ мент priority является комбинацией уровня приложения и приоритета события. Его возможные значения (в порядке понижения приоритета):

  • LOG_EMERG — неработоспособность системы;
  • LOG_ALERT — необходимы срочные действия;
  • LOG_CRIT — критическое состояние;
  • LOG_ERR — ошибка;
  • LOG_WARNING — предупреждение;
  • LOG_NOTICE — значимое сообщение;
  • LOG_INFO — информационное сообщение;
  • LOG_DEBUG — сообщение отладки.

define_syslog_vcr ablest);
GpenlogC'mySrnpiog".
LOG_PID | LOG_PERROR. LOGJ.OCALO):
// ... if (!authorized_client())
{ // процедура авторизации
// неавторизирован! (сохранить сообщение об этом)
Sacress = date("Y/m/d H:i:s").
syslog(LOG_WARNING."Unauthorized client:
Saccess
$REMOTE_AODR ($HTTP_USER_AGENT)"): )
closelog():

В системной документации должно быть указано, как установить собственный обработчик системных событий.

На системах Winch ws NT служба syslog эмулируется как Event Log.

См. также: define_syslog_variables(), openlog(), closelog().

Общий низкоуровневый сетевой интерфейс

fsockopen

Открытие сокета Интернета или домена Unix

int fsockopen (string [udp://]hostname, int port [, int errno [, string errstr [, double timeout]]])

Инициирует поток подключения к Интернет (AF_INET, используя TCP или UDP) или в домене Unix (AF_UNIX). Для доменов Интернет открывает сеанс подключения (TCP socket connection) с компьютером hostname через порт port. Значение hostname может быть либо полным доменным именем (FQDN), либо адресом IP. Для подключений UDP необходимо явно указывать протокол, например: «udp:// hostname». Для доменов Unix hostname может содержать путь к соке-ту, тогда значение port должно быть равно 0. Необязательным аргументом timeout можно указать допустимый промежуток времени подключения в секундах.

Функция возвращает дескриптор файла, как при открытии локального файла, который затем может использоваться в функциях файлового ввода/вывода: fgets(), fgetss(), fputs(), fclose() и feof().

При возникновении ошибки возвращает FALSE и устанавливает системные значения номера и сообщения причины ошибки в аргументы (они должны передаваться по ссылке) errno и errstr. Если возвращается FALSE, а аргумент errno равняется 0, то это означает, что ошибка произошла до вызова функции (возможная причина в инициализации сокета).

По умолчанию сеанс открывается в эксклюзивном (блокированном) режиме.

См. функцию socket_set_blocking().

$fp = fsockopen
("www.php.net". 80. &$errno. &$errstr. 30).
if (!$fp) {
echo "Serrstr ($errno)<br>\n". } else {

fputs ($fp. "GET / HTTP/1 0\r\n\r\n");
while (!feof($fp)) { echo fgets ($fp.l28).
fclose ($fp):

Следующий пример демонстрирует получение даты и времени от UDP службы «daytime» (порт 13) на локальной машине.

$fp = fsockopen
("udp://127.0.0.1". 13. &$errno. Merrstr):
If (!$fp) {
echo "ERROR: Serrno - $errstr<br>\n", }
else { fwnte($fp,"\n");
echo fread($fp. 26):
fclose($fp): }

См. также: pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose() и feof().

pfsockopen

Открытие устойчивого подключения

j int pfsockopen (string hostname, int port [, int errno _jy [, string errstr [, int timeout]]])

Функция полностью подобна fsockopen() с той разницей, что подключение не закрывается по окончании сценария.

socket_get_status

Получение статуса подключения

array socket_get_status (resource socket_get_status)

Возвращает в массиве информацию об открытом подключении. В настоящее время возвращаются четыре элемента:

  • timed_out (bool) — длительность периода ожидания ответа (тайм-аут);
  • blocked (bool) — заблокированность;
  • eof (bool) — получен ли символ EOF;
  • unread_bytes (int) — число байтов, оставшихся в буфере.

См. также: accept_connect(), bind(), connect(), listen(), strerror().

socket_set _timeout

Установка периода timeout для сокета

bool socket_set_timeout (int socket_descriptor, int seconds, int microseconds)

Устанавливает для подключения socket_descriptor длительность периода ожидания ответа, это сумма аргументов seconds (секунды) и microseconds (микросекунды).

$fp = fsockopen("www.php net". 80).
if(!$fp) {
echo "Ошибка подключения \n":
} else { fputs($fp."GET /
HTTP/1 0\n\n"):
$start = time():
socket_set_t i meout($ fp. 2):
$res = fread($fp. 2000):
var_dump(socket_get_status($fp))
fclose($fp);
print $res: }

См. также: fsockopen() и fopen().

socket_set_blocking

Установка режима блокирования

int socket_set_blocking (int socket_descriptor, int mode)

Если в аргументе mode указывается значение FALSE, то обозначенный дескриптором socket_descriptor сокет переводится в неблокируемый режим. Противное происходит при TRUE. Это воздействует на вызовы функций чтения, подобные fgets(), которые исполняются незамедлительно в неблокированном режиме или, иначе, ожидают разблокировки (получения читаемых данных).

Низкоуровневый сетевой (сокет) интерфейс

Эта группа функций позволяет использовать низкоуровневый сетевой интерфейс и выступать как в качестве сервера, так и в качестве клиента. Для возможности их использования они должны быть разрешены при компиляции директивой --enable-sockets. Подразумевается, что вы имеете представление о том, как функционирует этот интерфейс на уровне системы.

Наиболее общий сетевой интерфейс предоставляют сокет-функции fsockopen() и pfsockopen() (их проще использовать в том случае, если вам не требуется создание сервера).

Пример 1. Простой TCP/IP сервер

Этот пример иллюстрирует реализацию простого сервера, отвечающего на запросы. Измените адрес и порт по вашему усмотрению. Подключиться к этому серверу можно с помощью сетевого клиента, например командой: telnet 192.168.1.53 10000 (параметры: ваш адрес и используемый порт). Все, что будет посылаться на сервер, будет на нем выводиться и возвращаться эхом клиенту. Для прекращения сеанса связи введите 'quit'.

<?php
error reporting (E_ALL);
/* Позволяет сценарию бесконечно
удерживать связь. */ setjnmejimit (0):
Saddress = '192.168.1 53';
/* установите свои значения
*/ Sport = 10000:
if (($sock = socket
(AFJNET. SOCK_STREAM. 0)) < 0)
{ echo " Ошибка в socketO: "
. strerror (Ssock) . "\n": }
if (($ret = bind (Ssock. Saddress. Sport))
< 0) { echo "Ошибка в bind()
. " strerror ($ret) "\n"; )
if ((Sret = listen (Ssock. 5)) < 0)
{ echo "Ошибка в listen(): "
. strerror (Sret) . "\n"; }
do ( if ((Smsgsock = accept_connect
($sock)) < 0) { echo
"Ошибка в accept_connect().
". strerror (Smsgsock)."\n" break;
} do { $buf = " ;
Sret = read (Smsgsock. Sbuf. 2048):
if (Sret < 0) {
echo "Ошибка в read(): " strerror (Sret) .
"\n": break 2; }
if (Sret == 0) { break 2. }
Sbuf = trim (Sbuf):
if ($buf == 'quit') {
close (Smsgsock);
break 2: } Stalkback = "Вы ввели
'Sbuf'.W: write (Smsgsock. Stalkback,
strlen (Stalkback)); echo "Sbuf\n": }
while (TRUE): close (Smsgsock). }
while (TRUE). close (Ssock); ?>

Пример 2. Простой TCP/IP клиент

Данный сценарий получает страницу через HTTP, отправляет запрос HEAD, выводит ответ и завершается.

<?php
error_reporting (E_ALL);
echo "<h2>TCP/IP Connection</h2>\n";
/* Получить порт службы WWW
(обычно: 80). */ $service__port =
getservbyrame ('www'. 'tcp'):
'* Попучить IP адрес хоста */
Saddress = gethostbyname
Cwww.php.net'):
/* Создать TCP/IP socket. */
Ssocket - socket (AFJNET. SOCK_SlRtAM. 0):
if (Ssocket < 0) {
echo "Ошибка в socketO:
" strerror (Ssocket) . "\n": }
else { "socket создан " strerror (Ssocket) .
"\n", }
echo "Попытка подключиться
к '$address' (порт 'Sservice_port')
..."; Sresult = connect
(Ssocket. Saddress. $servKe_port);
if (Sresjit 0) { echo "Ошибка в
connect;): ($result) " strerror(Sresult)
."\n"; } else { echo "OK \r". }
$111 = "HFAD / HTTP/1.0\r\rur\n";
// посылаемые данные $out = '':
// буфер для приема данных
echo "Sending HTTP HEAD request...":
// послать запрос заголовка HTTP
write (Ssocket. $in, strlen ($in)). echo "GKAn":
echo "Reading response:\n\n":

// принять ОТВEТ (заголовок) while
(read (Ssocket. Sout. 2048))
{ echo Sout: } echo "closing
socket..."; close (Ssocket):
echo "OK.\n\n": ?>

socket

Создание сокета

int socket (int domain, int type, int protocol)

Создаст конечную точку сетевой коммуникации (сокет) и возвращает его дескриптор. При ошибке возвращает отрицательное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки.

Аргументом domain указывается тин сети, в которой создастся сокет; %. допустимые значения: AF JNET и AF_UNIX.

Аргумент type указывает тип создаваемого сокета; он может быть одним из следующих: SOCK_STREAM, SOCKJDGRAM, SOCKJEQPACKET, SOCK_RAW, SOCK RDM или SOCK PACKET.

Аргумент protocol определяет используемый протокол передачи данных.

Более подробная информация содержится в системной документации.

См. также: accept_connect(), bind(), connect(), listen(), strerror() и socket_get_status().

close

Закрытие сокета

bool close (int socket)

Закрывает сокет, указанный дескриптором, и возвращает TRUE или FALSE (при ошибке или при недопустимом дескрипторе).

Заметьте: функция не может использоваться с файловыми дескрипторами РНР, созданными fopen(), popen(), fsockopen(), psockopen(); она работает только с теми, которые созданы функциями socket() или accept_connect().

См. также: bind(), listen(), socket(), socket_get_status() и strerror().

connect

Подключение к сокету

int connect (int socket, string address [, int port])

Инициирует подключение, используя дескриптор socket (который должен быть ранее успешно создан функцией socket()). Возвращает О или, при ошибке, отрицательное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки.

Аргумент address должен содержать либо адрес IP, в формате с разделением точками (например: 127.0.0.1), если socket принадлежит семейству AF_INET; либо строку пути к соксту в домене Unix, если он из семейства AFJJNIX.

Аргумент port используется только для AF_INET сокет и определяет порт удаленной машины, к которому производится подключение.

См. также: bind(), listen(), socket(), socket_get_status() и strerror().

bind

Привязка сокета к адресу

int bind (int socket, string address [. int port])

Назначает socket (который должен быть ранее успешно создан функ-дней socket()) IP-адресу address. Возвращает 0 или, при ошибке, от-рнцатсльное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки.

Аргумент должен содержать либо адрес IP, в формате с разделением точками (например: 127.0.0.1), если сокет принадлежит семейству AF_INET; либо строку пути к,сокету и домене Unix, если он из семейства AFJJNIX.

Аргумент port используется только для AF_INET сокет и определяет порт удаленной машины, к которому производится подключение.

Заметьте: для подключения (в качестве клиента) используется функция connect(), эта же функция позволяет выступать в роли сервера (для этого дополнительно используются функции accept_connect() и listen()).

См. также: accept_connect(), connect(), listen(), socket(), socket_get_ status() и strerror().

listen

Разрешение приема данных из сокета

int listen (int socket, int backlog)

После того как функцией socket() создан сокет и он назначен адресу (его порту) функцией bind(), эта функция позволяет системе ожидать получения внешних данных и перенаправлять их в socket. Аргумент backlog указывает максимальное число входящих и воспринимаемых подключений.

Функция применима только к типам сокетов: SOCK_STREAM или SOCK SEQPACKET.

Возвращает 0 или, при ошибке, отрицательное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки.

См. также: accept_connect(), bind(), connect(), socket(), socket_get_status() и strerror().

accept_ connect

Прием данных от сокета

int accept connect (int socket)

После того как функцией socket() создан сокет, и он был назначен адресу (его порту) функцией bind(), и функцией listen() было разрешено принимать входящие подключения; эта функция указывает системе принимать внешние данные из socket.

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

При появлении нескольких входящих подключений используется первое; при их отсутствии функция будет ожидать их появления. Если socket был разблокирован функцией socket_set_blocking() (или set_ nonblockO), при отсутствии входящих данных функция завершается с соответствующим кодом ошибки.

См. также: bind(), connect(), listen(), socket(), socket_get_status() и strerror().

read

Получение данных от сокета

int read (int socket_des, string Sbuffer, int length)

Функция читает данные из socketjies (сокет-дсскриптор, «воссозданный» функцией accept_connect()) в буфер Sbuffer, в объеме байтов, указанном length. Чтение завершается ранее, если встречается символ <<\n», <<\t» или «\0». Возвращает число прочитанных байтов.

См. также: accept_connect(), bind(), connect(), listen(), strerror(), socket_get status() и write().

write

Запись данных в сокет

int write (int socket_des, string Sbuffer, int length)

Записывает в сокет socketjjes содержимое буфера Sbuffer в объеме length байтов.

См. также: accept_connect(), bind(), connect(), listen(), read(), strerror() и socket_get_status().

strerror

Получение описания ошибки сокета

string strerror (int errno)

Принимаемый аргумент errno является значением, возвращаемым одной из сокет-функций. Возвращается строка текста, объясняющая код ошибки. Это делает более удобным разбор причин неработоспособности.

<?php
if (($socket = socket (AFJNET,
SOCK_STREAM. 0)) < 0) {
echo "Причина ошибки в socket():
" . strerror (Ssocket) . "\n": }
if (($ret = bind ($socket. '127.0.0.1'. 80)) < 0)
{ echo "Причина ошибки в bind():
" . strerror ($ret) . "\n": } ?>

Если указанный сценарий будет исполняться не с административными привилегиями (root), то скорее всего он выведет: «Причина ошибки в bind(): Permission denied».

См. также: accept_connect(), bind(), connect(), listen(), socket() и socket_ get_status().

Библиотека CURL (Client URL Library)

PHP поддерживает библиотеку libcurl, созданную Даниелем Стенбер-гом (Daniel Stenberg), которая позволяет осуществлять подключение и взаимодействие с разными типами серверов, используя различные протоколы. В настоящее время libcurl поддерживает протоколы: http, https, ftp, gopher, telnet, diet, file, Idap. Также библиотека поддерживает сертификаты HTTPS, методы HTTP POST и PUT, загрузку с FTP и HTTP, прокси, cookies и аутентификацию пользователя с паролем.

Для того чтобы использовать функции CURL, необходимо установить пакет (package) CURL (его можно загрузить с http://curl.haxx.se/). РНР необходима версия CURL 7.0.2-beta или выше. Затем нужно перекомпилировать РНР с параметром — with-curl[=DIR], где DIR указывает на месторасположение каталога, содержащего каталоги lib и include. В каталоге include должна находиться папка curl, содержащая файлы easy.h n curl.h, а в каталоге lib должен находиться файл libcurl.a.

Схема использования функций проста: сначала инициализируется сессия CURL, используя функцию cur'MnitO, при этом устанавливаются параметры передачи, с которыми она будет выполнена функцией curl_exec(); после чего сессия может быть завершена с помощью curl_ close(). Далее приводится пример, возвращающий домашнюю страницу РНР и сохраняющий ее в файле.

<?php
$ch = curl_imt ("http://www.php.net/"):
$fp = fopen ("php_homepage.txt". "w"):
curl_setopt ($ch. CURLOPTJILE. $fp):
curl_setopt ($ch. CURLOPT_HEADER. 0).
curl_exec ($ch): curl_close ($ch):
fclose ($fp;. ?>

curl_ init

Открытие сеанса CURL

int cur!_init ([string url])

Инициализирует новую сессию и возвращает дескриптор CURL, далее используемый функциями curl_setopt(), curl_exec() и curl_close(). В функции можно указать необязательный аргумент url, в дальнейшем используемый как параметр CURLOPT_URL, который также можно установить функцией curl_setopt().

<?php
$ch = curljmt()
cjrl_setopt
($ch. CURLOPT_URL. "http://www.zend.com/"):
curl_setopt ($ch. CURLOPTJHEADER. 0):
curl_exec ($ch). curl_close ($ch);?>

См. также: curl_close(), curl_setopt().

curl_setopt

Установка параметров передачи CURL

boo! curl_setopt (int ch, string option, mixed value)

Функция устанавливает параметр, имеющий имя option сессии CURL с именем ch, в значение value.

Для следующих возможных значений аргумента option соответствующее значение value должно указываться в виде целого числа (тип long):

  • CURLOPT_INFILESIZE: установить ожидаемый размер получаемого файла при его загрузке на удаленный сервер;
  • CURLOPTJ/ERBOSE: при ненулевом значении будет сообщаться все, что происходит в ходе сессии;
  • CURLOPT_HEADER: при ненулевом значении заголовок будет включаться в содержимое вывода;
  • CURLOPT_NOPROGRESS: при ненулевом значении блокирует отображение индикатора хода выполнения (progress meter) операций передачи (CURL transfers). (По умолчанию этот параметр установлен, и его следует изменять только в целях отладки);
  • CURLOPT_NOBODY: при ненулевом значении содержимое «BODY» не будет включаться в вывод;
  • CURLOPT_FAILONERROR: при ненулевом значении будет происходить безмолвное завершение сценария РНР, в случае получения кода возврата HTTP со значением, большим чем 300. По умолчанию же происходит нормальный возврат в сценарий, с игнорированием кода, вызвавшего ошибку;
  • CURLOPTJJPLOAD: при ненулевом значении подготавливает РНР для загрузки;
  • CURLOPT_POST: при ненулевом значении указывает РНР выполнить обычный метод HTTP POST. Тип POST будет иметь нормальный для HTML-форм вид application/x-www-from-urlencoded;
  • CURLOPT_FTPLISTONLY: при ненулевом значении РНР будет выводить только имена файлов в FTP;
  • CURLOPT_FTPAPPEND: при ненулевом значении РНР будет осуществлять добавление в конец существующего удаленного FTP-файла вместо его перезаписи;
  • CURLOPT_NETRC: при ненулевом значении РНР будет просматривать ваш файл -./netrc в поисках вашего имени пользователя (username) и пароля (password) для осуществления доступа к удаленному сайту;
  • CURLOPT_FOLLOWLOCATION: при ненулевом значении перемещается согласно получаемым переадресациям, указанным в HTTP заголовках "Location: " (так как это будет происходить рекурсивно, рсдирект будет выполняться столько раз, сколько будет получено заголовков "Location: ");
  • CURLOPT_PUT: при ненулевом значении отсылает файл методом HTTP PUT. Параметры файла CURLOPTJNFILE и CURLOPTJNFILESIZE также должны быть указаны;
  • CURLOPT_MUTE: при ненулевом значении РНР будет исполнять функции CURL не выдавая сообщений;
  • CURLOPT_TIMEOUT: передает целочисленный (long) параметр, определяющий максимально допустимое время исполнения функций CURL в секундах;
  • CURLOPT_LOW_SPEED_LIMIT: передает целочисленный (long) параметр, определяющий скорость передачи данных в байтах в секунду, которая будет использоваться для проверки того, стоит ли прервать выполнение сеанса передачи при превышении им максимально допустимого времени CURLOPT_LOW_SPEED_TIME;
  • CURLOPT_LOW_SPEED_TIME: передает целочисленный (long) параметр, определяющий максимальное время передачи данных в секундах при скорости CURLOPT_LOW_SPEED_LIMIT, при превышении которого РНР будет прерывать выполнение операции, рассматривая ее как недопустимо медленную;
  • CURLOPT_RESUME_FROM: передает целочисленный (long) параметр, определяющий смещение в байтах, от которого должна начинаться передача;
  • CURLOPT_SSLVERSION: передает целочисленный параметр, определяющий используемую версию SSL (2 или 3). По умолчанию РНР будет пытаться самостоятельно определить ее, хотя в некоторых случаях ее следует устанавливать вручную;
  • CURLOPT_TIMECONDITION: передает константный параметр, определяющий смысл параметра CURLOPT_TIMEVALUE. Возможные значения: TIMECONDJFMODSINCE (но умолчанию) или TIMECONDJSUNMODSINCE. Это применимо только к HTTP; ,
  • CURLOPT_TIMEVALUE: передает целочисленный (long) параметр, содержащий значение времени в формате «Unix-timestamp» (число секунд с 1 января, 1970). Использование этого значения зависит от установки CURLOPTJTIMEVALUE.

Для следующих возможных значений аргумента option соответствующее значение value должно указываться в строковых значениях (тип string):

  • CURLOPTJJRL: адрес URL, к которому отправляется запрос. Этот параметр также можно установить при вызове функции cur1_init();
  • CURLOPTJJSERPWD: передает строку в формате «[username]: [password]* при подключении;
  • CURLOPT_PROXYUSERPWD: при подключении к HTTP прокси передает строку в формате «[username] : [password]»;
  • CURLOPT RANGE: передаст диапазон в формате «X-Y», где значение X или Y может быть не указано. При HTTP-передаче возможна одновременная передача нескольких интервалов, разделенных за-пятыми: «X-Y.N-M»;
  • CURLOPT_POSTFIELDS: передает полную строку данных, посылаемых методом HTTP POST;
  • CURLOPT_REFERER: передает строку, содержащую заголовок "referer", используемый в запросах HTTP;
  • CURLOPTJJSERAGENT: передает строку, содержащую заголовок "user-agent", используемый в запросах HTTP:
  • CURLOPT_FTPPORT: передает строку, содержащую значение IP-адреса, используемого инструкцией ftp "POST" для подключения к удаленному серверу FTP Эта строка может содержать простой IP-адрес, имя хоста или имя сетевого интерфейса (под UNIX), и даже символ '-', указывающий системный адрес IP, используемый по умолчанию;
  • CURLOPT_COOKIE: передает строку с содержимым cookie, который будет отправлен в заголовке HTTP;
  • CURLOPT_SSLCERT: передает строку с именем файла, содержащего SSL сертификат формата РЕМ;
  • CURLOPT SSLCERTPASSWD: передает строку с содержимым пароля, необходимым для использования сертификата, указанного параметром CURLOPT_SSLCERT;
  • CURLOPT_COOKIEFILE: передает строку с именем файла, содержащего данные cookie. Этот файл должен быть в формате Netscape или виде простого текста заголовков HTTP, сохраненного в файле;
  • CURLOPT _CUSTOMREQUEST: передает строку, которая будет использоваться вместо HTTP-запроса GET или HEAD. Это имеет смысл при выполнении устаревшего запроса HTTP, например DELETE.

Не пытайтесь осуществить это, не выяснив предварительно, поддерживает ли сервер указанную команду.

Для следующих возможных значений аргумента option соответствующее значение value должно указываться дескриптором, полученным от функции fopen():

  • CURLOPT_FILE: файл, в котором следует сохранять полученные данные. По умолчанию стандартный поток вывода: stdout;
  • CURLOPT_INFILE: файл, из которого следует получать данные для передачи;
  • CURLOPT_WRITEHEADER: файл для записи содержимого заголовков;
  • CURLOPT_STDERR: файл для сохранения результатов ошибок, вместо stderr.

curl_exec

Выполнение CURL сессии

bool curt_exec (int ch)

Исполняет подготовленную сессию. Эта функция должна вызываться после инициализации сессии CURL session и после того, как все параметры сессии будут установлены.

curl_ close

Закрытие сеанса

void curl_close (int ch)

Закрытие сессии с освобождением всех ресурсов (также удаляется и дескриптор сессии CURL ch).

curl_ version

Получение версии

string curl_version (void):

Возвращает текущую версию CURL.

Отправка почты

mail

Отправление почтового сообщения

bool mail (string to, string subject, string message [. string additional_headers])

Автоматически отсылает сообщение электронной почты (используя системную функцию) с «темой» subject и содержимым message адресату to. Для указания нескольких адресатов в строке to разделяйте их запятой.

. "Моя тема". "Привет \пмне \nот пеня"),

При указании четвертого строкового аргумента эта строка будет добавляться в конец заголовка, указывая дополнительные заголовки (если их несколько, их следует разделять символом перехода на новую строку «\n»).

mail("nobodyPaol com",
"the subject". Smessage,
"From: webmaster0SSERVER_NAME\n" .
"Reply-To webmaste
r@SSERVER_NAME\nX-Mailer PHP/"
.phpversion()):

Достаточно просто конструировать комплексные сообщения.

/* получатели */
Srecipient = "Магу
<mary@urnvpr edu>" . ". " :
// заметьте запятую
Srecipient .= "adminPphp.net"
/* тема сообщения */
Ssubject = "Привет Всем! С
праздничком.". /* само
сообщение */ Imessage .=
"The following email includes a
formatted ASCII table\n".
Smessage = "Day \t\tMonth \t\tYear\n";
Smessage .= "3rd \t\tAug \t\tl970\n";
Smessage = "17rd\t\tAug \t\U973\n".
/* можно добавить подпись
(signature41 */
Smessage .= "--\r\n":
Smessage . =
"* Aienr почтовой рассылки *",
/* Дополнительные заголовки */
Sheaders .-- "From: Birthday Reminde
r <birthday@php.net>\n"; Sheaders =
"X-Sender- <birthday(?php.net>\n".
Sheaders .= "X-Mailer: PHP\n";
// Почтовый агент Sheaders .
= "X-Pnonty. l\n".
// Срочное сообщение! Sheaders .
= "Return-Path: <birthday@php.net>\n":
// Путь для возвращения сообщений
об ошибках
/* Если необходимо послать ней
в виде текста html mail.
раскомментируйте следующую строку
(указывающую тип Mime ) */
// Sheaders .= "Content-Type,
text/html; charset=iso-8859-l\n":
Sheaders .- "cc:birthdayarchive
@php.net\n"; // CC to Sheaders
= "bcc:birthd.aycheck@php.
net, birthdaygifts(3php.net\n";
// BCCs to /* and nou maiI it */
maiKJrec'Dient. Ssubject,
Jmessage. Jheaders);

ezmlm_ hash

Вычисление хеша EZMLM

int ezralra_hash (string addr)

Вычисляет хеш, необходимый для сохранения списков рассылки в базе данных MySQL.

$usег = "knsPkoehntopp de";
$ hash = ezm)m_hash '($user):
$query - sprmtf ("INSERT INTO
sample VALUFS (*s. '2s')", Shash. 5user);
$db->query($query), '/ используем
интерфейс PHPLIB db

IMAP, РОРЗ и NNTP

Для того чтобы использовать следующие функции, необходимо перекомпилировать РНР с параметром --with-imap (для этого клиентские библиотеки С должны быть установлены). Последнюю версию для компиляции можно загрузить с ftp://ttp.cac.washington.edu/imap/. Можно также подключить модуль динамически.

Несмотря на имя модуля, имеющиеся в нем функции позволяют выполнять также много других полезных операций, выходящих за рамки простого использования протокола IMAP. Лежащая в основе библиотека С-клиента также поддерживает NNTP, РОРЗ и методы доступа к локальным почтовым ящикам.

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

  • RFC821: Simple Mail Transfer Protocol (SMTP).
  • RFC822: Стандарт текстовых сообщений Интернет ARPA.
  • RFC2060: Internet Message Access Protocol (IMAP) Version 4 revl.
  • RFC1939: Post Office Protocol Vei.sion 3 (РОРЗ).
  • RFC977: Network News Transfer Protocol (NNTP).
  • RFC2076: Common Internet Message Headers.
  • RFC2045, RFC2046, RFC2047, RFC2048 и RFC2049: Multipurpose Internet Mail Extensions (MIME).

Детальное рассмотрение функционирования систем работы с электронной почтой можно найти в книгах: «Programming Internet Email» (David Wood) и «Managing IMAP» (Dianna Mullet и Kevin Mullet).

Далее под ящиками подразумеваются как папки верхнего уровня, так и вложенные.

imap_open

Подключение к серверу (открытие почтового ящика)

int imap_open (string mailbox, string username, string password [, int flags])

Возвращает дескриптор открытого почтового ящика IMAP (дескриптор подключения к серверу IMAP) или значение FALSE при ошибке. Эту функцию можно также использовать для подключения к серверам РОРЗ и NNTP, но некоторые функции будут недоступны.

В аргументе mailbox указывается имя сервера и путь к почтовому ящику. Имя сервера заключается в фигурные скобки «{» и «}», и состоит из: имени сервера (или его IP-адреса), возможного указания протокола (начинающегося со слеша '/') и необязательного значения номера порта подключения (начинающегося с двоеточия «:»). Имя сервера необходимо указывать всегда; бывает полезно указывать имя сервера в переменной, но следует учитывать, что фигурные скобки имеют специальное значение для переменных в строках в двойных кавычках, поэтому открывающую скобку следует предварять слешем, например: "\{$SERVER/pop3:110}INBOX".

Специальное значение — имя INBOX, обозначающее основной ящик пользователя (папка Входящие). Если имя ящика включает какие-либо символы помимо английских печатных ASCII, то их нужно закодировать функцией imap_utf7_encode(). Разделителем иерархии почтовых ящиков обычно является слеш, но для некоторых серверов им также может быть точка, например: «INBOX. Current. Important. Work».

Аргументами username и password указываются имя и пароль пользователя.

В аргументе flags указываются параметры открытия в виде битовой маски):

  • OP_READONLY — открыть только для чтения;
  • OP_ANONYMOUS — не использовать (обновлять) разделы новостей .newsrc (только для NNTP);
  • OP_HALFOPEN — для IMAP- и NNTP-имен: только подключение без открытия ящика;
  • CL_EXPUNGE — автоматически удалить ящик при его закрытии.

(См. также: imap_delete() и imap_expunge()).

Для подключения к серверу ШАР, использующему порт 143 на локальной машине, используйте:

$mbox = imap_open ("{localhost:143}INBOX".
"user_id". "password");

Для подключения к серверу РОРЗ, использующему порт 110 на локальной машине, используйте:

$mbox = imap_open
("{localhost/pop3:110}INBOX". "user_id".
"password").

Для подключения к серверу NNTP, использующему порт 119 на локальной машине, используйте:

$nntp = imap_open ("{localhost/nntp:119}
comp test". "". "");

Следующий пример демонстрирует подключение к серверу ШАР «your.imap.host» и вывод имеющихся ящиков и сообщений для пользователя «username».

$mbox = imap_open ("{your imap.host:143}",
"username". "password").
echo "<р><h1>Ящики Mailboxes</hl>\n".
Sfolders = imap_ilstmailbox (Smbox.
"{your.imap.host:143}". "*"):
if (Sfolders == FALSE) echo
"Ошибка- ящиков не обнаружено
<br>\n": else while (list ($key. Sval)
= each (Sfolders)) echo "\t Sval <br>\n".
echo "<р><h1>Сообщения в INBOX</hl>\n"
. Sheaders = imapjieaders (Smbox);
if (Sheaders == FALSE) { echo
"Ошибка - сообщений нет <br>\n";
} else while (list (Skey.Sval) =
each (Sheaders)) echo "\t Sval <br>\n";
imap_close(Smbox):

В общем случае должно быть выведено нечто вроде следующего:

Ящики Mailboxes
{localhost:143} l innn/i gf<br>
{loca lhost;143} linnn<br>
{local host:143}INBOX<br>
Сообщения в INBOX
ШЗ-Мау-2001 Имя Отправителя
Заголовок (1621 chars)<br>

imap_reopen

Переподключение (выбор другого ящика)

int imap_reopen (int imap_stream, string mailbox [, string flags])

Функция подобна imap_open() с тем отличием, что она не создает новый дескриптор подключения, а использует уже существующий imap_ stream (имя пользователя и его пароль не изменяются). Аргументы mailbox и flags аналогичны.

Возвращает TRUE или FALSE — при ошибке.

imap_close

Отключение от сервера

int imap_close (int imap_stream [, int flags])

Функция закрывает поток подключения, связанный с дескриптором imap_stream. Если в аргументе flags указывается значение CL_EXPUNGE, то при закрытии ящика из него автоматически удаляются все сообщения, помеченные к удалению.

imap_ping

Проверка активности подключения

int imap_ping (int imap_stream)

Возвращает TRUE, если подключение действительно, или FALSE, если оно разорвано.

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

imap_listmailbox

Получение списка почтовых ящиков

array imapjistmailbox (int imap_stream, string ref, string pattern)

Возвращает массив имен почтовых ящиков. Описание аргументов см. в imap_getmailboxes().

$mbox = imap_open("{your imap host}".
"username"."password",OP_HALFOPEN)
dieC'can't connect- ".tmap_last_error()):
Slist " imap_listmailbox($mbox,
"{your.imap host}"."*"):
ifOs_array($list)) { reset ($"hst):
while (list($key. $val) = each(Slist))
print imap_utf7_decode($val).
"<br>\n". } else
print "imap_listmailbox failed "
imap_last_error(). "\n".
imap_close($mbox):

imap_getmailboxes

Получение описания почтовых ящиков

array imap_getmail boxes (int imap_stream, string ref, string pattern)

Возвращает массив объектов, содержащих описания каждого ящика. Каждый объект имеет 3 атрибута: полное имя ящика папе, символ-разделитель иерархии ящиков delimiter и битовое поле attributes, которое может состоять из следующих компонентов:

  • LATT_NOINFERIORS (1) — ящик не имеет вложенных;
  • LATT_NOSELECT (2) — ото контейнер (а не ящик) и его нельзя открыть;
  • LATT_MARKED (4) — ящик маркирован. Используется только с UW-IMAPD;
  • LATTJJNMARKED (8) — ящик маркирован. Используется только с UW-IMAPD.

Имена ящиков могут содержать символы национальных алфавитов (из набора ASCII), которые могут быть закодированы и затем декодированы функцией imap_utf7jJecode().

Аргумент ref должен содержать обычную спецификацию сервера (его адреса), как в функции imap_open(), а аргумент pattern — указывать, с какого ящика начинать и шаблон для возвращаемых ящиков.

В аргументе pattern могут быть указаны два специальных значения: «*» означает, что следует возвращать всю иерархию ящиков, а <<%>> -только текущий иерархический уровень (без вложенных ящиков).

$mbox = imap_open("{your шар.host}",
"user-name", "password".OP_HALFOPEN)
|| dieC'can't connect: ".imap_last_error()).
$list = imap_getmailboxes($mbox.
"{your.imap.host}"."*"):
ifds_array($list))
{ pnnt_r (Slist): } else
print "imap_getmailboxes failed
".imap_last_error()."\n":
imap_close($mbox).

См. также imap_getsubscribed().

imap_createmailbox

Создание почтового ящика

int imap_createmailbox (int imap_stream, string mbox)

Имя создаваемого ящика указывается в аргументе mbox. Имена, содержащие национальные символы, должны кодироваться функцией imap_utf() encode().

Возвращает TRUE или FALSE — при ошибке.

См гакжс: imapj-enamemailbox(), imap_deletemanbox() и imapj>pen().

$mbox = imap_openf"(your imap.host}"
."username"."password",OP_HALFOPEN)
|| chet"can't connect. "
.imap_last_error()).
$namei = "newhox:
$name2 = imap_utf7_encode
("MOй личный ящик");
if(&imap_createmai1box(Smbox.
1map_utt7_encode("{your.imap.host}
INBOX/$namer))) { Sstatus =
@imap_status($mbox."{your.imap
host}:NBOX/$naoiel".SA_ALL);
if($btat'js) { echo "Статус нового
ящика 'Snamel': <br\n".
"Messages: ". $status->messages
."<br>\n". "Recent: ". $status->
recent "<br-\n". "Unseen:
". $status->unseen "<br>\n".
"UIDnext ". $status->uidne/.t .
"<Dr>»n". "UIDvalnaity ".
Sstatus->uldval1d1ty.".<br>\n"; if
(imap_renamemailbox($mbox "{your,
irnao host)INBOX/Snamel".
"{your.-imap host}lNBOX/$name2'l)
{ echo "Ящик Sramel' переименован
в '$raine2'<br>\n": } else {
print "imap_renamemailbox failed:
" imap_last_error() "<br>\n": i
} else { pnnt "i:nap_s"'atus tailed.
" inap_labt_error() "<br>'n"-}
if(?imap_deletemailbox(Smbox.
"{your imap.host}INBOX/$naire2")i
{ print "new mailbox removed <br>\n":
} else { print "lmap_deletemailbox
failed: ". implode("<br>\n".
lroap_errors()3 "<br>\n", i }
ebe { print "could not
create new mailbox- ".
implodeC"<br>\n".imap_errors()).
"<br>\n":
imap_clcse($iTibox);

imap_ renamemailbox

Переименование ящика

int imap_renamemailbox (int imap_stream, string oldjnbox, string new_rabox)

Имя ящика задается аргументом oldjnbox, а его новое имя — new_ mbox Формат этих аргументов см. в описании функции imap_open(). Пример использования см. в функции imap_createmailbox().

Возвращает TRUE или FALSE — при ошибке.

См. также: imap_createmailbox(), imap_deletemailbox(), imap_open().

imap_ deletemaiibox

Удаление почтового ящика

int imap_deletemailbox (int imap_stream, string mbox)

Имя ящика задается аргументом mbox, его формат см. в описании функции imap_open(). Пример использования см. в функции imap_ createmailbox().

Возвращает TRUE или FALSE — при ошибке.

См. также: imap_createmai1box(), imap_renamemailbox() и imap_open().

imap_ check

Проверка текущего ящика

object imap_check (int imap_stream)

Возвращает объект, содержащий информацию о текущем почтовом ящике, или FALSE при ошибке. В объекте имеются следующие свойства:

  • Date — время последней модификации содержимого ящика (доступа);
  • Driver — протокол доступа к ящику: POPS, IMAP, NNTP;
  • Mailbox — полное имя почтового ящика;
  • Nmsgs — число сообщений в ящике;
  • Recent — число новых сообщений в ящике.

$mbox - imap_open('{localhost}°."igor"."lgx324879".
OP_HALFOPEN) || dle("can't connect:
".imap_last_error()):
pnnt_r(imap_check ($mbox));
imap_close($mbo/).

Выводит нечто подобное следующему:

$tdClass Object
[Date] => Sun. 13 May 2008
14-31:38 +0400 (Московское время
(лето))
[Driver] -> imap
[Mailbox] => {igor 143/imap/user="igor"}
<no_mailbox>
[Nmsgs] => 0
[Recent] 0

imap_status

Получение статуса указанного ящика

object imap_status (int imap_stream, string mailbox, int options)

Возвращает объект, содержащий информацию о почтовом ящике с именем mailbox, пли FALSE при ошибке. В объекте возвращаются свойства, в зависимости от указанного значения аргумента options:

  • SA_MESSAGES — возвратить в status ->messages общее число сообщений в ящике;
  • SA_RECENT — возвратить в status->recent число новых сообщений;
  • SAJJNSEEN — возвратить в status->unseen число непрочитанных сообщений;
  • SAJJIDNEXT — возвратить в status->uidnext номер uid для следующего нового сообщения;
  • SAJJIDVALIDITY - возвратить в status->uidvalidity константу действительности uid ящика;
  • SA_ALL — возвратить все вышеперечисленное.

Объект также содержит свойство status-^flags, отражающее (в объединенном битовом поле), с какими параметрами он создан.

$mbox = шар_ореп("{your.imap host}".
"ucename"."password".OP HALFOPEN)
|| dieC'can't connect: " nmap_last_error!));
$status = imap_status(Smbox."{your
imap host}INBOX".SA_ALL).
if($status) { print_r($status); }
else print "imap_status failed "
imap_lasterror()."\n":
imap_clcse($mbox)

imap_ mailboxmsginfo

Получение информации о текущем ящике

object imapjnailboxmsginfo (int imap_stream)

функция сходна с imap_status(), но дополнительно она вычисляет 0С,-рем всех сообщений, находящихся в ящике. Свойства возвращаемого объекта:

  • Date — время последней модификации;
  • Driver — драйвер (протокол доступа);
  • Mailbox — имя почтового ящика;
  • Nmsgs — число сообщений;
  • Recent — число новых полученных сообщений;
  • Unread — число непрочитанных сообщений;
  • Deleted — число удаленных сообщений;
  • Size — размер почтового ящика.

<?рhp
$mbox = imap_open
("{your imap.host}INBOX".
"user-name",
"password") || diet"can't connect:
".imap_last_error()):
rebeck = imapinallboxmsginfo
($fnbox);
lf($6heck) {
print "Date; " . $check->Date .
"<br^\n" print "Driver:
" . $check->Driver ."<br>\n"
print "Mailbox: "
. $check->Mailbox ."<br>\n" :
print "Messages- "
. $check->Nmsgs ."<br>\n"
print "Recent: " .
$check->Recent ."<br>\n"
print "Unread: " . $check->Unread
"<br>\n" print "Deleted: "
. $check->Deleted ,"<br>\n" :
print "Size: " $check->Size ."<br>\n"
} ele ( print "imap_check()
failed- ".imap_last_error().
"<br>\n": } linap^close
($mbox). >

imap_num_msg

Получение числа сообщений в текущем ящике • nt imap_num_msg (int imap_stream)

imap_num_recent

Получение числа новых сообщений в текущем ящике

int imap_num_recent (nnt imap_stream)

imap_listsubscribed

Получение списка активных ящиков

array imap_listsubscribed (Int imap_stream, string ref, string pattern)

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

Функция возвращает в массиве перечисление имен папок, выбранных для синхронизации. Она аналогична функции iraap_listmailbox().

imap_getsubscribed

Получение описания активных ящиков

array imap_getsubscribed (int imap_stream, string ref, string pattern)

Функция подобна imap_getmai"lboxes(), но она возвращает только имена тех ящиков, которые были выбраны для синхронизации.

imap_ subscribe

Активизация ящика

int imap_subscribe (int imap_stream, string mbox)

В дальнейшем ящик будет использоваться для синхронизации. Возвращает TRUE иди FALSE — при ошибке.

imap_ unsubscribe

Дезактивизация ящика

int imap_unsubscribe (int imap_stream, string mbox)

imap_ search

Поиск в текущем ящике

array imap_search (int imap_stream, string criteria, int flags)

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

  • ALL— все соoбщения, содержащие перечисленные слова;
  • ANSWERED — только сообщения, на которые был выслан ответ;
  • ВСС "string" — «екать "string" в поле Вcс;
  • Before "date — сообщения, датированные ранее "date";
  • Body "string" — сообщения, содержащие в своем теле "string";
  • СС "string" — искать "string" в поле Сс;
  • Deleted — удаленные сообщения;
  • Flagged — сообщения со статусом «Важное»;
  • FROM "string " — искать "string" в поле From;
  • KEYWORD "strinп" — искать сообщения, содержащие слово "string";
  • NEW — просматРивать только новые сообщения;
  • Old — проСматривать только старые сообщения;
  • On date — просматривать сообщения, датированные "date";
  • RFCFNT — просматривать свежие сообщения (с флагом \\RECENT); ссси „посматривать прочитанные сообщения ;
  • Since "date" — просматривать сообщения, датированные позже "date";
  • Subject "string" — искать "string" в поле темы Subject:;
  • TFXT "string" — искать сообщения, содержащие текст "string";
  • To string — искать сообщения, содержащие "string" в поле адреса;
  • UNANSWERED — пРoсматРивать сообщения, на которые не был написан ответ;
  • UNDFI FTED — просматривать неудаленные сообщения;
  • UNFI АГ6ЕО — пРосматРивать сообщения без флагов;
  • UNKEYWORD "sttring" — искать сообщения, не содержащие слово "string";
  • UNSEEN — просматривать непросмотренные сообщения.

Например, чтобы найти все сообщения от отправителя Peter, на которые не был выслан ответ, указывается: UNANSWERED FROM Peter.

imap_scanmailbox

Поиск текста в сообщениях

array imap_scanmailbox (int imap_stream, string ref,

string pattern, string content)

функция подобна imapJistmailbox(), но она возвращает имена только тех ящиков, которые содержат в себе строку content.

imap_fetch_overview

Получение описания сообщений

array imap_fetch_overview (int imap_stream, string sequence [, int flags])

Возвращает в массиве объекты, содержащие информацию о сообщениях, номера которых перечислены в строке sequence. Эта строка должна содержать номер или номера через запятую без пробелов; можно указать диапазон разделителем «двоеточие» (:). Если в значении аргумента указана константа FTJJID, это указывает на то, что номера являются уникальными идентификаторами UID.

Каждый объект массива может иметь следующие свойства:

  • subject — тема сообщения;
  • from — отправитель;
  • date — дата отправки;
  • message_id — Message-ID;
  • references — ссылки на message_id;
  • size — размер в байтах;
  • uid — уникальный идентификатор сообщения UID в ящике;
  • msgno — порядковый номер сообщения в ящике;
  • recent — присутствие флага «новое»;
  • flagged — присутствие флага «важное»;
  • answered — присутствие флага «ответ написан»;
  • deleted — пометка сообщения к удалению;
  • seen — прочитанное сообщение;
  • draft — присутствие флага «черновик».

Smbox = imap_open("{your л map host:143}".
"username","password") cheC'can't connect:
" .imap_last_error()):
$overview = imap_fetch_overview($mbox."2,4 6",0).
if(is_array($overview)) { pnnt_r($overview): }
imap close($mbox):

Выводится информация следующего вида:

Array
[0] => stdClass Objecl
[subject] -> ПроРавление
[from] => IG <ig<^or>
[date] > Sun 10 May 2001
01-41^°0 +»400 [message_id] ->
^(100801c0db2c$3c46a2cO
$0100007f(aigor>
[S1ze] => 1621
[uid] -> 2897036J
[msgno] => 1
[recent] => 0
[flagged] => 0
[answered] ==> 0
[deleted] => 0
[seen] => 1
[draft] -> 0
)

imap_ headers

Получение списка сообщений текУЩего ящика

array iroapjieaders (int imap_Streara)

Возвращает массив, соДержащий заголовки имеющихся сообщений. Сообщения вложенных папок не просматриваются.

См. пример в функции imap_open().

imap_header

Синоним функции imap_headerinfo

object imapjieader (int stream, int msgjiumber , int fromlength subjectlength , string defaulthost]]])

imap_headerinfo

Просмотр заголовка сообщенИя

object imap headerinfo (imap_stream, int msg_number)

int fromlength [, int Subjectlength [. string defaulthost]]])

Возвращает объект, содержащии различные элементы информации о сообщении.

$mbox = imap_open
'\{$SERVEf/p°P3- HOJINBOX". "lgor7".
Г1дх32Г);
pnnt_r(imap_header($mbox.l)'

Будет выведено примери" следующее:

stdClass Object (
[date] => Sun. 13 May
2005 01:41:00 +0400 [Date] >
Sun. 13 May 2005 01-41:00 +0400 [subject]
=> Послание [Subject] => Послание
[messagejd] =>
<000801cOdb2c$3c46a2c
O$0100007f@igor> [toaddress] ->
igor@loca]host [to] => Array (
[0] => swClass Object (
[mailbox] -> igor [host] =>
local host ) ) [fromaddress] =>
IG <ig@igor.^ [from] => Array (
[0] -> stddass Object (
[personal] => IG [mailbox] => ig [host] =>
Igor. ) )
[reply_toaddress] =>
IG <тд1?тдог.> [reply_to] => Array (
[0] -> stddass Object (
[personal] => IG [mailbox] =>
ig [host] => igor. )
[senderaddress] ->
IG <ig(?igor.> [sender] -> Array (
[0] -> stddass Ob.iect i
[personal] => IG
[mailbox] => ig [hnbt] -> igor ) )
[Recent] > N [Unseen] =>
[Flagged] => [Answered] =>
[Deleted] => [Draft] => [Msgno] => 1
[MailDate] =>
13 May-2005 01:41:00
+0400 [Size] => 1581 [udate] =>
9S9703660 )

В объекте, как вы можете видеть, возвращаются следующие значения:

  • Идентификационная информация: date, Date, subject, Subject, message^ I id, Msgno, Mai IDate, Size, udate.
  • Адресная информация: toaddre^s, to (mailbox, host), fromaddress, from (personal, mailbox, host), replyjtoaddress, reply_to (personal, mailbox, host), senderaddress, sender (personal, mailbox, host).
  • Значения флагов: Recent. Unseen, Flagged, Answered, Deleted, Draft.

Структура и формат записей определяются реализацией серверного интерфейса и могут сильно различаться для разных систем (единственный способ выяснить это — проверить на практике). В большинстве случаев для сообщений протоколов ШАР, РОРЗ и NNTP форматы информационных полей идентичны.

Для news-сообщений дополнительно возвращается свойство newsgroup.

Пары полей date, Date и subject, Subject обычно совпадают. В message_ id хранится уникальный хеш сообщения (идентификатор UID), а в Msgno - относительный порядковый. В записях Size и udate возвращается соответственно размер сообщения в байтах и время в формате UNIX Timestamp.

Адресная информация возвращается как в целостном, так и разделенном па составляющие виде. В большинстве случаев адреса fromaddress, reply_toaddress и senderaddress совпадают. Если у сообщения имеется поле Сс: (отправить копии вторичным получателям), то также возвращается адрес ccaddress.

Флат сообщения соответственно обозначают: только что пришедшее сообщение, непрочитанное сообщение, помеченное как «Важное», сообщение на которое был написан ответ, сообщение, маркированное к удалению, и черновик сообщения.

Три дополнительных аргумента используются редко.

imap_sort

Сортировка заголовков

array imap_sort (int stream, int criteria, int reverse, int options) Возвращает массив номеров сообщений, сортированных по критерию.

Если в аргументе reverse указывается значение, то происходит обратная сортировка.

В аргументе criteria можно указывать одно из следующих значений:

  • SORTDATE — по дате сообщения;
  • SORTARRIVAL — по дате получения;
  • SORTFROM — по первому адресу в поле From;
  • SORTSUBJECT — по строке темы в поле Subject:;
  • SORTTO — по первому адресу в поле То;
  • SORTCC — по первому адресу в поле получателей копии Сс;
  • SORTSIZE - но размеру сообщения в октетах.

Флаги options аргумента могут (побитово) включать следующие значения:

  • SEJJID — возвращать уникальный идентификатор сообщения UID вместо сто порядкового номера;
  • SE NOPREFETCH — не выполнять с сообщением предварительные манипуляции.

imap_fetchstructure

Получение полной информации о сообщении

object. imap_fetchstructure (int iraap_streara, int msgjiumber [, int flags])

Информация возвращается в объекте, она описывает формат и структуру сообщения в текущем ящике, указанном порядковым номером msgjiumber. Если в аргументе flags указывается значение FTJJID. это свидетельствует о том, что в аргументе msgjiumber указан не номер сообщения, а его идентификатор UID.

В объекте присутствуют следующие объекты (его структура сильно варьируется):

  • type — тип основного тела сообщения;
  • encoding — кодировка тела сообщения;
  • if subtype — True, если имеется вложенный тип;
  • subtype — вложенный тин MIME;
  • ifdescription — True, если имеется строка описания;
  • description — строка описания;
  • if id — True, если имеется строка идентификации;
  • id — строка идентификации;
  • lines — размер в строках;
  • bytes — размер в байтах;
  • ifdisposition — True, если имеется строка размещения;
  • disposition - строка размещения;
  • ifdparameters — True, если имеется массив dparameters;
  • dparameters — массив d-параметров (объектов, где каждый вложен-I ный объект состоит из пар «атрибут», «значение»);
  • ifparameters — True, если существует массив параметров;
  • parameters — массив параметров MIME (объектов, где каждый вложенный объект состоит из пар «атрибут*, «значение»);
  • parts — массив объектов, описывающий каждую часть сообщения (аналогичен по структуре объекту верхнего уровня, но не может иметь вложенные части).

Тип type основного тела может определяться следующими значениями:

  • 0 — простой текст;
  • 1 — составное сообщение (multipart);
  • 2 — простое сообщение;
  • 3 — приложение;
  • 4 — аудио;
  • 5 — картинка;
  • 6 — видео;
  • 7 — другое.

Типы кодировки encoding:

  • 0 — 7BIT;
  • 1 — 8BIT;
  • 2 — BINARY;
  • 3 — BASE64;
  • 4 — QUOTED-PRINTABLE;
  • 5 — OTHER.

Для простого сообщения возвращает объект такого вида:

stdClass Object
[ifsubtype] => 1
[subtype] => PLAIN [ifdescnption]
=> 0 [ifid] => 0 [lines] => 2 [bytes] =>
41 [ifdisposition] => 0 [ifdparameters]
=> 0 [ifparameters] => 0 [parameters]
=> stdClass Object '>

Для сложного сообщения1 возвращает объект следующего вида:

stdClass Object
[type] => 1 [ifsubtype] => 1
[subtype]
=> ALTERNATIVE [ifdescription] =>
0 [ifid] => 0 [Ifdisposition] =>
0 [ifdparameters] => 0
[ifparameters] =>
1 [parameters] => Array (
[0] => stdClass Object (
[attribute] => boundary
[value] => -=_NextPart_000_0005_
01CODB4D.C33837AO
[parts] => Array ( [0] => stdClass
Object ( [encoding] => 4
[ifsubtype] => 1 [subtype] =>
PLAIN
[ifdescription] => 0 [ifid] => 0
[lines] => 5 [bytes] => 59
[ifdisposition] => 0
[ifdparameters] =>
0 [ifparameters] =>
1 [parameters] => Array (
[0] => stddass Object \ (
} [attribute] => charset
[value] => koi8-r )
[1] "> stddass Object
[encoding] => 4 [ifsubtype] =>
1 [subtype] => HTML [ifdescription]
=> 0 [ifid] => 0 [lines] => 14
[bytes] => 547 [ifdisposition] =>
0 [ifdparameters] =>
0 [ifparameters] =>
1 [parameters] => Array (
[0] => stddass Object (
[attribute] => charset [value] =>
koi8-r ) ) ) ) )

imap_fetchheader

Получение заголовка сообщения

string imap_fetchheader (int imap_stream, int msgno, int flags)

Возиращается полный, нефильтрованный заголовок (формата RFC822) сообщения с номером msgno в текущем ящике.

В аргументе flags могут быть указаны следующие значения (их можно бинарно комбинировать):

  • FTJJID — в аргументе msgno указан уникальный идентификатор UID;
  • FT_INTERNAL — возвращать текст как есть, а не в формате CRLF1;
  • FT_PREFETCHTEXT — (RFC822) одновременно получается текст сообщения, что сокращает общую длительность (RTT) подключений ШАР (полученный текст сохраняется в локальном буфере на время подключения).

imap_body

Получение сообщения

string imap_body (int imap_stream, int msg_number [, int flags])

Возвращает тело сообщения с номером msgjiumber в текущем ящике. В аргументе fI ags могут быть указаны следующие значения (их можно бинарно комбинировать):

  • FTJJID — в аргументе msgno указан уникальный идентификатор UID;
  • FT_PEEK — не устанавливать флаг сообщения \Seen (если он еще не установлен);
  • FT_INTERNAL — возвращать текст как есть, а не в формате CRLF1.

Функция возвращает полную точную копию сообщения (как есть). С ее помощью можно прочитать простые сообщения. Для сложных (составных) сообщений функция может вернуть просто строку: «This is a multi-part message in MIME format» («Это сообщение в формате MIME состоит из нескольких частей»). Чтобы извлечь отдельные его части и обработать соответственно MIME-кодировке, пользуйтесь функциями imap_fetch_structure() и imap_fetch_body().

imap_fetchbody

Получение части сообщения

string imap_fetchbody (int imap_stream, int msgjiumber.

string partjiumber [, flags flags])

Возвращает часть тела сообщения с номером msgjiumber в текущем ящике. Спецификация указания перечисления номеров секций в аргументе partjiumber определяется IMAP 4 (в тривиальном случае это может быть простой номер части, где 0 — основная часть, 1 и далее — вложенные).

В аргументе flags могут быть указаны следующие значения (их можно бинарно комбинировать):

  • FTJJID — в аргументе msgno указан уникальный идентификатор UID;
  • FT_PEEK — не устанавливать флаг сообщения Seen (если он еще не установлен);
  • FT_INTERNAL — возвращать текст как есть, а не в формате CRLF.

Например, для сложного сообщения, структура которого приведена в примере функции imap_fetchstructure(), содержание частей может быть следующим.

Это основная часть сообщения (при вызове imap_fetchbody($m,l,0);):

X-F: <ig@igor > Sun May 13 01:41:00
2003 Received: from igor [127 0 0.1] by igor
(SMTPD32-6 06 EVAL) id ADEC10316 Sun.
13 May 2001 01:41-00 +0400 Message-ID:
<000801cOdb2c$3c46a2cO$01000D7№igor>
From: "IG" <ig@igor.> To <igor@localhost>
Subject Приветствие Date: Sun. 13 May 2001
01.41-00 +0400 MIME-Version: 1.0
Content-Type: multipart/alternative:
boundary"-- --=_NextPart_000_0005_
01CODB4D.C33837AO" X-Pnonty:
3 X-MSMail Priority Normal
X-Mailer: Microsoft Outlook Express
5.00 2919 6700 X-MimeOLE: Produced
By Microsoft MimeOLE V5.00.2919.6700
X-RCPT-TO- <igor@localhost> X-UIDL:
289703661 Status: U

Это первая вложенная часть (при вызове imap_fetchbody($m,l,l);):

Привет.
У нас все хорошо
Пока.

Это вторая вложенная часть (при вызове imap_fetchbody($m,l,2);):

<!DOCTYPE HTML PUBLIC "
-//W3C//DTD HTML 4 0
Transitional//EN"> ^HTML>
<HEAD> <META content=
3D"text/html. charset=3Dkoi8-r"
http-equiv=3DContent-Type>
<META content«3D"MSHTML 5.00.2920.0"
name=3DGENERATOR>
<STYLE>
</STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3D"Arial Cyr"
size=3D2> Привет </FONT>
</DIV>
<DIV><FONT face=3D"Anal CYR"
size=3D2> У нас все хорошо.</FONT>
</DIV> <DIV><FONT face=3D"Anal CYR"
size=3D2> Пока. </FONT></DIV>
</BODY>
</HTML>

bnap_uid

Получение DID сообщения из порядкового номера

int imap_uid (int imap_stream, int msgno)

Возвращается уникальный идентификатор сообщения UID. Он отличается от номера неизменностью, так как номера псревычисляются при удалении сообщений. Действие функции обратно imapjnsgno().

echo imap_uid($mbox.l);
// выводит например: 289703561

imap_msgno

Получение порядкового номера сообщения из UID

int imapjnsgno (int imap_stream, int uid)

Действие функции обратно imap_uid().

imap_setflag_full

Установка флагов сообщения

string imap_setflag_fu"n (int stream, string sequence, string flag, string options)

В аргументе sequence указывается перечисление номеров сообщений, для которых необходимо установить флаги, указанные в аргументе flag. Флат (согласно RFC2060) обозначаются: "\\Sccn", "\\Answered", "\\Flagged", "\\Deleted", "\\Draft", и "\\Rccent".

В аргументе options может быть указано значение STJJID, указывающее на то, что в аргументе sequence указан уникальный идентификатор UID.

$mbox =- imap_open("{your.I map.host:143}".
"userrame"."password") || dieC'can't connect: "
.imap_last_error()):
if (imap_sPtflag_full($mbox."2A15:
19.23"."\\Seen \\Flagged")) print
"Флаги установлены";
imap_clobe($mbox).

imap_clearflag_ full

Сброс флагов сообщения

string imap_clearf!ag_fun (int stream, string sequence, string flag, string options)

Действие функции противоположно imap_setflag_fuTI().

См. описание в imap_setf1ag_fun().

imap_delete

Маркировка сообщения как удаленного

int imapjJelete tint imap_stream, int msg_number [, int flags])

Возвращает TRUE.

В аргументе msg_number указывается номер сообщения, а в flags (при значении FTJJID) - является ли номер идентификатором. Сообщения, помеченные к удалению, остаются в ящике, пока не будет вызвана функция imap_expunge() или подключение (с установленным флагом CL_EXPUNGE) не будет закрыто функцией imap_close().

\ Smbox - imap_open ("{your miap.hostJINBOX".
"username". "password") || die
("can't cornect: " imap_last_error()):
/ Scheck = imapjnailboxmsginfo
(Smbox): print "Сообщений до удаления
" Scheck->Nmsgs . "<br>\n" ;
imapjJelete (Smbox. 1);
$check = imipjnailboxmsginfo
(imbox): print "Сообщений после удаления
".$check->Nmsgs."<br>\n" : imap_expunge
(Smbox): $check = imap_mailboxmsginfo
(Smbox).
print " Сообщений после expunge()
: ",$chPck->Nmsgs "^br>\n" ; imap_close
(Smbox);

imap_undelete

Восстановление удаленного сообщения

int imap_undelete (int imap_stream, int msg_number)

Функция удаляет флаг удаления с сообщения с номером msgjiumber. Этот флаг ранее можег быть установлен функциями imap_delete(), imapjnail_move() или imap_setflag_full().

Возвращает TRUE или FALSE — при ошибке.

imap_ expunge

Удаление «удаленных» сообщений

int imap_expunge (int imap_stream)

Полностью удаляет из ящика сообщения, имеющие флаг "\\Dcleted", который может быть установлен функциями imap_delete(), imap_mail_ move() или imap_setflag_full().

Возвращает TRUE.

imap_mail_copy

Копирование сообщения в ящик

int -imapjnail_copy (int imap_stream, string msglist, string mbox [. int flags])

Возвращает TRUE или FALSE — при ошибке.

Перечисление номеров копируемых сообщений указывается в стро-I ковом аргументе msglist. Их следует перечислять через запятую, без пробелов, диапазоны указываются знаком двоеточия.

См. также документ RFC2060.

Ящик назначения, указываемый в аргументе mbox, указывается без имени сервера.

В аргументе flags можно указывать битовую маску из следующих констант:

  • CPJJID - номера являются уникальными идентификаторами UID;
  • СР MOVE — удалять сообщения после копирования.

imap_mail_copy($m. "1.3 5"."INBOX/Текущие"):

imap_mail_move

Перемещение сообщения в ящик

int imapjnailjnove (int imap_stream, string msglist, string robox [. int flags])

Функция аналогична вызову:

imap_mail_copy(imap_stream, msglist, mbox, flags | CP_MOVE );

imap_alerts

Получение сообщения IMAP

array imap_alerts (void)

Возвращается массив, содержащий все извещения, посланные сервером от начала подключения или после прошлого вызова данной функции.

imap_mime_header_decode

Декодирование элементов MIME заголовков

array imap_header_decode (string text)

Функция декодирует расширенные заголовки, посланные не в тексте ASCII (см. RFC2047). Декодированные элементы возвращаются в массиве объектов, каждый из которых содержит пару "charset" и "text" (кодировка и содержимое текста). Если заголовки не были закодированы (то есть они передавались в кодировке US-ASCII), значение элемента "charset" будет равно "default".

$teAt="*?ISO-8859-l?Q?Keld_>
r8rn_Simoisen?= <kpldG>dkuug.dk>";
print._r( тлар irnme_heacier_decode
($text 0

Выводит следующее:

Arrayt
[0] -> stdClass Object (
[charset] => ISO-8859-1
[text] => Keld Juirn Slmonsen )
[1] -> stdClass Object (
[charset] => default [text] «>
<keld@dkuug.dk> ) )

imap_mail_compose

Создание сообщения MIME по шаблону

string imapjrtan_compose (array envelope, array body)

<?php
$envelope["from"]="musore
@afterfive com". $envelope["to"]="
musone@darkstar"; $envelope["cc"]
="musone@edgeglobal.com".
$partlC"type">TYP0WLTIPART;
$partl["siibtype"]="mixed";
$flleneroe-'/tmp/lroap c.gz";
$fp=fopen($filename."r").
$contents=fread<$fp.filesize($filename)):
fc!ose($fp):
$part2["type']=TYPEAPPLICATION.
$part2["encoding"]=ENCBIMARY:
$part?["subtype">"octet-stream".
$part?["descnption"]=basename
($filename); $part2["contents.data"]=
$contents;
$part3["type">TYP£TEXT.
$part3["subtype"]="plain".
$part3[ "descn pt i on" ]="descri pt i on3";
$part3["contents.data ']="contents
.data3\n\n\n\t";
$body[l]=$partl: $body
[2]=$part2. $body[3]=$part3:
echo nl2br(imap_mail_compose
($envelope.$body)): ?>

imap_append

Создание сообщения в ящике

int imap_append (Int imap_stream, string mbox, string message [, string flags])

Возвращает TRUE или FALSE — при ошибке.

В аргументе message содержится текст сообщения, включая текст заголовка. Для многих серверов необходимо обозначать конец строк парой символов «\r\n».

В аргументе flags можно указать флаги, присваиваемые сообщению. ,

$stream = imap_open("(
your imap.host}INBOX.Drafts"."username".
"password"): /
[ $check = imap_check($stream);
print "Сообщений было: " $check->
Nmsgs "\n";
imap_append($stream."
{your.imap.host}INBOX.Drafts" .
"From- me@my.host\r\n"
"To: you@your.host\r\n"
Subject: test\r\n" "\r\n"
."this TS a test message, please
ignore\r\n". "\\Flagged \\Draft"):
$check = imap_check($stream): ' print
"Сообщений стало: ". $check->
Nmsgs "\n"; imap_close
($stream).

imap_ mail

Посылка email

string imapjnail (string to, string subject, string message [, string additionaljieaders [, string cc [, string bcc [, string rpath>)

Функция пока доступна только в PHP 3.

Вспомогательные функции

imap_last_error

Получение описания последней ошибки

string imap_last_error (void)

Возвращается строка, содержащая полное описание ошибки ШАР (если она имелась), произошедшей в ходе исполнения сценария. Стек сообщений не изменяется, и повторный вызов функции возвратит то же значение (если других ошибок не произошло).

imap_errors

Получение всех возникших ошибок array imap_errors (void)

В массиве возвращаются строки описания ошибок ШАР, произоше/ тих от начала подключения или с момента последнего вызова дан ной функции. Вызов функции полностью очищает стек ошибок.

imap_qprint

Конвертация строки quoted-printable в 8-bit string imap_qprint (string string.j Способ конвертации описан в RFC2045, раздел 6.7. / Возвращает двоичную, 8-битную строку.

См. также imap_8bit().

imap_8bit

Конвертация строки 8bit в quoted-printable

string imap_8bit (string string)

Способ конвертации описан в RFC2045.

Возвращает строку, «цитированную для печати».

print imap_8bit("The Привет"),
// напечатает. The <F=FO=E8=E2=E5=F2

См. также imap_qprint().

imap_ binary

Конвертация строки 8bit в base64

string imapjjinary (string string)

Процедура конвертации описана в RFC2045.

Возвращает строку в формате base64.

print imap_tnnary("The Привет");
// напечатает: VGhlIM/w60L18g==

См. также imap_base64().

imap_base64

Декодирование BASE64

string imap_base64 (string text)

Процедура конвертирования описана в RFC2045.

См. также imap_binary().

imap_rfc822_write_address

Форматирование строки адреса

string imap_rfc822_write_address (string mailbox, string host, string personal)

Возвращает строку адреса электронной почты, сформированную из заданных значений согласно правилам, указанным в RFC822.

print imap_rfc822_write_address
("ig"."php net"."Igor Ghgin");
// выведет. Igor Grigin <ig@php.net>

imap_rfc822_parse_adrlist

Интерпретация адреса

array imap_rfc822_parse_adrlist (string address, string default_host)

Исходная строка с перечислением почтовых адресов, записанных в формате RFC822, указывается в аргументе address. Аргумент содержит имя хоста, добавляемое к адресу, если в нем таковое отсутствует.

Возвращается массив объектов, каждый из которых может иметь следующие свойства:

  • mailbox — имя ящика (usernamc);
  • host — имя хоста;
  • personal — личное имя;
  • adl — доменный разделитель.

$address_stnng = "Igor Grigin
<ig@my.domain.net>,postmaster
@somedomain net. root";
$address_array = imap_rfc822_parse_ac!rlist
($address_string."our net").
if(! is_array($address_array))
dieC'somethings wrong\n"):
print_r($address_array);

Будет выведено следующее:

Arrayt [0] => stdClass Object
( [mailbox] => ig [host] =>
my domann.net [personal] =>
Igor Origin ) [1] => stdClass Object
( [mailbox] => postmaster [host]
=> somedomain.net )
[2] => stdClass Object ( [mailbox]
=> root [host] => our net ) )
imap_rfc822 parse headers
Интерпретация заголовков
из строки object
imap_rfc822_parse_headers
(string headers [, string defaulthost])

Функция сходна с imap_header(), но информацию она получает не с сервера ШАР, а из строки headers.imap_utf7_decode

Декодирование строки UTF-7

string imap_utf7_decode (string text)

Возвращает оригинальную строку или FALSE — в случае ошибки. Эта кодировка часто используется для адресов почтовых ящиков, содержа-! щих национальные символы (например, символы кириллицы). Функ-/ ция использует модифицированный алгоритм, описанный в RFC2060, раздел 5.1.3 (устаревший алгоритм» был описан в RFC1642).

imap_utf7_encode

Кодирование строки 8bit в UTF-7

string imap_utf7_encode (string data)

imap_utf8

Конвертация текста в UTF8

string imap_utf8 (string text) Конвертация описана в RFC2044.

Файлы и сети

страницы в данном разделе 
 Файлы и сети   


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста