Содержание:
Предисловие
Preface
Об этом руководстве
Описание языка
Введение в PHP3
Что такое PHP3?
Что может делать PHP3?
Краткая История PHP
Возможности PHP3
HTTP-аутификация средствами PHP
Создание GIF-файлов с помощью PHP
Поддержка file upload
Поддержка HTTP cookie
Поддержка баз данных
Регулярные выражения
Обработка ошибок
PHP source viewer
Установка
Установка из исходных кодов на UNIX
Руководство по установке PHP3 для Windows
Проблемы?
Безопасность
Конфигурация
Файл php3.ini
Apache
CGI
Виртуальные хосты
Безопасность
Синтаксис и грамматика
Переход из HTML
Разделение инструкций
Типы переменных
Инициализация переменной
Область Переменной
Изменяемые переменные
Переменные вне PHP
Изменение типа
Манипуляции с массивом
Элементы языка
Константа
Выражения
IF
ELSE
ELSEIF
WHILE
DO..WHILE
FOR
BREAK
CONTINUE
SWITCH
REQUIRE
INCLUDE
FUNCTION
OLD_FUNCTION
CLASS
Выражения
Function Reference
Adabas D функции
Специфичные функции Apache
Функции обработки массивов
Математические BC (произвольной точности) функции
Календарные функции
Функции даты/времени
Функции dBase
Функции dbm
Функции для работы с каталогами
Функции динамической загрузки
Функции запуска программ
Функции работы с filePro
Функции файловой системы
Функции, связанные с HTTP
Функции работы с Hyperwave
Функции работы с изображениями
Функции IMAP
PHP опции и информация
Функции работы с Informix
Функции работы с InterBase
LDAP функции
Почтовые функции
Математические функции
Возможности PHP3
Функции mSQL
Функции MySQL
Функции для работы с Sybase
Сетевые функции
Функции ODBC
Функции Oracle
Функции PDF
Функции PostgreSQL
Функции регулярных выражений
Функции семафоров и разделяемой памяти
Solid (надёжные) функции
Функции SNMP
Строковые функции
Функции URL
Функции переменных
Функции Vmailmgr
Функции Gz-файлов
XML Parser функции
Приложения
Переход от PHP/FI 2.0 к PHP 3.0
Программирование на PHP
Отладчик PHP
Preface
PHP Версии 3.0 - язык написания сценариев, внедренный в HTML. Многое из синтаксиса заимствовано из C, Java и Perl, с добавлением специфичных для PHP возможностей. Задача языка состоит в том, чтобы дать возможность Web-разработчикам легко и быстро создавать динамично изменяемые html-страницы.
Об этом руководстве
Это руководство написано в SGML при помощи DocBook DTD, с использованием DSSSL (Стиль Документа и Язык Спецификаций Семантики) при форматировании. Инструментальные средства, используемые для форматирования HTML, TeX и RTF версий - Jade, написанный Джеймсом Кларком и The Modular DocBook Stylesheets, созданные Норманом Валшом. Структура документации PHP3 была разработана Стигом СЈзером Баккеном.
Назад, к содержанию
Глава 1. Введение в PHP3
Что такое PHP3?
PHP версии 3.0 - язык описания сценариев, выполняемых на сервере, встроенный в HTML.
Что может делать PHP3?
Возможно самая сильная и значимая возможность в PHP3 - уровень интеграции с базами данных. Написание веб-страницы работающей с базой данных невероятно проста. В настоящее временя поддерживаются следующие базы данных:
Oracle
Adabas D
Sybase
FilePro
mSQL
Velocis
MySQL
Informix
Solid
dBase
ODBC
Unix dbm
PostgreSQL
Краткая История PHP
PHP был задуман где-то в конце 1994 года Расмусом Ледорфом(Rasmus Lerdorf). Ранние невыпущенные версии использовались на его домашней странице для того, чтобы следить за тем кто просматривал его интерактивное резюме. Первая используемая версия cтала доступна где-то в начале 1995 и была известна как Personal Home Page Tools. Она состояла из очень упрощенного движка синтаксического анализатора, который понимал только несколько специальных макрокоманд и ряд утилит, которые затем были в общем использовании на домашних страницах. Гостевые книги, счетчики и некоторые другие дополнения.
Довольно трудно дать какую-либо жесткую статистику, но отмечено, что к 1996 г. PHP/FI был использован по крайней мере на 15,000 веб-сайтах во всем мире. В середине 1997г. эта цифра выросла до более чем 50,000. В середине 1997г. также наблюдалось изменение в разработке PHP. Из частного любимого проекта Расмуса, которому способствовала горстка людей , это превратилось в намного более организованную рабочую группу. Синтаксический анализатор был заново переписан Зевом Сураски(Zeev Suraski) и Анди Гутмансом(Andi Gutmans), и этот новый синтаксический анализатор стал основой для PHP Версии 3.
Сегодня ( в середине -1998г.) как PHP/FI так и PHP3 поставляется с рядом коммерческих продуктов типа C2's StrongHold web server и RedHat Linux и консервативной оценкой, основанной на экстрaполяции чисел, предоставленных NetCraft было бы то, что PHP используется на 150,000 cайтах во всем мире. В перспективе, их больше чем сайтов, запущенных на Netscape's flagship Enterprise server в Интернете.
Назад, к содержанию
Глава 3. Установка
Содержание
Установка из исходных кодов на UNIX
Руководство по установке PHP3 для Windows
Проблемы?
Безопасность
Эта глава является руководством по конфигурации и установке PHP3.
Требуемые знания и программное обеспечение:
базовые навыки работы с UNIX (на уровне выполнения команды "make" и компилятора С);
компилятор ANSI C;
web server (очевидно);
Установка из исходных кодов на UNIX:
Загрузка исходных кодов:
Исходные коды последней версии можно найти по адресу:
http://www.php.net.
Инструкции по быстрой установке (версия модуля Apache):
1. gunzip apache_1.3.x.tar.gz
2. tar xvf apache_1.3.x.tar
3. gunzip php-3.0.x.tar.gz
4. tar xvf php-3.0.x.tar
5. cd apache_1.3.x
6. ./configure --prefix=/www
7. cd ../php-3.0.x
8. ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9. make
10. make install
11. cd ../apache_1.3.x
12. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
13. make
14. make install
Вместо этих шагов Вы можете просто скопировать бинарный файл httpd поверх вашего существующего бинарного файла.
Перед этим убедитесь, что Вы выключили свой сервер.
15. cd ../php-3.0.x
16. cp php3.ini-dist /usr/local/lib/php3.ini
Вы можете отредактировать файл /usr/local/lib/php3.ini для установления опций PHP.
Если Вы предпочитаете поместить этот файл в другое место,
то используйте --with-config-file=/path в шаге 8.
17. Отредактируйте Ваш файл httpd.conf или srm.conf и добавьте:
AddType application/x-httpd-php3 .php3
Вы можете выбрать здесь любое расширение по Вашему желанию.
В данном случае мы просто рекомендуем выбрать .php3.
18. Используйте Вашу обычную процедуру для запуска сервера Apache.
(Вы должны остановить и перезапустить сервер, а не просто перезагрузить сервер
с использованием сигнала HUP или USR1).
Конфигурация:
Имеется два пути конфигурирования PHP3.
используйте скрипт "setup", который поставляется с PHP3.
Этот скрипт задает Вам ряд вопросов (практически совпадающих
со сценарием "install" PHP/FI 2.0) и в конце запускает "configure".
Для запуска этого скрипта наберите
./setup.
Этот сценарий также создает файл, называемый "do-conf", который содержит опции,
установленные при конфигурации. Вы можете редактировать этот файл
для изменения некоторых опций без перезапуска "setup". Тогда выполните
./do-conf
и конфигурация запустится с новыми параметрами.
выполните конфигурацию вручную. Для просмотра параметров Вы можете выполнить
./configure --help.
Детали различных параметров конфигурации рассмотрены ниже.
Модуль Apache:
Для построения PHP3 в качестве модуля Apache ответьте "yes" в пункте "Build as an Apache module?"
(параметр конфигурации
--with-apache=
DIR
)
и определить базовый каталог дистрибутива Apache.
Если Вы распаковали свой дистрибутив Apache в директорию
/usr/local/www/apache_1.2.4
то она и будет Вашей базовой директорией дистрибутива Apache. Директория по умолчанию /usr/local/etc/httpd.
Модуль fhttpd:
При построении fhttpd в качестве модуля fhttpd ответьте "yes" в пункте
"Build as an fhttpd module?" (параметр конфигурации
--with-fhttpd=
DIR
)
и определить базовый каталог исходных кодов fhttpd. По умолчанию это
/usr/local/src/fhttpd.
Если Вы запускаете fhttpd, то построение PHP3 в качестве модуля
даст лучшую производительность и возможность контроля за удаленным исполнением.
Версия CGI:
По умолчанию PHP3 формируется как программа CGI. Если Вы используете web server
с поддержкой PHP3 в качестве модуля, то в своих решениях Вы должны исходить
из производительности. Однако CGI версия дает возможность пользователям Apache
исполнять страницы с поддержкой PHP под различными идентификаторами пользователя.
Пожалуйста, прочитайте
Security chapter
если Вы собираетесь исполнять PHP как CGI.
Параметры поддержки базы данных:
PHP имеет собственную поддержку для нескольких баз данных (так же как ODBC):
Adabas D
--with-adabas =DIR
Компиляция с поддержкой Adabas D. Параметр - установочная директория Adabas D,
по умолчанию
/usr/local/adabasd.
Adabas home page
dBase
--with-dbase
Включает условный атрибут поддержки Dbase. Не требует внешних библиотек.
filePro
--with-filepro
Включает условный атрибут поддержки filePro только для чтения. Не требует внешних библиотек.
mSQL
--with-msql=DIR
Включает поддержку mSQL. Параметр этой опции - установочная директория mSQL,
по умолчанию
/usr/local/Hughes.
Это директория по умолчанию дистрибутива mSQL 2.0
configure
автоматически определяет, какую версию mSQL Вы используете,
а PHP3 поддерживает как версию 1.0, так и 2.0, но если Вы компилируете PHP2 с версией mSQL1.0,
то можете получить доступ только к базам данных mSQL1.0 и наоборот.
Посмотрите также директивы
mSQL Configuration в
configuration file.
mSQL home page
MySQL
--with-mysql=DIR
Включает поддержку MySQL. Параметр в этой опции - установочная директория MySQL,
по умолчанию
/usr/local.
Она является директорией по умолчанию в дистрибутиве MySQL.
Посмотрите также директивы
MySQL Configuration в
configuration file.
MySQL home page
iODBC
--with-iodbc=DIR
Включает поддержку iODBC. Этот признак был разработан сначала для iODBC Driver Manager,
перераспределяемого ODBC driver manager, который выполняется под множеством разновидностей UNIX.
Параметром этой опции является установочная директория iODBC, по умолчанию
/usr/local.
FreeODBC home page
OpenLink ODBC
--with-openlink=DIR
Включает поддержку OpenLink ODBC. Параметром этой опции является установочная директория
OpenLink ODBC, по умолчанию
/usr/local/openlink.
OpenLink Software's home page
Oracle
--with-oracle=DIR
Включает поддержку Oracle. Протестирован и должен работать на версиях Oracle от 7.0 до 7.3.
Параметром является директория
ORACLE_HOME
Вы не должны определять этот параметр, если была установлена среда окружения Oracle.
Oracle home page
PostgreSQL
--with-pgsql=DIR
Включает поддержку PostgreSQL. Параметром является базовая установочная директория
PostgreSQL, по умолчанию
/usr/local/pgsql.
Посмотрите также директивы
Postgres Configuration в
configuration file.
PostgreSQL home page
Solid
--with-solid=DIR
Включает поддержку Solid. Параметром является установочная директория Solid,
по умолчанию
/usr/local/solid.
Solid home page
Sybase
--with-sybase=DIR
Включает поддержку Sybase. Параметром является установочная директория Sybase,
по умолчанию
/home/sybase.
Посмотрите также директивы
Sybase Configuration в
configuration file.
Sybase home page
Sybase-CT
--with-sybase-ct=DIR
Включает поддержку Sybase-CT. Параметром является установочная директория Sybase,
по умолчанию
/home/sybase.
Посмотрите также директивы
Sybase-CT Configuration в
configuration file.
Velocis
--with-velocis=DIR
Включает поддержку Velocis. Параметром этой опции является установочная директория
OpenLink ODBC, по умолчанию
/usr/local/velocis.
Velocis home page
A custom ODBC library
--with-custom-odbc=DIR
Включает поддержку для произвольной custom ODBC library.
Параметром является базовая директория, по умолчанию
/usr/local.
Эта опция подразумевает, что Вы определили CUSTOM_ODBC_LIBS, когда исполняется сценарий
конфигурации. Вы также должны иметь правильный заголовочный файл odbc.h где-нибудь в путях
включения. Если у Вас его нет, то создайте свой заголовочный файл и включите его отсюда.
Он может также требовать несколько внешних определений, особенно когда это на нескольких
платформах. Определите их в CFLAGS.
Например Вы можете использовать Sybase SQL Anywhere on QNX следующим образом:
CFLAGS=-DODBC_QNX LDFLAGS=-lunix
CUSTOM_ODBC_LIBS="-ldblib -lodbc" ./configure --with-custom-odbc=/usr/lib/sqlany50
Unified ODBC
--disable-unified-odbc
Отключает Unified ODBC модуль, который является общим интерфейсом ко всем базам данных
с интерфейсом, основанным на ODBC, таких как Solid и Adabas D. Это также работает
для нормальных библиотек ODBC. Был проверен с iODBC, Solid, Adabas D и Sybase SQL Anywhere.
Требуется, чтобы один (и только один) из этих модулей или модуль Velocis был включен
или определена пользовательская библиотека ODBC. Этот параметр применим
только если используется одна из следующих опций:
--with-iodbc,
--with-solid,
--with-adabas,
--with-velocis, или
--with-custom-odbc,
Посмотрите также директивы
Unified ODBC Configuration в
configuration file.
LDAP
--with-ldap=DIR
Включает поддержку
LDAP
(Lightweight Directory Access Protocol). ). Параметром является базовая установочная
директория LDAP, по умолчанию
/usr/local/ldap.
Более подробную информацию по LDAP можно найти в
RFC1777 и
RFC1778.
Другие параметры конфигурации:
--enable-sysvsem
--enable-sysvsem
Включает поддержку для семафоров Sys V (поддерживается большинством разновидностей UNIX).
Для получения подробной информации смотрим
Semaphore and Shared Memory documentation.
--enable-sysvshm
--enable-sysvshm
Включает поддержку разделяемой памяти для Sys V (поддерживается большинством разновидностей UNIX).
Для получения подробной информации смотрим
Semaphore and Shared Memory documentation.
--with-xml
--with-xml
Включает поддержку для непроверенных синтаксических анализаторов XML,
используя библиотеку от James Clark's
expat library.
Для больших подробностей обратитесь к
XML function reference.
--enable-maintainer-mode
--enable-maintainer-mode
Включает дополнительные зависимости и предупреждения компилятора,
используемые некоторыми разработчиками PHP3.
--with-system-regex
--with-system-regex
Использует библиотеку регулярных выражений прежде, чем собственные условия.
Если Вы построили PHP3 в качестве модуля сервера, Вы должны использовать
одинаковую библиотеку - и когда собираете PHP3 и когда собираете сервер. Включите эту опцию,
если системные библиотеки обеспечивают специальные свойства, которые Вам требуются.
Рекомендуется при возможности использовать собственные библиотеки.
--with-config-file-path
--with-config-file-path=DIR
Маршрут, используемый для просмотра
the php3.ini file при старте PHP.
--with-exec-dir
--with-exec-dir=DIR
Разрешить только запуск исполнимых файлов в DIR при нахождении в защищенном режиме.
По умолчанию это
/usr/local/bin.
Эта опция только устанавливает значение по умолчанию, которое потом можно изменить
при помощи директивы
safe_mode_exec_dir в
configuration file.
--disable-debug
--disable-debug
Не включает информацию об отладке в библиотеке или исполнимой программе.
Отладочная информация просто точно указывает на ошибки, поэтому можно выключить отладку,
пока PHP3 находится в стадии бета или альфа версий.
--enable-safe-mode
--enable-safe-mode
Включает защищенный режим (safe mode) по умолчанию. Это накладывает некоторые ограничения
на действия PHP, таких как открытие файлов только внутри корня документа. Для более подробной
информации смотрите
Security chapter
Пользователи CGI всегда должны включать безопасный режим. Эта опция только устанавливает
значение по умолчанию, которое потом можно включить или выключить при помощи директивы
safe_mode
configuration file.
--enable-track-vars
--enable-track-vars
Указывает PHP3 отслеживать пришедшие переменные GET/POST/cookie в массивах HTTP_GET_VARS,
HTTP_POST_VARS и HTTP_COOKIE_VARS. Эта опция только устанавливает значение по умолчанию,
которое потом можно включить или выключить при помощи директивы
track_vars в
configuration file.
--enable-magic-quotes
--enable-magic-quotes
Включает по умолчанию системные квоты. Эта опция только устанавливает значение
по умолчанию, которое потом можно включить или выключить при помощи директивы
magic_quotes_runtime в
configuration file.
Смотрим также директивы
magic_quotes_gpc и
magic_quotes_sybase.
--enable-debugger
--enable-debugger
Включает внутреннюю поддержку PHP3 debugger. Это свойство находится в стадии испытания.
Смотрим также директивы
Debugger Configuration в
configuration file.
--enable-discard-path
--enable-discard-path
Если это включено, то бинарный PHP CGI может быть безопасно помещен вне дерева web
и пользователи не смогут обойти защиту .htaccess. Читайте об этой опции
section in the security chapter.
--enable-bcmath
--enable-bcmath
Включает стиль bc произвольной точности математических функций.
Смотрим также опцию
bcmath.scale в
configuration file.
--enable-force-cgi-redirect
--enable-force-cgi-redirect
Включает проверку безопасности для внутренних переадресаций сервера (redirect).
Вы должны использовать это, если запускаете CGI версию с Apache.
Когда PHP используется в качестве исполняемого CGI, PHP по умолчанию сначала всегда
проверяет, что используется переадресацией (например под Apache, используя директивы Action).
Это дает уверенность, что исполняемый PHP не может использоваться для того, чтобы обойти
стандартные процедуры установления прав web сервера путем непосредственного вызова,
как например
http://my.host/cgi-bin/php/secret/doc.html.
Этот пример, доступен на
http://my.host/secret/doc.html
но игнорирует все установленные httpd правила безопасности для директории
/secret.
Не установленная опция отключает проверку и дает возможность обхода защиты httpd
и настроек предъявления полномочий. Делайте это только тогда, когда программное обеспечение
Вашего сервера неспособно указать, что была выполнена безопасная переадресация
и все Ваши файлы в корне документа, а также директории пользователей общедоступны.
Читайте об этой опции в
section in the security chapter.
--disable-short-tags
--disable-short-tags
Отключает краткую форму <? ?>тегов PHP3.
Вы должны отключить краткую форму, если хотите использовать PHP3 c
XML.
При отключенной краткой форме принимается только тег PHP3
<?php ?>.
Эта опция только устанавливает значение по умолчанию, которое потом можно включить
или выключить при помощи директивы
short_open_tag в
configuration file.
--enable-url-includes
--enable-url-includes
Дает возможность выполнять код на других HTTP и FTP серверах непосредственно из PHP3 с
include(). Смотрим также опцию
include_path в
configuration file.
--disable-syntax-hl
--disable-syntax-hl
Выключает синтаксическое выделение.
CPPFLAGS и LDFLAGS
При сборке PHP3 установщик просматривает заголовочные и библиотечные файлы
в различных директориях, измените соответственно переменные окружения
CPPFLAGS и LDFLAGS.
Если Вы используете нормальный shell, то вы должны написать
LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure
Построение:
Когда PHP3 сконфигурирован, Вы готовы к построению исполнимых CGI или библиотеку PHP3.
Об этом заботится команда make. Если Вы потерпели неудачу
и не можете понять почему, то смотрите раздел
Problems section.
VPATH
Проверка:
Если Вы собрали PHP3 в качестве программы CGI, Вы можете проверить результат,
выполнив команду make test. Это хорошая идея - проверить
результат сборки. Этим способом Вы можете обнаружить проблему с Вашим PHP3 на ранней стадии,
вместо того, чтобы бороться с этим позже.
Контрольное тестирование:
Если Вы собрали PHP3 в качестве программы CGI, Вы можете протестировать свою версию
при помощи команды make bench. Обратите внимание, что если используется
защищенный режим по умолчанию, то тест может не завершиться, если он требует больше,
чем 30 секунд. Это происходит потому, что
set_time_limit() () не может быть использована в защищенном режиме.
Используйте max_execution_time
для контроля этого времени в Ваших собственных сценариях. make bench
игнорирует configuration file.
Назад, к содержанию
Глава 4. Конфигурация
Файл php3.ini
Файл php3.ini читается при запуске синтаксического анализатора PHP. Для версий серверного модуля PHP, это случается только один раз, когда запускается веб-сервер. Для версии CGI это случается на каждом вызове.
Только для каждой директивы указанной здесь, имеется соответствующая директива Apache в httpd.conf. Просто добавьте php3_ в начале имен директив, указанных здесь.
Вы можете посмотреть установочные параметры большинства значений конфигурации вызвав функцию phpinfo().
Основные директивы конфигурации
auto_append_file string Определяет имя файла, который автоматически проверяется после основного файла. Файл включается так же, как если бы была вызвана функция include(), с использованием include_path.
Специальное значение none запрещает авто-добавление.
Примечание: Если сценарий обрывается функцией exit(),
авто-добавление не произойдет.
auto_prepend_filestring
Определяет имя файла, который автоматически проверяется перед основным файлом. Файл включается так же, как если бы была вызвана функция include(), с использованием include_path.
Специальное значение none запрещает авто-добавление.
cgi_ext
string
display_errors
boolean
Это определяет, должны ли ошибки печататься на экране как часть HTML вывода или нет.
doc_root
string
Главный каталог("root directory") PHP на сервере. Используется только когда он не пустой. Если PHP сконфигурирован при помощи safe mode, то никакие другие файлы за пределами этого каталога не обслуживаются.
engine
boolean
Эта директива действительно полезна только в модуле PHP под Apache. Это используется на сайтах, где необходимо включать и выключать синтаксический анализ PHP на определенные каталоги и виртуальные серверы. Установкой php3_engine off в допустимом месте файла httpd.conf, PHP можно запрещать и разрешать.
error_log
string
Имя файла, куда сохраняется журнал ошибок(log file) сценариев. Если используется специальное значение syslog, ошибки отправляются в системный журнал(system logger).
В UNIX'е это syslog(3), а в Windows NT это журнал событий (event log). Системный журнал не поддерживается в Windows 95.
error_reporting
integer
Устанавливает уровень сообщений об ошибках. Параметр является целым, представляющим битовую область. Добавьте те значения уровней сообщений об ошибках, которые Вы хотите.
Таблица 4-1. Уровни сообщений об ошибках
bit valueдопустимые сообщения
1 |
нормальные ошибки |
2 |
нормальные предупреждения |
4 |
ошибки синтаксического анализатора |
8 |
некритичные предупреждения стиля |
Значение по умолчанию - 7 (показываются нормальные ошибки, нормальные предупреждения и синтаксические ошибки).
open_basedir
string
Ограничивает файлы, которые могут открываться PHP в определенном директории-дереве.
Когда сценарий пытается открыть файл с помощью, например, fopen или gzopen, наличие/расположение файла проверяется. Когда файл находится за пределами определенного директория-дерева, PHP откажется открыть его. Все символьные ссылки определены, так что нет возможности избежать этого ограничения с помощью symlink.
Специальное значение . показывает что каталог, в котором находится сценарий, используется как основной каталог.
По умолчанию допускается открытие всех файлов.
gpc_order
string
Устанавливает допустимость GET/POST/COOKIE в анализе. Установка по умолчанию этой директивы - "GPC". Установка ее в "GP", например, вынудит PHP полностью игнорировать cookies и перезапишет любые переменные метода GET переменными метода POST с одинаковыми именами.
include_path
string
Определяет список каталогов где будут располагаться файлы для функций
require()
,
include()
и
fopen_with_path()
. Формат подобен формату системной переменной окружения
PATH
: список каталогов разделяется двоеточием в UNIX или точкой с запятой в Windows.
Пример 4-1. UNIX include_path
include_path=.:/home/httpd/php-lib
|
Пример 4-2. Windows include_path
include_path=".;c:wwwphplib"
|
Значением по умолчанию этой директивы является
.
(только текущий каталог).
isapi_ext
string
log_errors
boolean
Сообщает, что независимые сообщения об ошибке сценария должны регистрироваться в журнале ошибок сервера. Этот выбор таким образом является специфичным для сервера.
magic_quotes_gpc
boolean
Устанавливает magic_quotes состояние для GPC (Get/Post/Cookie)
операций. Когда magic_quotes включено (on), все ' (одиночные кавычки),
" (двойные кавычки), (обратные слэши) и нулевые значения (NUL's) записываются с обратной косой чертой автоматически. Если также включено magic_quotes_sybase, одиночная кавычка записывается с дополнительной одиночной кавычкой вместо обратной косой черты.
magic_quotes_runtime
boolean
Если
magic_quotes_runtime
разрешено, большинство функций, которые возвращают данные из любого внешнего источника разной природы, включая базы данных и текстовые файлы, будут иметь кавычки, записанные с обратной косой чертой.
Если
magic_quotes_sybase
также включены, одиночная кавычка записывается с дополнительной одиночной кавычкой вместо обратной косой черты.
magic_quotes_sybase
boolean
Если
magic_quotes_sybase
также разрешено, одиночная кавычка записывается с дополнительной одиночной кавычкой вместо обратной косой черты, если
magic_quotes_gpc
или magic_quotes_runtime
разрешены.
max_execution_time
integer
Эта установка определяет максимальное время в секундах допустимое для сценария, прежде чем он будет прекращен анализатором. Это помогает предохраниться от плохо/некорректно написанных сценариев.
memory_limit
integer
Эта установка определяет максимальный размер памяти в байтах, допустимый для этого сценария. Это помогает запретить плохо/некорректно написанным сценариям использовать всю доступную память на сервере.
nsapi_ext
string
short_open_tag
boolean
Задает допустимость короткой формы (
<? ?>
тегов PHP . Если вы хотите использовать PHP совместно с XML, эту опцию необходимо отключить. Если опция отключена, вы должны использовать длинную форму тегов
(
<?php ?>
).
sql.safe_mode
boolean
track_errors
boolean
Если опция разрешена, последнее сообщение об ошибке всегда будет представлена в глобальной переменной
$php_errormsg.
track_vars
boolean
Если опция разрешена, входящая информация GET, POST и cookie может быть найдена в
глобальных ассоциативных массивах
$HTTP_GET_VARS
,
$HTTP_POST_VARS
и
$HTTP_COOKIE_VARS
, соответственно.
upload_tmp_dir
string
Временный каталог, используемый для хранения файлов при их загрузке на сервер. Должен допускать запись, независимо от того, каким пользователем PHP используется.
user_dir
string
Основное имя каталога, используемого в домашнем каталоге пользователей для файлов PHP, например
public_html
.
warn_plus_overloading
boolean
Если разрешено, эта опция выдает при выводе PHP сообщение когда оператор плюс(
+
) используется в строке. Это должно облегчить поиск сценариев, которые должны быть перезаписаны с заменой на
(
.
) - string concatenator.
Директивы Конфигурации Почты
SMTP
string
Имя DNS или IP адрес сервера SMTP, который должен использоваться PHP под Windows
для отправки сообщения функцией
mail()
.
sendmail_from
string
Определяет "From:" - почтовый адрес, который используется в сообщении, отправленном
PHP под Windows.
sendmail_path
string
Указывает где может быть найдена программа
sendmail
,
обычно это
/usr/sbin/sendmail
или
/usr/lib/sendmail
configure
делает честную попытку определить это за вас и устанавливает значение по умолчанию, но в случае неудачи вы можете установить это здесь.
Системы не использующие sendmail должны установить
оболочку/замену sendmail их предлагаемой системой почты, если имеется.
Например,
Qmail
пользователи могут указать
/var/qmail/bin/sendmail
.
Директивы Конфигурации Safe Mode
safe_mode
boolean
Устанавливает допустимость PHP safe mode. Читайте
главу Безопасность (Security)
для большей информации
safe_mode_exec_dir
string
Если PHP используется в safe mode,
system()
и другие функции, выполняющие системные программы, отказываются запускать программы, которые находятся не в этом каталоге.
Debugger Configuration Directives
debugger.host
string
DNS-имя или IP-адрес хоста используемого отладчиком.
debugger.port
string
Номер порта используемого отладчиком.
debugger.enabled
boolean
Задает допустимость использования отладчика.
Директивы Загрузки Расширений(Extension Loading)
enable_dl
boolean
Эта директива действительно полезна только в модуле PHP под Apache. Вы можете разрешать/запрещать динамическую загрузку расширений PHP функцией
dl()
раздельно по каталогам и/или по виртуальным серверам.
Основная причина для выключения динамической загрузки - безопасность. С динамической загрузкой, можно игнорировать все ограничения safe_mode и open_basedir.
По умолчанию динамическая загрузка должна допускаться, за исключением случаев, когда используется
safe-mode. В safe-mode всегда недопустимо использование
dl()
.
extension_dir
string
В каком каталоге PHP должен искать динамически загружаемые расширения.
extension
string
Какие динамически загружаемые расширения загрузить, при запуске PHP.
Директивы конфигурации MySQL
mysql.allow_persistent
boolean
Допустить постоянные/устойчивые MySQL соединения.
mysql.max_persistent
integer
Максимальное число постоянных MySQL соединений за один процесс.
mysql.max_links
integer
Максимальное число MySQL соединений за процесс, включая постоянные соединения.
Директивы конфигурации mSQL
msql.allow_persistent
boolean
Допустить постоянные mSQL соединения.
msql.max_persistent
integer
The maximum number of persistent mSQL connections per process.
msql.max_links
integer
Максимальное число постоянных mSQL соединений за один процесс.
Директивы конфигурации Postgres
pgsql.allow_persistent
boolean
Допустить постоянные/устойчивые соединения Postgres.
pgsql.max_persistent
integer
Максимальное число постоянных соединений Postgres за процесс.
pgsql.max_links
integer
Максимальное число Postgres соединений за процесс, включая постоянные соединения.
Директивы Конфигурации Sybase
sybase.allow_persistent
boolean
Допустить постоянные Sybase соединения.
sybase.max_persistent
integer
Максимальное число постоянных Sybase соединений за процесс.
sybase.max_links
integer
Максимальное число Sybase соединений за процесс, включая постоянные соединения.
Директивы Конфигурации Sybase-CT
sybct.allow_persistent
boolean
Допустить постоянные Sybase-CT соединения.
По умолчанию включено.
sybct.max_persistent
integer
Максимальное число постоянных Sybase-CT соединений за процесс. По умолчанию значение -1 означающее неограниченное количество.
sybct.max_links
integer
Максимальное число Sybase-CT соединений за процесс, включая постоянные соединения. По умолчанию значение -1 означающее неограниченное количество.
sybct.min_server_severity
integer
Сообщения Сервера со степенью более чем или равной sybct.min_server_severity будут сообщены как предупреждения. Эта величина может также устанавливаться из сценария вызовом
sybase_min_server_severity()
. Значение по умолчанию - 10 , которое сообщает ошибки строгости информации, или выше.
sybct.min_client_severity
integer
Сообщения библиотеки Клиента со строгостью более чем или равной sybct.min_client_severity будут сообщены как предупреждениях. Эта величина может также устанавливаться из сценария вызовом
sybase_min_client_severity()
. По умолчанию - 10, что эффективно запрещает вывод.
sybct.login_timeout
integer
Максимальное время (в секундах) ожидания повторной попытки соединения, прежде чем будет отказ. Имейте в виду, что если max_execution_time превышен когда время попытки соединения закончится, ваш сценарий будет расторгнут прежде, чем будут предприняты какие-либо действия на случай отказа. По умолчанию - одна минута.
sybct.timeout
integer
Максимальное время(в секундах)ожидания окончания select_db или выполнения запроса. Имейте в виду, что если max_execution_time превышен, когда время функционирования истекает, ваш сценарий будет расторгнут прежде, чем будут предприняты какие-либо действия на случай отказа. По умолчанию не ограничено.
sybct.hostname
string
Имя хоста, с которым вы хотите соединиться, для показа sp_who. По умолчанию - none.
Директивы Конфигурации BC Math
bcmath.scale
integer
Количество десятичных цифр для всех функций bcmath.
Директивы Конфигурации Возможностей Броузера
browscap
string
имя файла возможностей браузера.
Директивы Конфигурации Унифицированных ODBC
uodbc.default_db
string
ИСТОЧНИК ДАННЫХ ODBC, для использования, если ничего не определено в
odbc_connect()
или
odbc_pconnect()
.
uodbc.default_user
string
Имя пользователя, используемое если нет определений в
odbc_connect()
или
odbc_pconnect()
.
uodbc.default_pw
string
Пароль, используемый, если не определено в
odbc_connect()
или
odbc_pconnect()
.
uodbc.allow_persistent
boolean
Допустить постоянные/устойчивые ODBC соединения.
uodbc.max_persistent
integer
Максимальное число постоянных ODBC соединений за процесс.
uodbc.max_links
integer
Максимальное число ODBC соединений за процесс, включая постоянные соединения.
Модуль Apache
Директивы конфигурации модуля Apache
Модуль CGI переадресации module/action
CGI
Виртуальные хосты
Безопасность
PHP - мощный язык и интерпретатор, независимо от того, включен ли он в веб-сервер как модуль или выполняется как разделение исполнимых файлов(binary) CGI, он может иметь доступ к файлам, выполнять команды и открывать сетевые соединения на сервере. Эти свойства дают возможность выполнять что-нибудь на веб-сервере небезопасное по умолчанию.
PHP разработан специально для того чтобы быть более безопасным языком для написания программ CGI, чем Perl или C.
С правильным выбором compile-time и runtime опций конфигурации он дает вам как раз ту комбинацию свободы и безопасности, которая вам нужна.
Как есть много разных путей использования PHP, есть и большой выбор конфигураций, управляющих поведением PHP. Большой выбор опций гарантирует, что вы можете использовать PHP для многих целей, но это также означает что есть комбинации этих опций и, также, конфигураций сервера, которые заканчиваются небезопасной установкой. Эта глава объясняет различные комбинации опций конфигурации и ситуации, в которых они могут быть удачно использованы.
CGI binary
Возможные атаки
Использование PHP как исполнимых файлов CGI - выбор для установок, которые по некоторой причине не хотят внедрить PHP как модуль в программное обеспечение сервера (подобно Apache), или PHP будет использоваться с другими типами оболочек CGI, чтобы создать надежное окружение chroot и setuid для сценариев. Эта установка обычно включает установку выполняемого(binary) PHP в каталог cgi-bin на веб-сервере.
Бюллетень CERT CA-96.11
рекомендует кроме того, устанавливать любые интерпретаторы в cgi-bin. Даже если исполнимый PHP может быть использован в качестве автономного интерпретатора, PHP разработан для того чтобы предохранить от атаки, которую эта установка делает возможной:
Доступ к системным файлам:
http://my.host/cgi-bin/php?/etc/passwd
Информация запроса в url после знака вопроса (?) проходит как аргументы командной строки интерпретатору через интерфейс CGI. Обычно переводчики открывают и выполняют файл указанный как первый аргумент в командной строке.
Вызванный как исполняемый CGI-файл, PHP отказывается интерпретировать командные аргументы строки.
Доступ к любым веб-документам на сервере:
http://my.host/cgi-bin/php/secret/doc.html
Часть URL с информацией о пути, стоящая после имени PHP-файла,
/secret/doc.html
обычно используется, чтобы определить имя файла, который должен открываться и интерпретироваться
CGI
программой.
Обычно некоторые директивы конфигурации веб-сервера(Apache:
Action) используются, чтобы перенаправить запросы к документам подобно
http://my.host/secret/script.php3
на PHP интерпретатор. С такой установкой веб-сервер сначала проверяет разрешения доступа в каталоге
/secret
, и потом создает запрос перенаправления
http://my.host/cgi-bin/php/secret/script.php3
. К несчастью, если запрос не дается изначально в этой форме, веб-сервер не проверяет доступ к файлу
/secret/script.php3
, но только для файла
/cgi-bin/php
. Таким образом любой пользователь, имеющий доступ к
/cgi-bin/php
, получает доступ к любым защищенным документам на сервере.
В PHP, опция compile-time конфигурации
--enable-force-cgi-redirect и директивы runtime-конфигурации
doc_root
и
user_dir
может использоваться для того чтобы отразить эту атаку, если дерево документов сервера имеет любые директории с ограничениями доступа. Смотрите ниже для полного объяснения других комбинаций.
Вариант 1: обслуживаются только общие(public) файлы
Если ваш сервер не имеет какой-либо информации, которая не ограничивается паролем или управлением доступом на основе ip, нет потребности в этих опциях конфигурации. Если ваш веб-сервер не позволяет вам производить перенаправление, или сервер не имеет пути, чтобы связаться с исполнимым PHP, который запрашивает благополучно перенаправленный запрос, вы можете указать опцию --disable-force-cgi-redirect для конфигурирования сценария.
Вы все еще должны убедиться, что ваши сценарии PHP не полагаются на этот или другой путь вызова сценария, ни непосредственно http://my.host/cgi-bin/php/dir/script.php3, ни переадресацией http://my.host/dir/script.php3.
Перенаправление может быть сконфигурировано, например в Apache, директивами AddHandler и Action (см. ниже).
Вариант 2: использование --enable-force-cgi-redirect
Эта compile-time опция предохраняет от вызова PHP напрямую с URL подобно http://my.host/cgi-bin/php/secretdir/script.php3. Вместо того чтобы выполнить запрос, PHP выполняет только грамматический разбор в этом способе если он выполнил правила перенаправления вебсервера.
Обычно переадресация в конфигурации Apache сделана со следующими директивами:
Action php3-script /cgi-bin/php
AddHandler php3-script .php3
Эта опция была протестирована только с веб-сервером Apache, и
полагается на Apache чтобы установить не-стандартную внешнюю переменную CGI
REDIRECT_STATUS для перенаправленных запросов.
Если ваш сервер паутины не поддерживает какого-либо способа сообщать что запрос прямой или перенаправленный, Вы не можете использовать эту опцию и Вы должны использовать один из других путей запуска версии CGI, документированной здесь.
Вариант 3: установка doc_root или user_dir
Размещение активного содержания, такого как скрипты и модули, в каталогах документов веб-сервера иногда является небезопасной практикой. Если при некоторой ошибке конфигурации сценарии не выполняются, они отображаются как обычные HTML документы, что может закончиться утечкой интеллектуальной собственности или информации безопасности подобно паролям. Поэтому многие сисадмины предпочитают устанавливать другие каталоги для сценариев, которые будут доступны только через PHP CGI и, следовательно, всегда проинтерпретированы и не отображены как таковые.
Также, если недоступен метод перенаправления неуверенных запросов, как описано в предыдущем разделе, необходимо установить корневой каталог(doc_root) сценариев, который отличается от корневого каталога веб-документов.
Вы можете установить корневой каталог для скриптов директивой конфигурации
doc_root
в файле php3.ini , или вы можете установить переменную окружения PHP_DOCUMENT_ROOT. Если это установлено, CGI-версия PHP всегда будет добавлять
doc_root и путь к файлу в запросах, так что вы всегда будете уверенны что за пределами этого каталога скрипты выполняться не будут (кроме user_dir //см.ниже).
Другая используемая опция - user_dir.
Когда user_dir - не установлена, открытием файла управляет только doc_root. Открытие URL подобно http://my.host/~user/doc.php3 не даст результата при открытии файла из каталога пользователя, но вызывается файл ~user/doc.php3 из каталога doc_root (да,имя каталога начинается с тильды [~]).
Если user_dir установлена, например как public_php, запрос, подобный http://my.host/~user/doc.php3 откроет файл doc.php3 в каталоге public_php домашнего каталога пользователя. Если это /home/user, то выполняется /home/user/public_php/doc.php3.
user_dir задается независимо от doc_root, так что вы можете контролировать доступ к document root и user directory отдельно.
Вариант 4: PHP синтаксический анализатор вне дерева web
Очень безопасная опция должна установить синтаксический анализатор PHP где-нибудь вне дерева файлов web. В /usr/local/bin, например. Обратная сторона этой опции заключается в том что вы должны вставлять строку подобно:
#!/usr/local/bin/php
в первую строку любого документа, содержащего PHP тэги. Кроме того, вы должны сделать файлы выполнимыми. Точно так же, как Вы поступаете с любым другим сценарием CGI записанным в Perl или sh или любом другом языке, который использует
#!
shell-escape механизм для самозапуска.
Чтобы PHP получил возможность корректно оперировать с PATH_INFO и PATH_TRANSLATEDпри такой установке, php анализатордолжен быть скомпилирован с опцией конфигурации --enable-discard-path
Модуль Apache
Когда PHP используется как Apache модуль, не наследуются права пользователя Apache (обычно таковые - "nobody").
Глава 5. Синтаксис и грамматика
Синтаксис PHP заимствован непосредствено из C.
Java и Perl также повлияли на синтаксис данного
языка.
Переход из HTML
Есть три способа выхода из HTML и перехода в
"режим PHP кода":
Пример 5-1. Способы перехода из HTML
1. <? echo("простейший способ, инструкция обработки SGMLn"); ?>
2. <?php echo("при работе с XML документами делайте такn"); ?>
3. <script language="php">
echo ("некоторые редакторы (подобные FrontPage) не
любят обрабатывающие инструкции");
</script>;
4. <% echo("От PHP 3.0.4 можно факультативно применять ASP-тэги"); %>
|
Разделение инструкций
Инструкции (утверждения) разделяются также как
в C или Perl - точкой с запятой.
Закрывающий тэг (?>) тоже подразумевает конец
утверждения, поэтому следующие записи
эквивалентны:
<php
echo "Это тест";
?>
<php echo "Это тест" ?>
Типы переменных
PHP поддерживает переменные следующих типов:
integer - целое
double - число с дробной частью
string - строковая переменная
array - массив
object - объектная переменная
pdfdoc - PDF-документ (только при наличии поддержки
PDF)
pdfinfo - PDF-инфо (только при наличии поддержки PDF)
Тип переменной обычно не устанавливается
программистом; вместо этого, он определяется PHP
во время выполнения программы, в зависимости от
контекста в котором данная переменная
используется.
Если вам нравится указывать тип переменной
непосредственно, вы можете использовать для
этого инструкцию cast
либо функцию settype().
Учтите, что переменная может вести себя по
разному в определенных ситуациях, в
зависимости от того, какой тип определен для нее
в данное время. Более подробно это описано в
разделе Изменение
типа.
Инициализация переменной
Для инициализации переменной в PHP вы просто
присваиваите ей значение. Для большинства
переменных это именно так; для массивов и
объектных переменных, однако, может
использоваться несколько иной механизм.
Инициализация
Массивов
Массив может инициализироваться одним из двух
способов: последовательным присвоением
значений, или посредством конструкции array() (которая описана в разделе Функции
Массивов).
При последовательном добавлении значений в
массив вы просто записываете значения элементов
массива, используя пустой индекс. Каждое
последующее значение будет добавляться в
качестве последнего элемента массива.
$names[] = "Jill"; // $names[0] = "Jill"
$names[] = "Jack"; // $names[1] = "Jack"
Как в C и Perl, элементы массива нумеруются
начиная с 0, а не с 1.
Инициализация
объектов
Для инициализации объектной переменной
используйте новое предписание для сопоставления
данного объекта объектной переменной.
class foo {
function do_foo () {
echo "Doing foo.";
}
}
$bar = new foo;
$bar -> do_foo ();
Область Переменной
Областью переменной является контекст, внутри
которого она определена. Главным образом, все
переменные PHP имеют одну область. Однако, внутри
функций определенных пользователем,
представлена локальная область функции. Любая
переменная, определенная внутри функции, по
умолчанию ограничена локальной областью
функции. Например:
$a = 1; /* глобальная область */
Function Test () {
echo $a; /* ссылка на переменную локальной области */
}
Test ();
Этот скрипт не выдаст что-либо на выходе,
поскольку инструкция echo относится к локальной
версии переменной $a, значение которой
присваивается не внутри этой области. Вы можете
заметить, что здесь имеется некоторое отличие от
языка C, в том что глобальные переменные в C
автоматически действуют и внутри функций,
если только они не переписываются локальными
определениями. Это может вызвать некоторые
проблемы, т.к. по неосторожности можно изменить
глобальную переменную. В PHP глобальные
переменные должны быть продекларированы
глобально внутри функции, если предполагается их
использование в данной функции. Например:
$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
Вышеописанный скрипт выдаст значение "3".
Поскольку $a и $b декларируются глобально внутри
функции, ссылки на данные переменные трактуются
как ссылки на их глобальные версии. Нет
ограничений на количество глобальных
переменных, которыми можно манипулировать
внутри функции.
Вторым способом доступа к переменным из
глобальной области является использование
специального опеределяемого PHP массива $GLOBALS. При
этом предыдущий пример может быть записан как:
$a = 1;
$b = 2;
Function Sum () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum ();
echo $b;
Массив $GLOBALS является ассоциативным массивом, в
котором имя глобальной переменной является
ключом, а значение этой переменной является
значением элемента массива.
Другой важной характеристикой от области
определения переменной является статическая
переменная. Статическая переменная существует
только в локальной области функции, но она не
теряет своего значения когда программа, при
исполнении, покидает эту область. Рассмотрим
следующий пример:
Function Test () {
$a = 0;
echo $a;
$a++;
}
Эта функция совершенно бесполезна практически,
поскольку каждый раз при ее вызове она
устанавливает $a в 0 и выводит "0".
Выражение $a++ , которое увеличивает значение
переменной, так же бесполезно, поскольку при
выходе из функции переменная $a исчезает. Для
придания дееспособности функции подсчета,
которая не теряла бы нить текущего счета,
переменная $a декларируется как статическая:
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Теперь, каждый раз при вызове функции Test() она
будет выводить значение $a и увеличивать его.
Статические переменные также весьма
существенны, когда функции вызываются
рекурсивно. Рекурсивные функции - это те, которые
вызывают сами себя. Составлять рекурсивную
функцию нужно внимательно, т.к. при неправильном
написании можно сделать рекурсию
неопределенной. Вы должны быть уверены в
адекватности способа прекращения рекурсии.
Следующая простая функция рекурсивно считает до
10:
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test ();
}
$count--;
}
Изменяемые переменные
Иногда бывает удобно давать переменным
изменяемые имена. Такие имена могут изменяться
динамически. Обычная переменая устанавливается
так:
$a = "hello";
Изменяемая переменная берет некое значение и
обрабатывает его как имя переменной. В
приведенном выше примере значение hello
может быть использовано как имя переменной,
посредством применения двух записанных подряд
знаков доллара, т.е.:
$$a = "world";
С этой точки зрения, две переменных определены
и сохранены в символьном дереве PHP: $a с содержимым
"hello" и $hello с содержимым "world". Так,
инструкция:
echo "$a ${$a}";
осуществляет то же самое, что и инструкция:
echo "$a $hello";
а именно, обе они выводят: hello world.
Чтобы использовать изменяемые переменные с
массивами, необходимо решить проблему
неоднозначности. Это означает, что если вы пишете
$$a[1], то синтаксическому анализатору необходимо
знать, имеете ли вы в виду использовать $a[1] как
переменую, или вы предполагаете $$a как
переменную а [1] как индекс этой переменной.
Синтаксис для разрешения подобной
неоднозначности такой: ${$a[1]} для первого случая и
${$a}[1] для второго.
Переменные вне PHP
HTML Формы (GET и POST)
Когда программой-обработчиком формы является
PHP-скрипт, переменные этой формы автоматически
доступны для данного скрипта PHP. Например,
рассмотрим следующую форму:
Пример 5-2. Простая переменная
формы
<form action="foo.php3" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
|
При активизации формы PHP создаст переменную $name, значением которой будет то
содержимое, которое было введено в поле Name: данной формы.
PHP также воспринимает массивы в контексте
переменных формы, но только одномерные. Вы
можете, например, группировать взаимосвязанные
переменные вместе или использовать это свойство
для определения значений переменных при
множественном выборе на входе:
Пример 5-3. Более сложные
переменные формы
<form action="array.html" method="post">
Name: <input type="text" name="personal[name]"><br>
Email: <input type="text" name="personal[email]"><br>
Beer: <br>
<select multiple name="beer[]">
<option value="warthog">Warthog
<option value="guinness">Guinness
</select>
<input type="submit">
</form>
|
Если PHP-атрибут track_vars включен, через установку
конфигурации track_vars
или директивой <?php_track_vars?>,
тогда переменные, активизированные посредством
методов POST или GET, будут также находиться в
глобальных ассоциативных массивах $HTTP_POST_VARS и
$HTTP_GET_VARS соответственно.
Имена переменных РИСУНКА
АКТИВИЗАЦИИ
При активизации (запуске) формы можно
использовать рисунок (изображение) вместо
стандартной кнопки запуска, в тэге подобном
этому:
<input type=image src="image.gif" name="sub">
Когда пользователь нажимает кнопку мыши где-либо
над таким рисунком, сопровождающая форма
передается на сервер с двумя дополнительными
переменными, sub_x и sub_y. Они содержат координаты
места нажатия кнопки мыши пользователем внутри
данного рисунка. Можно отметить, что практически,
реальные имена переменных передаваемые
браузером, содержат точку вместо символа
подчеркивания, но PHP конвертирует точку в элемент
подчеркивания (underscore) автоматически.
HTTP Кукисы
PHP очевидным образом поддерживает HTTP кукисы,
как это определено в Netscape's Spec.
Кукисы являются механизмом хранения данных в
удаленном браузере, используемым для поддержки
процедуры обмена или идентификации ответа
пользователя. Кукисы можно устанавливать
используя функцию SetCookie().
Кукисы являются частью заголовка HTTP, поэтому
функция SetCookie()
должна вызываться прежде чем какие-либо
передаваемые данные посылаются браузеру. Это
такое же ограничение, как и для функции Header().
Любые кукисы, посылаемые вам клиентом,
автоматически преобразовываются в переменные PHP,
также как данные методов GET и POST.
Если необходимо назначить множественные
значения одному кукису, просто добавьте
квадратные скобки [ ] к имени кукиса. Например:
SetCookie ("MyCookie[]", "Testing", time()+3600);
Учтите, что текущий кукис заменит предыдущий с
тем же именем в вашем браузере, если только путь
или домен не являются различными. Поэтому, при
работе с программами обслуживания карт вы можете
использовать для сохранения данных счетчик и
посылать его значения дальше и т.п.
Пример 5-4. Пример функции SetCookie
$Count++;
SetCookie ("Count", $Count, time()+3600);
SetCookie ("Cart[$Count]", $item, time()+3600);
|
Переменные окружения
PHP автоматически создает переменные окружения,
как и обычные переменные.
echo $HOME; /* Показывает переменную окружения HOME,
если она установлена. */
Хотя при поступлении информации механизмы GET,
POST и Cookie также атоматически создают переменные PHP,
иногда лучше явным образом прочитать переменную
окружения, для того чтобы быть уверенным в
получении ее правильной версии. Для этого может
использоваться функция getenv().
Для установки значения переменной окружения
пользуйтесь функцией putenv().
Директивы конфигурации
сервера
Изменение типа
PHP не требует явного определения типа при
объявлении переменной, тип переменной
определяется по контексту в котором она
используется. То есть, если вы присваиваете
строковое значение переменной var,
var становится строкой. Если
затем присвоить переменной var значение
целого (числа), то она станет целым.
Примером автоматического преобразования типа
в PHP может служить оператор сложения '+'. Если
какой-либо из оперендов является числом с
дробной частью (тип double), то затем все операнды
оцениваются как double и результат будет иметь тип
double. Иначе, эти операнды будут интерпретированы
как целые (integers) и результат будет так же иметь
тип integer. Отметим, что при этом НЕ меняются типы
самих операндов, меняется только оценка этих
операндов.
$foo = "0"; // $foo является строкой (ASCII 48)
$foo++; // $foo является строкой "1" (ASCII 49)
$foo += 1; // $foo сейчас является целым (2)
$foo = $foo + 1.3; // $foo сейчас имеет тип double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo является целым (15)
$foo = 5 + "10 Small Pigs"; // $foo является целым (15)
Если последние два примера выше кажутся
неясными, смотрите Преобразование
строк.
Если вы хотите чтобы переменная принудительно
оценивалась как имеющая определенный тип,
смотрите раздел Приведение
типа. Если вы желаете изменить тип переменной,
смотрите settype().
Определение типов переменных
Поскольку PHP определяет типы переменных и
преобразует их (в общем) по мере необходимости, не
всегда очевидно какой тип данная переменная
имеет в какой-то отдельный момент. Поэтому PHP
включает несколько функций, которые позволяют
определить текущий тип переменной. Это функции gettype(), is_long(), is_double(), is_string(), is_array(), и is_object().
Приведение типа
Приведение типа работает в PHP во многом так же
как в C: название требуемого типа записывается в
круглых скобках перед переменной, которая должна
быть приведена к данному типу.
$foo = 10; // $foo is an integer
$bar = (double) $foo; // $bar is a double
Допускается следующее приведение типов:
(int), (integer) - приведение к целому
(real), (double), (float) - приведение к типу double
(string) - приведение к строке
(array) - приведение к массиву
(object) - приведение к объектной переменной
Заметим, что табуляция и пробелы допускаются
внутри круглых скобок, поэтому следующее
функционально эквивалентно:
$foo = (int) $bar;
$foo = ( int ) $bar;
Преобразование строк
Когда строковая переменная оценивается как
числовая, результирующее значение и тип
переменной определяются следующим образом.
Переменная string будет оценена как double, если она
содержит любой из символов '.', 'e', или 'E'. Иначе она
будет оценена как integer.
Данное значение задается начальной частью
строковой переменной. Если строка начинается с
допустимых цифровых данных, то это значение и
будет использоваться. Иначе, будет значение 0 (ноль).
Допустимые цифровые данные - это конструкция из
факультативного символа, следующего за одной или
несколькими цифрами (содержащими факультативно
десятичную точку), обозначающего экспоненту.
Экспонента может обозначаться символом 'e' или 'E',
который может следовать за одной или несколькими
цифрами.
$foo = 1 + "10.5"; // $foo тип double (11.5)
$foo = 1 + "-1.3e3"; // $foo тип double (-1299)
$foo = 1 + "bob-1.3e3"; // $foo тип integer (1)
$foo = 1 + "bob3"; // $foo тип integer (1)
$foo = 1 + "10 Small Pigs"; // $foo тип integer (11)
$foo = 1 + "10 Little Piggies"; // $foo тип integer (11);
// строка содержит 'e'
Дополнительную информацию смотрите в
руководстве Unix страница для strtod(3).
Манипуляции с массивом
PHP поддерживает как скалярные так и
ассоциативные массивы. Фактически, между ними
нет разницы. Вы можете создать массив используя
функции list() или array(),
или можно явно задать значение каждого элемента
массива.
$a[0] = "abc";
$a[1] = "def";
$b["foo"] = 13;
Можно также создать массив просто добавляя в
него значения.
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world"
Массив может сортироваться функциями asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), и uksort() в зависимости от типа желаемой
сортировки.
Подсчет количества элементов массива
осуществляется функцией count().
Перемещаться по массиву позволяют функции next() и prev(). Другим типовым способом
перемещения по массиву является использование
функции each().
Назад, к содержанию
Глава 6. Элементы языка
Любой скрипт PHP состоит из
последовательности операторов.
Оператор может быть присваиванием,
вызовом функции, циклом, условным
выражением или пустым выражением
(ничего не делающим). Операторы
обычно заканчиваются точкой с
запятой. Также операторы могут быть
объединены в группу заключением
группы операторов в фигурные
скобки. Группа операторов также
является оператором. В этой части
описаны различные типы операторов.
Константа
PHP определяет несколько констант
и предоставляет механизм для
определения Ваших констант.
Константы похожи на переменные, но
они имеют слегка изменЈнный
синтаксис.
ПредопределЈнные константы - это
__FILE__ and __LINE__, которые соответствуют
имени файла и номеру строки,
которая выполняется в настоящий
момент.
Пример 6-1. Использование
__FILE__ и __LINE__<?php
function report_error($file, $line, $message) {
echo "An error occured in $file on line $line: $message.";
}
report_error(__FILE__,__LINE__, "Something went wrong!");
?>
|
Вы можете определить
дополнительные константы с помощью
функций define() и undefine() .
Пример 6-2. Описание
констант<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
undefine ("CONSTANT");
?>
|
Выражения
Выражения - это краеугольный
камень PHP. В PHP почти всЈ является
выражениями. Простейший и наиболее
точный способ определить выражение
- это "что-то, имеющее
значение".
Простейший пример, приходящий на
ум это константы и переменные.
Когда вы печатаете "$a = 5", вы
присваиваете значение '5'
переменной $a. '5', очевидно, имеет
значение 5, иными словами'5' это
выражение со значением5 (в данном
случае'5' это целочисленная
константа).
После этого присваивания вы
считаете значением $a 5, также, если
вы напишете $b = $a, вы будете ожидать
того же как, если бы вы написали $b = 5.
Другими словами, $a это также
выражение со значением 5. Если всЈ
написано правильно, то именно так
оно и случиться.
Несколько более сложные примеры
выражений - это функции. К примеру,
подумайте на следующей функцией :
function foo () {
return 5;
}
Подразумевая, что вы знакомы с
концепциями функции (если нет,
взгляните на часть, посвящЈнную
функциям), вы считаете, что $c = foo()
это практически то же самое, что
написать $c = 5 и вы правы.
Функции - это выражения с тем
значением, которое они возвращают.
Так как foo() возвращает 5, значение
выражение 'foo()' - 5. Обычно функции
подсчитывают возвращаемое
значение,а не возвращают
постоянное значение.
Конечно, значения в PHP не обязаны
быть целыми и зачастую они не
являются таковыми. PHP поддерживает 3
скалярных типа значений : целое,
число с плавающей точкой и строки (
скалярные выражения вы не можете
"разбить" на более маленькие
части, как, к примеру, массивы). PHP
поддерживает 2 составных
(нескалярных) типа : массивы и
объекты. Каждое из таких значений
может быть присвоено переменной
или возвращено функцией.
Итак, пользователи PHP/FI 2 не должны почувствовать каких-то перемен. PHP это
язык, ориентированный на выражения, практически всЈ является выражениями.Обратимся
к примеру, с которым мы уже разобрались, '$a = 5'. Легко заметить, что тут задействованы
два значения - значение целой константы 5 и значение $a, которое также становиться
равным 5.На самом деле здесь присутствует ещЈ одно значение, значение самого
присваивания. Само присваивание становиться равным присваиваемому значению,
в данном случае - 5.На практике это означает, что '$a = 5', не обращая внимания
на то, что оно равно выражению со значением 5. То есть, запись типа '$b = ($a
= 5)' похожа на запись'$a = 5; $b = 5;' (точка с запятой отмечает конец выражения).
Так как присваивания рассматриваются справа налево, вы также можете написать
'$b = $a = 5'.
Другой хороший пример направления выражения это прежварительное и последующее
увеличение и уменьшение. Рользователи PHP/FI 2 и многих других языков могут
быть знакомы с записями variable++ and variable--. Это операторы увеличения
и уменьшения. В PHP/FI 2, оператор '$a++' не имеет значения(не является выражением),
поэтому вы не можете его присвоить или использовать как-либо иначе. PHP расширяет
возможность увеличения/уменьшения делая его выражением, как и в C. В PHP, подобно
C, есть 2 типа инкремента - предварительный и последующий. И предыдущий и последующий
инкремент увеличивает значение переменной и воздействие на переменную идентично.Разница
в значении выражения инкремента. Предыдущее увеличение, которое записывается
как '++$variable', приравнивается увеличенной переменной (PHP увеличивает переменную
до того, как прочитать еЈ значение). Post-increment, which is written '$variable++'
evaluates to the original value of $variable, before it was incremented (PHP
increments the variable after reading its value, thus the name 'post-increment').
Очень распространЈнный тип выражений это выражения сравнения. Эти выражения
имеют значение 0 или 1 (означает ложь или истину соответственно). PHP поддерживает
> (больше, чем), >= ( больше или равно), = (равно), < (меньше,чем)
и <= (меньше или равно). Эти выражения в основном используются внутри условий,
например оператора IF.
Последний пример выражений, с которыми мы разберЈмся, это совмещЈнные выражения
оператор-присваивание. Вы уже знаете, что для того, чтобы увеличить значение
$a на еденицу, вы можете написать '$a++' или '++$a'. Но если следует увеличить
значение больше, чем на еденицу, к примеру - на 3? Вы можете написать '$a++'
несколько раз, но это не очень удобно и эффективно. Намного больше распространено
написание '$a = $a + 3'. '$a + 3' вычисляется, как значение $a плюс 3, а затем
присваивается переменной $a, в результате чего значение $a увеличивается на
3. В PHP, также как и в ряде других языков типа C, вы можете записать это короче,
что со временем бывает проще и быстрее также и для понимания. Добавление 3 к
текущему значению $a может быть записано как '$a+=3'. Это значит следующее :
'возьми значение $a, добавь к нему 3 и присвой это обратно $a. Кроме того, что
это быстрее и понятнее, такой тип выражений быстрее исполняется. Значение '$a+=3'
как и значение обычного присваивания это присвоенное значение. Заметьте, что
оно не равно 3, а является общим значением $a и 3. Любой бинарный (имеющий 2
операнда - прим. пер.) оператор может быть записан таким методом, например :
'$a-=5' (вычесть 5 из значения $a), '$b*=7' (умножиить значение $a на 7) и так
далее.
Есть ещЈ такое выражение, которое может показаться незнакомым, если вы не встречались
с ним в других языках - условный оператор с тремя операндами :
$first ? $second : $third
Если значение первого выражения истинно (не равно 0), то испольняется второе
выражение и это является результатом данного условного выражения. Иначе исполняется
третий оператор.
Этот пример должен помочь Вам лучше понять предварительное и последующее увеличение
и вообще выражения ?
function double($i) /* функция удваивания переменной */
{
return $i*2;
}
$b = $a = 5; /* присваиваем значения переменым $a и $b */
$c = $a++; /* последующее увеличение, присваиваем $c начальное
значение $a (5)*/
$e = $d = ++$b; /* предварительное увеличение, присваиваем
$d и $e увеличенное значение$b (6) */
/* тут и $d и$e равны6 */
$f = double($d++); /* присвоить удвоенное значение $d до его
увеличения, то есть 2*6 = 12, переменной $f*/
$g = double(++$e); /* присвоить удвоенное значение $e после
его увеличения, то есть 2*7 = 14, переменной g */
$h = $g += 10; /* сначала увеличить значение $g на 10, что
даЈт в результате 24, а затем присвоить это значение переменной $h, что также
даЈт 24 */
В начале главы мы сказали, что объясним различные типы операторов и, как и
было обещано выражения могут быть операторами. Впрочем, не каждое выражения
является оператором. В данном случае оператор имеет форму 'выражение' ';', то
есть выражение, за которым следует точка с запятой. В '$b=$a=5;' $a=5 это правильное
выражение, но само по себе оно не является оператором. А вот '$b=$a=5;' является
правильным оператором.
ЕщЈ одна вещь, которую нужно упомянуть - это логические значения выражений.
Во многих случаях, в основном в условных операторах и операторах циклов, вы
не заинтересованы в конкретных значениях выражений, а только являются ли их
значения TRUE или FALSE (в PHP нет специального типа boolean). Логические значения
вычисляются примерно так же, как я в языке Perl. Любое не нулевое целое значение
- это TRUE, ноль - это FALSE. Обратите внимание на то, что отрицательные значения
- это не ноль и поэтому они считаются равными TRUE. Пустая строка и строка '0'
это FALSE; все остальные строки - TRUE. И насчЈт составных типов (массивы и
объекты) - если значение такого типа не содержит элементов, то оно считается
равным FALSE; иначе подразумевается TRUE.
PHP предоставляет полную и мощную реализацию выражений и подробное еЈ описание
выходит за пределы этого руководства. ПриведЈнные выше примеры показали вам,
что такое выражения и как вы можете построить реальные выражения. В остальной
части руководства мы будем писать 'expr' для обозначения любого правильного
выражения PHP.
IF
Структура IF это одна из важнейших возможностей многих языков, включая PHP.
Она позволяет организовать выполнение фрагментов кода по условию. Возможности
PHP по использованию выражения IF похожи на C:
if (expr) statement
Как объяснялось в части про выражения, вычисляется логический результат "expr"
. Если expr равно TRUE, то PHP выполнит "statement", а если FALSE
- проигнорирует.
Следующий пример выведет фразу 'a is bigger than b' если $a больше $b:
if ($a > $b)
print "a is bigger than b";
Зачастую Вам требуется исполнить больше чем одно выражение по условию. Конечно,
не надо окружать каждое выражение конструкцией IF. Вместо этого вы можете сгруппировать
несколько выражений в блок выражений. К примеру, слежующий код не только выведет
фразу, но и присвоит значение $a переменной $b:
if ($a > $b) { print "a is bigger than b"; $b = $a; }
Выражение IF может иметь неограниченную степень вложенности в другие выражения
IF, что позволяет Вам эффективно использовать выполнение по условию различных
частей программы.
ELSE
Зачастую Вам требуется исполнить одно выражение, если соблюдается какое-либо
условие и другое выражение в противном случае. Вот для этого применияется ELSE.
ELSE расширяет возможности IF по части обработки вариантов выражения, когда
оно равно FALSE. Данный пример выведет фразу 'a is bigger than b' если $a больше
$b, и 'a is NOT bigger than b' в противном случае:
if ($a > $b) {
print "a is bigger than b";
} else {
print "a is NOT bigger than b";
}
Выражение ELSE выполняется только если выражение IF равно FALSE, а если есть
конструкции ELSEIF - то если и они также равны FALSE (см. ниже).
ELSEIF
ELSEIF, как и следует из его названия, является комбинацией IF и ELSE. ELSEIF
как и ELSE позволяет выполнить выражение, если значение IF равно FALSE, но в
отличие от ELSE оно выполнится только если выражение ELSEIF равно TRUE.К примеру,
следующий код выведет 'a is bigger than b' если$a>$b, 'a is equal to b' если
$a==$b, и 'a is smaller than b' если$a<$b:
if ($a > $b) {
print "a is bigger than b";
} elseif ($a == $b) {
print "a is equal to b";
} else {
print "a is smaller than b";
}
Внутри одного выражения IF может быть несколько ELSEIF. Первое выражение ELSEIF
(если таковые есть), которое будет равно TRUE, будет выполнено. В PHP3 вы можете
написать 'else if' (два слова), что будет значить то же самое, что и 'elseif'
(одно слово).
Выражение ELSEIF будет выполнено только если выражение IF и все предыдущие
ELSEIF равно FALSE, а данный ELSEIF равен TRUE.
Иной синтаксис для оператора IF : IF(): ...
ENDIF;
PHP3 предлагает иной путь для группирования операторов с оператором IF. Наиболее
часто это используется когда вы внедряете блоки HTML внутрь оператора IF, но
вообще может использоваться где угодно. Вместо использования фигурных скобок
за "IF(выражение)" должно следовать двоеточие, одно или несколько
выражений и завершающий ENDIF. Рассмотрите слежующий пример :
<?php if ($a==5): ?> A = 5 <?php endif; ?>
В этом примере блок "A = 5" внедрЈн внутрь выражения IF, используемого
альтернативным способом. Блок HTML будет виден только если $a равно 5.statement
written in the alternative syntax.
Этот альтернативный синтаксис применим и к ELSE и ELSEIF (expr) .Вот пример
подобной структуры :
if ($a == 5):
print "a equals 5";
print "...";
elseif ($a == 6):
print "a equals 6";
print "!!!";
else:
print "a is neither 5 nor 6";
endif;
WHILE
Цикл WHILE - простейший тип цикла в PHP3. Он действует как и его аналог в C.
Основная форма оператора WHILE :
WHILE(expr) statement
Смысл оператора WHILE прост. Он предписывает PHP выполнять вложенный(е) оператор(ы)
до тех пор пока expr равно TRUE. Значение выражения проверяется каждый раз при
начале цикла, так что если значение выражения изменится внутри цикла, то он
не прервЈтся до конца текущей итерации (выполнение всего блока вложенных операторов
- это одна итерация). Иногда, если значение expr равно FALSE с самого начала,
цикл не выполняется ни разу.
Как и в IF, вы можете сгруппировать несколько операторов внутри фигурных скобок
или использовать альтернативный синтаксис :
WHILE(expr): выражения ... ENDWHILE;
Следующие примеры идентичны - оба выводят номера с 1 по 10:
/* example 1 */
$i = 1;
while ($i <= 10) {
print $i++; }
/* example 2 */
$i = 1;
while ($i <= 10):
print $i;
$i++;
endwhile;
DO..WHILE
Цикл DO..WHILE очень похож на WHILE за исключением того, что значение логического
выражения проверяется не до, а после окончания итерации. Основное отличие в
том, что DO..WHILE гарантировано выполнится хотя бы один раз, что в случае WHILE
не обязательно.
Для циклов DO..WHILE существует только один вид синтаксиса:
$i = 0;
do {
print $i;
} while ($i>0);
Этот цикл выполнится один раз, так как после окончания итерации будет проверено
значение логического выражения, а оно равно FALSE ($i не больше 0), и выполнение
цикла завершится.
Опытные программисты на C может быть знакомы с иным использованием DO..WHILE,
позволяющем прекратить исполнение блока операторов в середине путЈм внедрения
его в цикл DO..WHILE(0) и использования оператора BREAK. Следующий код демонстрирует
такую возможность :
do {
if ($i < 5) {
print "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
print "i is ok";
...process i...
} while(0);
Не беспокойтесь, если вы не совсем поняли это. Вы можете программировать весьма
мощные скрипты и без этой возможности.
FOR
Циклы FOR - наиболее мощные циклы в PHP. Они работают подобно их аналогам в
C. Синтаксис цикла FOR :
FOR (expr1; expr2; expr3) statement
Первое выражение (expr1) безусловно вычисляется(выполняется) в начале цикла.
В начале каждой итерации вычисляется expr2. Если оно равно TRUE, то цикл продолжается
и выполняются вложенный(е) оператор(ы). Если оно равно FALSE, то цикл заканчивается.
В конце каждой итерации вычисляется(исполняется) expr3.
Каждое из этих выражений может быть пустым. Если expr2 пусто, то цикл продолжается
бесконечно (PHP по умолчанию считает его равным TRUE, как и С). Это не так бесполезно,
как могло бы показаться, так как зачастую вам требуется закончить выполнение
цикла используя оператор BREAK в сочетании с логическим условием вместо использования
логического выражения в FOR.
Рассмотрим следующие примеры. Все они выводят номера с 1 по 10 :
/* пример 1 */
for ($i = 1; $i <= 10; $i++) {
print $i;
}
/* пример 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
print $i;
}
/* пример 3 */
$i = 1;
for (;;) {
if ($i > 10) {
break;
}
print $i;
$i++;
}
/* пример 4 */
for ($i = 1; $i <= 10; print $i, $i++) ;
Конечно, первый вариант кажется лучшим (или четвЈртый), но оказывавется возможность
использования пустых выражений в цикле FOR зачастую оказывается полезной.
PHP также поддерживает альтернативный синтаксис FOR :
FOR (expr1; expr2; expr3): выражение; ...; endfor;
Другие языки используют оператор foreach для того, чтобы обрабатывает массивы
или списки. PHP использует для этого оператор while и функции list() и each() . Для примера смотрите документацию по
этим функциям.
BREAK
VREAK прерывает выполнение текущего цикла.
$i = 0;
while ($i < 10) {
if ($arr[$i] == "stop") {
break;
}
$i++;
}
CONTINUE
CONTINUE переходит на начало ближайшего цикла.
while (list($key,$value) = each($arr)) {
if ($key % 2) { // skip even members
continue;
}
do_something_odd ($value);
}
SWITCH
Оператор SWITCH похож на группу операторов IF с одинаковым выражением. Во многих
случаях вам нужно сравнить переменную (или выражение) со многими различными
значениями и выполнить различные фрагменты кода в зависимости от того, чему
будет равно значение выражения. Это как раз то, для чего предназначается оператор
SWITCH.
Следующие 2 примера это 2 разлчиных пути для достижения одной вещи, но один
использует серию операторов IF, а другой - оператор SWITCH.
/* пример 1 */
if ($i == 0) {
print "i equals 0";
}
if ($i == 1) {
print "i equals 1";
}
if ($i == 2) {
print "i equals 2";
}
/* пример 2 */
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
}
Важно понять как работает оператор SWITCH чтобы избежать ошибок. SWITCH выполняет
последовательно оператор за оператором. В начале код не исполняется. Только
когда встречается оператор CASE с подходящим значением, PHP начинает выполнять
программу. PHP продолжает выполнять операторы до конца блока SWITCH или пока
не встретит оператор BREAK. Если вы не напишете BREAK в конце цикла операторов,
то PHP продолжит выполнять операторы и следующего SWITCH'а. К примеру :
/* пример 3 */
switch ($i) {
case 0:
print "i equals 0";
case 1:
print "i equals 1";
case 2:
print "i equals 2";
}
В этом случае, если $i равно 0, то PHP выполнит все операторы print! Если $i
равно 1, то PHP выполнит последние два print. И только если $i равно 2, вы получите
ожидаемый результат и выведено будет только 'i equals 2'. Так что важно не забывать
ставить BREAK (разве что в некоторых случаях вы специально не захотите их ставить
для достижения определЈнной цели).
Специальный случай - это 'default case'. Этот оператор соответствует всем значениям,
которые не удовлетворяют другим case'ам. К примеру :
/* example 4 */
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
default:
print "i is not equal to 0, 1 or 2";
}
Другой заслуживающий упоминания факт - это то, что выражения в CASE могут быть
любого скалярного типа, то есть целые числа или числа с плавающей запятой, а
так же строки. Массивы и объекты не будут ошибкой, но в данном случае они не
имеют значимости.
REQUIRE
Оператор REQUIRE заменяет себя содержимым указанного файла, похоже на то,как
в препроцессоре C работает #include.
Это означает, что вы не можете поместить require() внутрь цикла и ожидать,
что он включит содержимое дугого файла несколько раз в процессе каждой итерации.
Для это используйте INCLUDE.
require ('header.inc');
INCLUDE
Оператор INCLUDE вставляет и выполняет содержимое указанного файла.
Это случается каждый раз, когда встречается оператор INCLUDE, так что вы можете
включить этот оператор внутрь цикла, чтобы включить несколько файлов :
$files = array ('first.inc', 'second.inc', 'third.inc');
for ($i = 0; $i < count($files); $i++) {
include($files[$i]);
}
include() отличается от require() тем, что оператор include выполняется
каждый раз при его встрече, а require() заменяется на содержимое указанного
файла безотносительно будет ли выполнено его содержимое или нет
Так как include() это специальный оператор,
требуется заключать его в фигурные скобки при использовании внутри условного
оператора.
/* Это неправильно и не будет работать, как хотелось бы. */
if ($condition)
include($file);
else
include($other);
/* А вот это - верно. */
if ($condition) {
include($file);
} else {
include($other);
}
Когда файл исполняется, парсер пребывает в "режиме HTML", то есть
будет выводить содержимое файла, пока не встретит первый стартовый тег PHP (<?).
Также смотрите readfile(), virtual().
FUNCTION
Функция может быть объявлена следующим образом:
function foo ($arg_1, $arg_2, ..., $arg_n) {
echo "Example function.n";
return $retval;
}
Внутри функции может быть любой верный код PHP3, даже объявление другой функции
или класса .
Функции должны быть определены перед тем, как на них ссылаться.
Возвращение результатов
Результаты возвращаются через необязательный оператор return. Возвращаемый
результат может быть любого типа, включая списки и объекты.
function my_sqrt ($num) {
return $num * $num;
}
echo my_sqrt (4); // outputs '16'.
Множественные результаты не могут быть возврашены в качестве результата, но
вы можете реализовать это путЈм возврата списка :
function foo() {
return array (0, 1, 2);
}
list ($zero, $one, $two) = foo();
Аргументы
Информация может быть передана функции через список аргументов, которые являются
разделЈнным запятыми списком переменных и/или констант.
PHP3 поддерживает передачу аргументов по значению (по умолчанию), по ссылке, и
значения по умолчанию. Списки аргументов переменной длины не поддерживаются,
но того же можно достичь, передавая массивы.
function takes_array($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
Передача
по ссылке
По умолчанию, аргменты функции передаются по значению. Если вы хотите в функции
модифицировать аргументы, то можете передать их по ссылке.
Если вы хотите, чтобы аргумент всегда передавался по ссылке, то следует поставить
амперсенд (&) перед именем аргумента в объявлении функции :
function foo( &$bar ) {
$bar .= ' and something extra.';
}
$str = 'This is a string, ';
foo ($str);
echo $str; // выведет : 'This is a string, and something extra.'
Если вы хотите передать аргумент по ссылке в случае, когда по умолчанию такого
не делается, то добавьте амперсенд перед именем аргумента в вызове функции :
function foo ($bar) {
$bar .= ' and something extra.';
}
$str = 'This is a string, ';
foo ($str);
echo $str; // выведет 'This is a string, '
foo (&$str);
echo $str; // выведет 'This is a string, and something extra.'
Значения по умолчанию
Функции могут определять значения по умолчанию для скалярных аргументов в стиле
C++ как показано :
function makecoffee ($type = "cappucino") {
echo "Making a cup of $type.n";
}
echo makecoffee ();
echo makecoffee ("espresso");
Этот пример выведет следующее :
Making a cup of cappucino.
Making a cup of espresso.
Значение по умолчанию должно быть константой, а не переменной или, к примеру,
членом класса.
Учтите, что когда вы объявляете аргументы по умолчанию, они должны быть справа
от всех "неумолчальных" аргументов, в противном случае это не будет
работать, как задумано. К примеру :
function makeyogurt ($type = "acidophilus", $flavour) {
return "Making a bowl of $type $flavour.n";
}
echo makeyogurt ("raspberry"); // не будет работать, как ожидалось
Этот пример выведет следующее :
Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Making a bowl of raspberry .
А теперь сравните с этим :
function makeyogurt ($flavour, $type = "acidophilus") {
return "Making a bowl of $type $flavour.n";
}
echo makeyogurt ("raspberry"); // а вот это работает
И выводит следующее :
Making a bowl of acidophilus raspberry.
OLD_FUNCTION
Оператор OLD_FUNCTION позволяет вам определяить функцию использую синтаксис
PHP/FI2 (за исключением того, что вы должны заменить 'function' на 'old_function').
Это свойство только для совместимости и должно использоваться лишь конверторами
PHP/FI2 -> PHP3.
Описанные таким образом функции не могут быть вызваны из служебного кода PHP.
Это к тому же значит, что вы не можете использовать их в функциях типа usort(),
array_walk() и register_shutdown_function().
Вы можете обойти это путЈм введения специальной функции в терминах PHP3, которая
будет вызывать OLD_FUNCTION.
CLASS
Класс - это набор переменных и функций, работающих с этими переменными. Класс
определяется следующим образом :
<?php
class Cart {
var $items; // Количество вещей в корзине покупателя
// Добавить $num наименований типа $artnr в корзину
function add_item ($artnr, $num) {
$this->items[$artnr] += $num;
}
// Убрать $num наименований $artnr из корзины
function remove_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
Это определения класса Cart, который состоит связного списка наименований товаров
в корзине и двух функций для добавления и удаления вещей из корзины.
Классы это типы, то есть, заготовки для реальных переменных. Вы должны создавать
переменные желаемого типа, используя оператор new :
$cart = new Cart;
$cart->add_item("10", 1);
Таким образом, мы создали объект $cart класса Cart. Функция add_item() этого
объекта вызывается для добавления 1 товара номер 10 к корзине.
Классы могут быть расширениями других классов. Расширенный класс обладает всеми
переменными и функциями базового класса и тем, что вы определите при расширении
класса. Это делается используя ключевое слово extends :
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name;
}
}
Это определяет класс Named_Cart, который имеет все переменные и функции класса
Cart плюс дополнительную переменную $owner и дополнительную функцию set_owner().
Вы можете создать поименованую корзину обычным образом и установить или получить
владельца корзины. Также вы можете использовать и нормальные функции корзины
в поименованой корзине :
$ncart = new Named_Cart; // Создать корзину
$ncart->set_owner ("kris"); // Указать владельца
print $ncart->owner; // Распечатать имя владельца корзины
$ncart->add_item ("10", 1); // (унаследовано из обычной корзины)
Внутри функций класса переменная $this означает сам объект. Вы должны использовать
$this->нечто для доступа к переменной или функции с именем 'нечто' внутри
объекта.
Конструкторы это функции в классе, которые автоматически вызываются, когда
вы создаЈте новую переменную данного класса. Функция становится классом, когда
она имеет такое же имя, как и сам класс.
class Auto_Cart extends Cart {
function Auto_Cart () {
$this->add_item ("10", 1);
}
}
Мы определили класс Auto_Cart который является тем же классом Cart плюс имеет
конструктор, который инициализирует корзину при создании, наполняя еЈ одним
товаром типа "10". Конструкторы также могут иметь аргументы, и эти
аргументы могут быть необязательными, что делает конструктор более полезным
:
class Constructor_Cart {
function Constructor_Cart ($item = "10", $num = 1) {
$this->add_item ($item, $num);
}
}
// Покупаем вся одно и то же :
$default_cart = new Constructor_Cart;
// А тут что-то новое :
$different_cart = new Constructor_Cart ("20", 17);
Назад, к содержанию
Глава 7. Выражения
Операторы
Арифметические операторы
Помните основную арифметику из школы? Эти операторы работают подобным образом
Таблица 7-1. Арифметические операторы
примерназваниерезультат
$a + $b | Сложение | Сумма $a и $b. |
$a - $b | Вычитание | Вычитает $b из $a. |
$a * $b | Умножение | Произведение $a и $b. |
$a / $b | Деление | Деление $a на $b. |
$a % $b | Остаток деления | Остаток от деления $a на $b. |
Оператор деления("/") возвращает целую величину(результат целочисленного деления) если оба оператора - целые (или строка преобразованная в целое). Если каждый операнд является величиной с плавающей запятой, выполнится деление с плавающей запятой.
Операторы строкB действительности есть только один оператор -- оператор конкатенации (".").
$a = "Hello ";
$b = $a . "World!"; // теперь $b = "Hello World!"
Операторы присваивания Основным оператором присваивания является "=". Вы могли подумать что это "равно"("equal to"). Но это не так. В действительности это означает что левый операнд получает значение выражения в правых (собирательное присваивание).
Значением выражения присваивания является присваиваемая величина. Так что если "$a = 3", то это 3. Это позволит Вам делать некоторые мудреные вещи:
$a = ($b = 4) + 5; // теперь $a равно 9, а $b стало равным 4.
В дополнение к основным операторам присваивания есть дополнительные "комбинационные операторы",для всех арифметических и строковых операторов, что позволяет Вам использовать значение в выражении и затем устанавливать свое значение в результате этого выражения. Например:
$a = 3;
$a += 5; // теперь $a равно 8, как если бы мы сказали: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // теперь $b равно "Hello There!", как если бы мы написали $b = $b . "There!";
Бинарные Операторы (Побитовые Логические Операторы)Бинарные Операторы позволяют вам изменять биты в целых числах.
Table 7-2.Бинарные Операторы
примерназваниерезультат
$a & $b | И | Будут установлены биты, которые были установлены и в $a и в $b.
*Пример вебклуба: $a=5; /* 0101 */
$b=12; /* 1100 */
$c=$a & $b; /* $c будет равно 4 (0100) */
|
$a | $b | Или | Будут установлены биты, установленные в $a или $b .
*Пример вебклуба:
$a=5; /* 0101 */
$b=12; /* 1100 */
$c=$a|$b; /* $c будет (1101) */
|
~ $a | Не | Будут установлены не_присутствующие в $a биты (реверс)
*Пример вебклуба:
$a=5; /* 0101 */
~ $a /* $a будет равно x (1010) */
|
Логические операторыТаблица 7-3. Логические операторы
примерназваниерезультат
$a and $b | И | Истина, если истинны $a и $b. |
$a or $b | Или | Истина, если истинны $a или $b. |
$a xor $b | Или | Истина, если истинны $a или $b, но не оба. |
! $a | Не | Истина, если не истинно $a. |
$a && $b | И | Истина, если истинны и $a и $b. |
$a || $b | Или | Истина, если истинны $a или $b. |
Разница в двух различных вариантах операторов "and" и "or" - в различии приоритетов операций. (см. ниже)
Операторы СравненияОператоры Сравнения, как и подразумевается в их имени, позволяют Вам сравнивать две величины.
Таблица 7-4. Операторы Сравнения
примерназваниерезультат
$a == $b | равно | истина, если $a эквивалентно $b. |
$a != $b | Не равно | Истина, если $a не эквивалентно $b. |
$a < $b | Меньше чем | Истина если $a меньше чем $b. |
$a > $b | Больше чем | Истина если $a больше $b. |
$a <= $b | Меньше или равно | Истина, если $a меньше или равно $b. |
$a >= $b | Больше или равно | Истина, если $a больше или равно $b. |
Назад, к содержанию
Руководство по РНР 3.0 - Adabas D функции
Содержание
ada_afetch
ada_autocommit
ada_close
ada_commit
ada_connect
ada_exec
ada_fetchrow
ada_fieldname
ada_fieldnum
ada_fieldtype
ada_freeresult
ada_numfields
ada_numrows
ada_result
ada_resultall
ada_rollback
Поскольку Adabas D функции малоупотребимы, вы,
вероятно, захотите использовать вместо них Унифицированные
ODBC функции.
ada_afetch
ada_afetch -- загрузка строки результата исполнения
скрипта в массив
Description
See odbc_fetch_into()
ada_autocommit
ada_autocommit -- чтение и переключение флага режима
автоисполнения соединения
Description
See odbc_autocommit().
ada_close
ada_close -- завершение соединения с сервером
Description
See odbc_close().
ada_commit
ada_commit -- совершение Adabas D транзакции
Description
See odbc_commit()
ada_connect
ada_connect -- соединение с источником данных Adabas D
Description
See odbc_connect().
ada_exec
ada_exec -- подготовка и исполнение SQL инструкции
Description
See odbc_exec() or odbc_do().
ada_fetchrow
ada_fetchrow -- выборка строки из результата
исполнения скрипта
Description
See odbc_fetch_row().
ada_fieldname
ada_fieldname -- получение имени поля (столбца)
Description
See odbc_field_name().
ada_fieldnum
ada_fieldnum -- получение номера поля
Description
See odbc_field_num().
ada_fieldtype
ada_fieldtype -- получение типа данных поля
Description
See odbc_field_type().
ada_freeresult
ada_freeresult -- освобождение ресурсов, отводимых под
содержимое результата
Description
See odbc_free_result().
ada_numfields
ada_numfields -- получение количества полей (столбцов)
в содержимом результата
Description
See odbc_num_fields().
ada_numrows
ada_numrows -- количество строк (рядов) в содержимом
результата
Description
See odbc_num_rows().
ada_result
ada_result -- получение данных из содержимого
результата
Description
See odbc_result().
ada_resultall
ada_resultall -- распечатка результата в виде HTML
таблицы
Description
See odbc_result_all().
ada_rollback
ada_rollback -- откат транзакции
Description
See odbc_rollback().
Назад, к содержанию
Специфичные функции Apache
Содержаниеapache_lookup_uriapache_notegetallheadersvirtualapache_lookup_uriapache_lookup_uri -- Выполняет подробный запрос для указанного URI и возвращает всю информацию о немОписаниеclass apache_lookup_uri(string filename); Выполняет подробный запрос для указанного URI. Получает всю важную информацию о заданном ресурсе и возвращает эту информацию по классам.
Описание возвращаемых классов:
status |
the_request |
status_line |
method |
content_type |
handler |
uri |
filename |
path_info |
args |
boundary |
no_cache |
no_local_copy |
allowed |
send_bodyct |
bytes_sent |
byterange |
clength |
unparsed_uri |
mtime |
request_time |
apache_noteapache_note -- получает и устанавливает значения в таблице нотаций(примечаний) запроса ApacheОписаниеstring apache_note(string note_name, string [note_value]); apache_note() это специальная функция Apache которая получает и устанавливает значения в таблице нотаций(примечаний) запроса. При вызове с одним аргументом она возвращает текущее значение note_name. При вызове с двумя аргументами она устанавливает значение нотации(примечания) note_name в note_value и возвращает предыдущее значение нотации(примечания) note_name.
getallheadersgetallheaders -- Выбор всех заголовков HTTP-запросовОписаниеarray getallheaders(void); Эта функция возвращает ассоциативный массив из всех HTTP заголовков в текущем запросе.
Пример 1. GetAllHeaders() $headers = getallheaders();
while (list($header, $value) = each($headers)) {
echo "$header: $value<br>n";
} |
Этот пример покажет все заголовки текущего запроса
Примечание: GetAllHeaders() на данный момент это поддерживается только если PHP запущен как модуль Apache.
virtualvirtual -- Выполняет подзапрос Apache Описаниеint virtual(string filename); virtual() является спец.функцией Apache, которая эквивалентна <!--#include virtual...--> в mod_include. Она выполняет подзапрос Apache. Применима для включения CGI скриптов или .shtml файлов, или чего-нибудь еще, на чем вы должны выполнить парсинг(анализ текста) через Apache. Помните, что для CGI скриптов, скрипт должен выдавать правильнывые заголовки. Т.е. должне быть как минимуцм Content-type заголовок.
Для PHP файлов, вы должны использовать include() или
require().
Назад, к содержанию
Функции обработки массивов
Содержание:
array
array_walk
arsort
asort
count
current
each
end
key
ksort
list
next
pos
prev
reset
rsort
sizeof
sort
uasort
uksort
usortarrayarray -- Создает массив Описаниеarray array(...);Возвращает массив параметров. Параметры могут быть даныпо индексу при использовании опрератора =>.
Помните что array() - это языковая конструкция, и не является регулярным выражением.
Следующий пример демонстрирует как создавать двумерный массив, как определять ключи для ассоциативного массива, и как в пропускать-и-продолжать числовые индексы в нормальном массиве.
Пример 1. array() $fruits = array(
"fruits" => array("a"=>"orange","b"=>"banana","c"=>"apple"),
"numbers" => array(1, 2, 3, 4, 5, 6)
"holes" => array("first", 5 => "second", "third")
); |
См. также:
list().
array_walkarray_walk -- Применение функции на каждого члена массива.
Описаниеint array_walk(array arr, string func); Применяет функцию с именем func для каждого элемента массива arr. Элементы проходят как первый аргумент функции func; если func требует больше чем один аргумент, будет сгенерировано предупреждение всякий раз, когда
array_walk() вызывает func.
Эти предупреждения могут подавляться добавлением знака '@' при вызове array_walk(), или при использовании error_reporting().
Помните, что func будет работать с елементами массива arr, так что все изменения сделанные над элементами массива будут изменениями для самого массива.
Пример 1. array_walk() $fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
function test_alter( $item1 ) {
$item1 = 'bogus';
}
function test_print( $item2 ) {
echo "$item2<br>n";
}
array_walk( $fruits, 'test_print' );
array_walk( $fruits, 'test_alter' );
array_walk( $fruits, 'test_print' );
|
См. также:
each() и
list().
arsortarsort -- Сортировка массива в обратном порядке и поддерка индексных связей.
Описаниеvoid arsort(array array);
Эта функция сортирует массив так что индексы массива поддерживают их корреляцию с элементами массива с которыми они связываются. Это используется, главным образом, для сортировки ассоциативных массивов, где имеет значение фактический элементный порядок.
Пример 1. arsort() $fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."n";
} |
Пример нам покажет:
fruits[a] = orange
fruits[d] = lemon
fruits[b] = banana
fruits[c] = apple
Фрукты показаны в обратном алфавитном порядке, и поддерживаются связанные с ними индексы.
См. также:
asort(),
rsort(),
ksort(), и
sort().
asortasort -- Сортирует массив и поддерживает связанные индексыОписаниеvoid asort(array array);Эта функция сортирует массив так что индексы массива поддерживают их корреляцию с элементами массива с которыми они связываются. Это используется, главным образом, для сортировки ассоциативных массивов, где имеет значение фактический элементный порядок
Пример 1. asort() $fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
asort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."n";
} |
Этот пример покажет:
fruits[c] = apple
fruits[b] = banana
fruits[d] = lemon
fruits[a] = orange
Фрукты показаны в алфавитном порядке, и поддерживаются индексы связанные с каждым элементом массива.
См. также:
arsort(),
rsort(),
ksort(), и
sort().
countcount -- подсчитывает элементы в переменнуюОписаниеint count(mixed var); Возвращает число элементов в var, который является естественно массивом (что либо другое будет иметь один элемент).
возвращает 0 если переменная не укстановлена.
возвражает 1 если переменная не является массивом.
См. также:
sizeof(),
isset(), и
is_array().
currentcurrent -- возвращает текущий элемент массиваОписаниеmixed current(array array);
Каждая переменная-массив имеет внутренний указатель, который указывает на один из своих элементов. Кроме того, все элементы в массиве связываются двунаправленным списком указателей для дополнительных целей.
Внутренний указатель указывает на первый элемент, который включался в массив пока Вы не выполняли одну из функций, которые модифицируют этот указатель в этом массиве.
Функция current()просто возвращает элемент массива, на который в данный момент указывает внутренний указатель. Он никак не перемещает указатель. Если внутренний указатель указывает на конец списка элементов,
current() возвращает false(ложно).
Внимание: если массив содержит пустые элементы (0 или "", пустую строку), то функция возвратит "false" для каждого из них. Это показывает, что текущий элемент является нулевым значением или вы дошли до конца массива. Для того, чтобы правильно просматривать массив, используйте функцию each().
См. также:
end(),
next(),
prev() и
reset().
eacheach -- возвращает следующую пару ключ/значение из массиваОписаниеarray each(array array);Возвращает следующую пару ключ/значение из массива array и предоставляет курсор массива. Эта пара возвращается в четырех-элементный массив, с ключами 0, 1, key, и
value. Элементы 0 и
key - каждое содержит ключевое имя элемента массива, а 1 и value содержат данные.
Пример 1. each() $foo = array( "bob", "fred", "jussi", "jouni" );
$bar = each( $foo );
$bar теперь содержит следующие пары ключ/значение:
0 => 0
1 => 'bob'
key => 0
value => 'bob'
$foo = array( "Robert" => "Bob", "Seppo" => "Sepi" );
$bar = each( $foo );
$bar теперь содержит следующие пары ключ/значение:
0 => 'Robert'
1 => 'Bob'
key => 'Robert'
value => 'Bob'
|
each(), как правило, используется вместе с
list() чтобы просмотреть массив; например,
$HTTP_POST_VARS:
Пример 2. Просмотр $HTTP_POST_VARS с помощью each() echo "Values submitted via POST method:<br>";
while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {
echo "$key => $val<br>";
}
|
См. также
key(),
list(),
current(),
reset(),
next(), и
prev().
endend -- устанавливаете внутренний указатель массива на последнем элементеОписаниеend(array array); end() перемещает array's
внутренний указатель на последний элемент массива.
См. также:
current(),
each(), end()
next() и
reset()
keykey -- выбирает ключ из ассоциативного массиваОписаниеmixed key(array array); key() Возвращает индекс элемента в текущей позиции массива
См. также:
current(),
next()
ksortksort -- Сортирует массив по ключам.Описаниеint ksort(array array); Сортирует массив по ключу, используя ключ для корреляциях данных. Это полезно главным образом для ассоциативного массива.
Пример 1. ksort() $fruits = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
ksort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."n";
} |
Этот пример должен показать:
fruits[a] = orange
fruits[b] = banana
fruits[c] = apple
fruits[d] = lemon
См. также
asort(),
arsort(),
sort(), и
rsort().
listlist -- Связывает переменные, как если бы они были массивом.
Описаниеvoid list(...); Подобно
array(), функция list в действительностью является языковой конструкцией а не функцией list() используется для связи списка переменных одной операцией.
Пример 1. list() <table>
<tr>
<th>Employee name</th>
<th>Salary</th>
</tr>
<?php
$result = mysql($conn, "SELECT id, name, salary FROM employees");
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
print(" <tr>n".
" <td><a href="info.php3?id=$id">$name</a></td>n".
" <td>$salary</td>n".
" </tr>n");
}
?></table> |
См. также:
each(),
array().
nextnext -- передвигает внутренний указатель массиваОписаниеmixed next(array array); Возвращает следующий элемент массива, от текущей позиции внутреннего указателя массива, или "ложь"(false) если нет больше элементов.
Внимание: если массив содержит пустые элементы, тогда эта функция возвратит "ложь"(false) и для этих элементов. Чтобы правильно просмотреть массив, который может содержать пустые элементы, смотрите функцию
each().
next() ведет себя подобно
current(), с одной лишь разницей. Он передвигает внутренний указатель массива на один элемент вперед прежде, чем возвратить элемент. Это означает что он возвращает значение следующего элемента и передвигает на него внутренний указатель массива. Если при обращении к следующему элементу обнаружен конец массива - next() возвращает "ложь"(false).
См. также:
current(),
end()
prev() и
reset()
pospos -- Возвращает текущий элемент в массивеОписаниеmixed pos(array array); Это - псевдоним для
current().
См. также:
end(),
next(),
prev() и
reset().
prevprev -- перемещает внутренний указатель массиваОписаниеmixed prev(array array); Возвращает предыдущий элемент массива, или "ложь"(false), если перед текущим нет больше элементов. Внимание: если массив содержит пустые элементы, то функция возвратит "ложь" и на этих элементах. Чтобы правильно просмотреть массив, который может содержать пустые элементы, смотрите функцию
each().
prev() ведет себя подобно
next(), за исключением того что он переводит внутренний указатель массива на одну позицию назад, а не вперед.
См. также:
current(),
end()
next() и
reset()
resetreset -- устанавливает внутренний указатель массива в первом элементеОписаниеmixed reset(array array); reset() возвращает внутренний указатель массива в первый элемент.
reset() возвращает первыйэлемент массива.
См. также:
current(),
each(),
next()
prev() и reset()
rsortrsort -- Сортирует массив в обратном порядкеОписаниеvoid rsort(array array); Сортирует массив в обратном порядке (по убыванию).
Пример 1. rsort() $fruits = array("lemon","orange","banana","apple");
rsort($fruits);
for(reset($fruits); ($key,$value) = each($fruits); ) {
echo "fruits[$key] = ".$value."n";
}
|
Этот пример покажет:
fruits[0] = orange
fruits[1] = lemon
fruits[2] = banana
fruits[3] = apple
Фрукты отсортированы в обратном алфавитном порядке.
См. также
arsort(),
asort(),
ksort(),
sort() и
usort().
sizeofsizeof -- получает размер массиваОписаниеint sizeof(array array); Возвращает число элементов списка.
См. также:
count()
sortsort -- сортирует массивОписаниеvoid sort(array array); Эта функция сортирует масси - все элементы по окончании ее работы будут расположены по возрастанию.
Пример 1. sort() $fruits = array("lemon","orange","banana","apple");
sort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."n";
} |
Этот пример покажет:
fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange
Фрукты будут отсортированы повозрастанию в алфавитном порядке.
См. также
arsort(),
asort(),
ksort(),
rsort(), и
usort().
uasortuasort -- Сортирует массив с использованием функций сравнения, определенных пользователем и поддержкой индексацииОписаниеvoid uasort(array array, function cmp_function); Эта функция сортирует массив так что индексы массива поддерживают их корреляцию с элементами массива с которой они связываются. Т. е. при такой сортировке используются индексы. функции сравнения задает пользователь.
uksortuksort -- Сортирует массив по ключам, с использованием функций сравнения, определенных пользователемОписаниеvoid uksort(array array, function cmp_function); Эта функция отсортирует ключи массива используя функции сравнения, определенные пользователем. Если массив, который Вы хотите отсортировать, должен сортироваться некоторыми не-тривиальными критериями, Вы должны использовать эту функцию.
Пример 1. uksort() function mycompare($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array(4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");
uksort($a, mycompare);
while(list($key, $value) = each($a)) {
echo "$key: $valuen";
} |
Пример покажет:
20: twenty
10: ten
4: four
3: three
См. также
arsort(),
asort(),
uasort(),
ksort(),
rsort() и
sort().
usortusort -- сортирует массив по значениям используя используя функции сравнения, определенные пользователемОписаниеvoid usort(array array, function cmp_function); Эта функция отсортирует массив по значениям используя используя функции сравнения, определенные пользователем. Если массив, который Вы хотите отсортировать должен сортироваться по некоторым не-тривиальным критериям, Вы должны использовать эту функцию.
Пример 1. usort() function cmp($a,$b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1;
}
$a = array(3,2,5,6,1);
usort($a, cmp);
while(list($key,$value) = each($a)) {
echo "$key: $valuen";
} |
Пример покажет:
0: 6
1: 5
2: 3
3: 2
4: 1
Очевидно, что в этом тривиальном случае функция
rsort()
было бы более соответствующей.
См. также
arsort(),
asort(),
ksort(),
rsort() и
sort().
Назад, к содержанию
Календарные Функции
Содержание
JDToGregorian
GregorianToJD
JDToJulian
JulianToJD
JDToJewish
JewishToJD
JDToFrench
FrenchToJD
JDMonthName
JDDayOfWeek
Календарные функции - доступны только если Вы скомпилировали календарное расширение в dl/calendar. Смотрите dl/README для получения инструкций.
Календарное расширение в PHP представляет серию функций, которая упрощает преобразование между разными календарными форматами. Посредником прообразования является дневной Юлианский счет. Дневной Юлианский счет это самый старый счет дней (около 4000 д.э.). Чтобы менять числа между разными календарными системами, Вы должны сначала преобразовать вашу дату в дневной Юлианский счет, а только затем в календарную систему по вашему выбору. Дневной Юлианский счет отличается от Юлианского Календаря! Более подробно о календарной систем смотрите на сайте: http://genealogy.org/~scottlee/cal-overview.html. Отрывки с этой страницы включаются в данной инструкцие.
JDToGregorian
JDToGregorian -- Преобразование дневного Юлианcкого счета в Грегорианскую дату
Описание
string jdtogregorian(int julianday);
Преобразование дневного Юлианcкого счета в Грегорианскую в формате "месяц/день/год"
GregorianToJD
GregorianToJD -- Преобразовывает Грегорианскую дату на Дневный Юлианский cчет
Описание
int gregoriantojd(int month, int day, int year);
Правильный дипазон для Грегорианского календаря 4714 д.э. до 9999 н.э.
Хотя это программное обеспечение может оперировать даты в обратном порядке до 4714 д.э., такое использование может быть бесполезно и не значительно. Грегорианский календарь не был учрежден до Октября 15, 1582 (или Октябрь 5, 1582 в Юлианском календаре). Некоторые страны еще очень долго не принимали его. Например, Великобритания преобразовалась в 1752, СССР в 1918 и Греции в 1923. Наиболее Европейские страны использовали Юлианский Календарь До Грегорианского.
Пример 1. Календарные функции
<?php
$jd = GregorianToJD(10,11,1970);
echo("$jdn");
$gregorian = JDToGregorian($jd);
echo("$gregoriann");
?>
JDToJulian
JDToJulian -- преобразовывает дату Юлианского календаря на дневный Юлианский счет
Описание
string jdtojulian(int julianday);
Преобразование дневного Юлианского счета в строку, содержащую дату Юлианского Календаря в формате "месяц/день/год".
JulianToJD
JulianToJD -- преобразовывает дату Юлианского Календаря на дневной Юлианский счет
Описание
int juliantojd(int month, int day, int year);
Правильный дипазон для Юлианского календаря 4713 д.э. до 9999 н.э.
Хотя это программное обеспечение может оперировать даты в обратном порядке до 4713 д.э. такое использование может быть бесполезно и не значительно. Календарь был создан в 46 д.э., но подробные не стабилизировался до по крайней мере 8 н.э., и возможно познее в 4-ом столетии. Также, начало года различно от одной культуры к другой - не все соглашаются, что Январь это первый месяц.
JDToJewish
JDToJewish -- преобразовывает дневной Юлианский счет в Еврейский календарь
Описание
string jdtojewish(int julianday);
Преобразование дневного Юлианского счета в Еврейский календарь
JewishToJD
JewishToJD -- преобразовывает дату в Еврейском Календаре на дневной Юлианский счет
Описание
int jewishtojd(int month, int day, int year);
Еврейский календарь использовался в течение нескольких тысячалетий, но в течение начального периода не было никакой формулы, чтобы определить начало месяца. Новый месяц начинался когда замечено полнолуние.
JDToFrench
JDToFrench -- преобразовывает дневной Юлианский счет в Французский Республиканский календарь
Описание
string jdtofrench(int month, int day, int year);
преобразовывает дневной Юлианский счет в Французский Республиканский календарь
FrenchToJD
FrenchToJD -- преобразовывает дату и Французского Республиканского календаря в дневной Юлианский счет
Описание
int frenchtojd(int month, int day, int year);
преобразовывает дату и Французского Республиканского календаря в дневной Юлианский счет
Эта программа преобразовывают даты в начиная с 1 до 14 (Грегорианские даты 22 Сентября 1792 до 22 1806 Сентября). Это покрывает тот период когда календарь использовался.
JDMonthName
JDMonthName -- возвращает название месяца
Описание
string jdmonthname(int julianday, int mode);
Возвращает строку с названием месяца. main сообщает функции, в какой календарь нужно преобразовать дневнрй Юлианский счет на, и какой тип месячных имен должен быть возвращен.
Стол 1. Календарные способы
СпособЗначение
0 | Грегорианский - apreviated |
1 | Грегорианский |
2 | Юлианский - apreviated |
3 | Юлианский |
4 | Еврейский |
5 | Французский Республиканский |
JDDayOfWeek
JDDayOfWeek -- Возвращает день недели
Описание
mixed jddayofweek(int julianday, int mode);
Возвращает день недели. Может возвратить строку(string) или int в зависимости от способа(mode).
Стол 1. Календарные недельные пути
СпособЗначение
0 | возвращает дневной номер как int (0=воскресенье, 1=понедельник, и т.п.) |
1 | возврат string содержание дня недели (английское-грегорианское) |
2 | возвращает string содержа abreviated дени недели (английский-грегорианский) |
Назад, к содержанию
Функции Даты/Времени
Содержание
checkdate
date
strftime
getdate
gmdate
mktime
gmmktime
time
microtime
checkdate
checkdate -- проверяет правильность даты/времени
Описание
int checkdate
(int month, int day, int year);
Возвращает true если данная дата правильна, иначе false.
Проверяет правильность даты, заданной аргументами. Дата считается
правильной, если:
год между 1900 и 32767 включительно
месяц между 1 и 12 включительно
день находится в диапазоне разрешенных дней данного месяца.
Високосные годы учитываются.
date
date -- формат локального времени/даты
Описание
string date
(string format, int timestamp);
Возвращает строку, отформатированную согласно данной строке и используя
данную
временную метку
или текущее локальное время, если не задана временная метка.
В фоматной строке должны использоваться следующие символы:
a - "am" или "pm"
A - "AM" или "PM"
d - день месяца, цифровой, 2 цифры (на первом месте ноль)
D - день недели, текстовый, 3 буквы; т.е. "Fri"
F - месяц, текстовый, длинный; т.е. "January"
h - час, цифровой, 12-часовой формат
H - час, цифровой, 24-часовой формат
i - минуты, цифровой
j - день месяца, цифровой, без начальных нулей
l (строчная 'L') - день недели, текстовый, длинный; т.е. "Friday"
m - месяц, цифровой
M - месяц, текстовый, 3 буквы; т.е. "Jan"
s - секунды, цифровой
S - английский порядковый суффикс, текстовый, 2 символа; т.е. "th", "nd"
U - секунды с начала века
Y - год, цифровой, 4 цифры
w - день недели, цифровой, 0 означает воскресенье
y - год, цифровой, 2 цифры
z - день года, цифровой; т.е. "299"
Нераспознанные символы в форматной строке будут печататься как есть.
Пример 1.
Пример date()
print(date( "l dS of F Y h:i:s A" ));
print("July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000)));
|
Функции
date()
и
mktime()
возможно использовать вместе для того, чтобы найти
даты в будущем или прошлом.
Пример 2.Пример функций
date()
и
mktime()
$tomorrow = mktime(0,0,0,date("m") ,date("d")+1,date("Y"));
$lastmonth = mktime(0,0,0,date("m")-1,date("d"), date("Y"));
$nextyear = mktime(0,0,0,date("m"), date("d", date("Y")+1);
|
Для того, чтобы отформатировать даты на других языках, Вы должны
использовать функции
setlocale()
и
strftime()
См.также
gmdate()
and
mktime()
.
strftime
strftime -- форматирует локальное время согласно установкам locale
Описание
string strftime
(string format, int timestamp);
Возвращает строку, отформатированную согласно данной форматной строке и
используя данную
временную метку
или текущее локальное время, если метка не задана. Названия месяцев
и недель и другие, зависящие от языка строки, зависят от текущего
locale, устанавливающегося с помощью
setlocale()
.
В форматной строке следует использовать следующие спецификаторы преобразований:
%a - сокращенное название дня недели согласно текущему locale
%A - полное название дня недели согласно текущему locale
%b - сокращенное название месяца согласно текущему locale
%B - полное название месяца согласно текущему locale
%c - предпочтительное представление даты и времени для текущего locale
%d - день месяца как десятичное число (в диапазоне от 0 до 31)
%H - час как десятичное число в 24-часовом формате (в диапазоне от 00 до 23)
%I - час как десятичное число в 12-часовом формате (в диапазоне от 01 до 12)
%j - день года как десятичное число (в диапазоне от 001 до 366)
%m - месяц как десятичное число (в диапазоне от 1 до 12)
%M - минуты как десятичное число
%p - `am' или `pm' согласно текущему времени, или соответствующие строки для текущего locale
%S - секунды как десятичное число
%U - номер недели текущего года как десятичное число, начиная с первого Воскресенья в качестве первого дня первой недели
%W - номер недели текущего года как десятичное число, ночиная с первого Понедельника в качестве первого дня первой недели
%w - день недели как целое число, Воскресенье - 0-й день
%x - предпочитаемое представление даты для текущего locale не включающее время
%X - предпочитаемое представление времени для текущего locale не включающее дату
%y - год как десятичное число без столетия (в диапазоне от 00 до 99)
%Y - год как десятичное число, включая столетие
%Z - временная зона или название или сокращение
%% - символ `%'
Пример 1. Пример функции
strftime()
setlocale ("LC_TIME", "C");
print(strftime("%A in Finnish is "));
setlocale ("LC_TIME", "fi");
print(strftime("%A, in French "));
setlocale ("LC_TIME", "fr");
print(strftime("%A and in German "));
setlocale ("LC_TIME", "de");
print(strftime("%A.n"));
|
Пример будет работать, если у вас установлены соответствующие locale.
См.также
setlocale()
и
mktime()
.
getdate
getdate -- получает информацию о дате/времени
Описание
array getdate
(int timestamp);
Возвращает ассоциативный массив, содержащий информацию о дате со следующими
элементами:
"seconds" - секунды
"minutes" - минуты
"hours" - часы
"mday" - день месяца
"wday" - день недели, цифровой
"mon" - месяц, цифровой
"year" - год, цифровой
"yday" - день года, цифровой; т.е. "299"
"weekday" - день недели, текстовый, полный; т.е.
"Friday"
"month" - месяц, текстовый, полный; т.е. "January"
gmdate
gmdate -- форматирует GMT/CUT время/дату
Описание
string gmdate
(string format, int timestamp);
Аналогична функции
date()
за исключением того, что время возвращается в Гринвичском формате Greenwich Mean Time
(GMT). Например, при запуске в Финляндии (GMT +0200), первая строка ниже
напечатает "Jan 01 1998 00:00:00", в то время как вторая строка напечатает
"Dec 31 1997 22:00:00".
Пример 1. пример
gmdate()
echo date( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );
echo gmdate( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );
|
См.также
date()
,
mktime()
и
gmmktime()
.
mktime
mktime -- получает временную метку UNIX для даты
Описание
int mktime
(int hour, int minute, int second, int month, int day, int year);
Предупреждение:
Обратите внимание на необычный порядок аргументов, который отличается
от порядка аргументов в вызове функции mktime() из UNIX, и который
нехорошо ведет себя при неправильно заданных параметрах (см.ниже).
Это очень часто встречающаяся ошибка в скриптах.
Возвращает временную метку Unix согласно данным аргументам. Эта
временная метка является целым числом, равным количеству секунд между
эпохой Unix (1 Января 1970) и указанным временем.
Аргументы могут быть опущены с права налево; каждый опущенный таким образом
аргумент будет установлен в текущую величину согласно локальной дате и времени.
MkTime is useful for doing date arithmetic and validation, as it
MkTime полезена при арифметических дейтсвиях с датой и ее проверкой, она
будет автоматически вычислять корректную величину для вешедших за границы
параметров. Например, каждая из следующих строк возвращает строку
"Jan-01-1998".
Пример 1. Пример
mktime()
echo date( "M-d-Y", mktime(0,0,0,12,32,1997) );
echo date( "M-d-Y", mktime(0,0,0,13,1,1997) );
echo date( "M-d-Y", mktime(0,0,0,1,1,1998) );
|
См.также
date()
и
time()
.
gmmktime
gmmktime -- получает временную метку UNIX для даты в GMT
Описание
int gmmktime
(int hour, int minute, int second, int month, int day, int year);
Идентична
mktime()
за исключением передаваемых параметров, представляющих
дату в GMT.
time
time -- возвращает текущую временную метку UNIX
Описание
int time
(void);
Возвращает текущее время, измеренное в числе секунд с эпохи Unix (1 Января 1970 00:00:00 GMT).
См.также
date()
.
microtime
microtime -- возвращает текущую временную метку UNIX в микросекундах
Описание
string microtime
(void);
Возвращает строку "msec sec" где sec текущее время, измеренное
в числе секунд с эпохи Unix (0:00:00 1 Января, 1970 GMT), а
msec - это часть в микросекундах. Эти функции доступны только в операционных
системах, поддерживающих системный вызов gettimeofday().
См.также
time()
.
Назад, к содержанию
dBase функции
Оглавление
dbase_create
dbase_open
dbase_close
dbase_pack
dbase_add_record
dbase_delete_record
dbase_get_record
dbase_numfields
dbase_numrecords
Эти функции позволяют получить доступ к записям
в dBase-формате (dbf) базы данных.
Не поддерживаются индексы и мемо(записи) поля. Также не поддерживается
блокировка. Два webсервер процесса, одновременно изменяющие файлы dBase
вполне возможно повредят вашу базу данных.
В отличие от баз данных SQL, в dBase нельзя изменять определение полей
после их создания. Если только файл создан, то поля базы данных фиксировано
определены. Не имеется никаких индексов, которые ускоряют поиск или иначе
организовывает ваши данные. dBase файлы - это простые последовательные
файлы с записями фиксированного размера. Записи добавляются в конец файла
и удаленные записи будут присутствовать в вашей базе до тех пор, пока вы
не вызовете dbase_pack() функцию.
Мы рекомендуем вы не использовать dBase файлы для профессионального
использования фаз данных. Выберете взамен какой-нибудь реальный SQL сервер;
MySQL или Postgres лучший выбор для работы вместе с PHP. Поддержка dBase
введена для импорта и экспорта ваших данных из и в вашу web базу данных,
так как этот формат обычно понимают многие программы, например электронные
таблицы, в Windows. Поддержка dBase для любого экспорта или импорта данных
хорошо выполняет эти условия.
dbase_create
dbase_create -- создать dBase базу данных
Описание
int dbase_create(string filename,
array fields);
Параметр fields - это массив из массивов, каждый массив
определяет формат одного поля в базе данных. Каждое поле состоит из имени,
символа , указывающего тип поля, длины, и точность.
Доступные типы полей:
L |
Логическое. Не требует длину или точность. |
M |
Мемо. (Помните, что они не поддерживаются в PHP.) Не требует длину
или точность. |
D |
дата (сохраненная как ГГГГММДД). Не требует длину или точность. |
N |
Числовое. Это поле имеет и длину и точность(количество цифр после десятичной
точки). |
C |
Строка. Имеет длину и не требует точность. |
Если создание базы данных успешно, то возвращает dbase_identifier(идентификатор
базы данных), в противном случае возвращает false(ложь).
Пример 1. Создание dBase базы данных
// "database" имя
$dbname = "/tmp/test.dbf";
// определяем поля
$def =
array(
array("date", "D"),
array("name", "C", 50),
array("age", "N", 3, 0),
array("email", "C", 128),
array("ismember", "L")
);
// создаем
if (!dbase_create($dbname, $def))
print "<strong>Error!</strong>";
|
dbase_open
dbase_open -- открыть dBase базу данных
Описание
int dbase_open(string filename, int
flags);
Параметр flags используется для системного вызова open(). (Обычно 0 только
для чтения, 1 только для записи, и 2 для записи и чтения.)
Возвращает dbase_identifier(идентификатор базы данных) для открытой
базы данных, или false(ложь) если база данных не была открыта.
dbase_close
dbase_close -- закрыть dBase базу данных
Описание
bool dbase_close(int dbase_identifier);
Закрыть базу данных, связанную с dbase_identifier.
dbase_pack
dbase_pack -- упаковывает dBase базу данных
Описание
bool dbase_pack(int dbase_identifier);
Упаковывает определенную базу данных (удаляет все записи, помеченные для
удаления с помощью dbase_delete_record().
dbase_add_record
dbase_add_record -- добавляет запись в dBase
базу данных
Описание
bool dbase_add_record(int dbase_identifier,
array record);
Добавляет данные из record в базу данных. Если количество
полей в заданном record не идентично количеству полей в базе данных, то
операция будет прервана и будет возвращено false(ложь).
dbase_delete_record
dbase_delete_record -- удалить запись из dBase
базы данных
Описание
bool dbase_delete_record(int dbase_identifier,
int record);
Помечает запись record to на удаление из базы данных. Чтобы
физически удалить запись из базы данных, вы должны вызвать dbase_pack().
dbase_get_record
dbase_get_record -- получить запись из dBase
базы данных
Описание
array dbase_get_record(int dbase_identifier,
int record);
Возвращает данные из записи record в массив. Массив индексирован
начиная с 1, и включает в себя поле 'deleted', которое установлено в 1
если запись помечена на удаление (смотри dbase_delete_record().)
Все поля преобразовываются в соответствующий PHP тип. (Даты остаются
строками.)
dbase_numfields
dbase_numfields -- Выясняет, какое количество
полей находится в dBase базе данных
Описание
int dbase_numfields(int dbase_identifier);
Возвращает количество полей в определенной базе данных. Номера полей находятся
в промежутке с 0 и до dbase_numfields($db)-1, в то время как номера записей
начинаются с 1 и до dbase_numrecords($db).
Пример 1. Использование dbase_numfields()
$rec = dbase_get_record($db, $recno);
$nf = dbase_numfields($db);
for ($i=0; $i < $nf; $i++) {
print $rec[$i]."<br>n";
}
|
dbase_numrecords
dbase_numrecords -- Выясняет, какое количество
записей находится в dBase базе данных
Описание
int dbase_numrecords(int dbase_identifier);
Возвращает количество записей в определенной базе данных. Номера записей
начинаются с 1 и до dbase_numrecords($db) , в то время как номера полей
находятся в промежутке с 0 и до dbase_numfields($db)-1.
Назад, к содержанию
Функции для работы с каталогами
Содержание
chdir
dir
closedir
opendir
readdir
rewinddir
chdir
chdir -- смена каталога
Описание
int chdir(string directory);
Изменяет текущий PHP каталог на directory. Возвращает FALSE
если не может изменить, TRUE если смена произошла.
dir
dir -- класс каталога (псевдо-объектно ориентированный
механизм)
Описание
new dir(string directory);
Псевдо-объектно ориентированный механизм для чтения каталога. Открывает
каталог из directory. Два реквезита доступно, если только
каталог был открыт. Реквезит handle может быть использован вместе с другими
функциями работы с каталогом типа
readdir(),
rewinddir() и closedir().
Реквезит path установлен путь каталога, который был открыт. Три метода
доступны: чтение, возврат к началу и закрытие.
Пример 1. Dir() Пример
$d = dir("/etc");
echo "Handle: ".$d->handle."<br>n";
echo "Path: ".$d->path."<br>n";
while($entry=$d->read()) {
echo $entry."<br>n";
}
$d->close();
|
closedir
closedir -- закрыть дескриптор(handle) каталога
Описание
void closedir(int dir_handle);
Закрывает поток каталога, обозначенный как dir_handle.
Поток предварительно должен быть открыт финкцией opendir().
opendir
opendir -- открыть дескриптор(handle) каталога
Описание
int opendir(string path);
Возвращает дескриптор(handle) каталога, который в последующем используется
в closedir(),
readdir(),
и rewinddir() обращениях.
readdir
readdir -- чтение данных из каталога по дескриптору(handle)
Описание
string readdir(int dir_handle);
Возвращает имя следующего файла из каталога. Имена не возвращаются в любом
специфическом порядке.
Пример 1. Вывод всех файлов в текущем каталоге
<?php
$handle=opendir('.');
echo "Directory handle: $handlen";
echo "Files:n";
while ($file = readdir($handle)) {
echo "$filen";
}
closedir($handle);
?>
|
rewinddir
rewinddir -- возврат к началу данных каталога
по дескриптору(handle)
Описание
void rewinddir(int dir_handle);
Сбрасывает поток каталога, обозначенный как dir_handle
в начало данных.
Назад, к содержанию
Функции динамической загрузки
Содержание
dl
dl
dl -- загрузка PHP расширений во время выполнения
Описание
int dl(string library);
Загружает PHP расширение определенное в library. Смотри
также extension_dir директиву конфигурации.
Назад, к содержанию
Функции запуска программ
Содержание
escapeshellcmd
exec
system
passthru
escapeshellcmd
escapeshellcmd -- убирает shell метасимволы
Описание
string escapeshellcmd(string command);
EscapeShellCmd() убирает
любые символы в строке, которые могут быть использованы в командном интерпретаторе
как произвольные команды. Эту функцию нужно использовать, что бы убедится,
что все ваши данные введены правильно, и эту функцию лучше всего вставлять
в функции exec() или system().
Стандартное использование этой функции выглядит так:
system(EscapeShellCmd($cmd))
exec
exec -- Запуск внешней программы
Описание
string exec(string command, string
[
array
], int [
return_var
]);
exec() запускает программу из строки command, весь
стандартный вывод отключен. Возвращает последнюю строку результата выполнения
программы. Если вы хотите запустить команду и использовать все данные непосредственно
без всякого вмешательства других программ, то используйте функцию PassThru().
Если параметр array установлен, то указанный массив
будет заполнен выводом из программы. Помните, если массив уже содержит
данные, то exec() добавляет свои данные. Если вы не хотите, что
бы функция добавляла данные, вызывайте unset()
для массива перед использованием exec().
Если параметр return_var установлен наряду с параметром
array,
то в него записывается результат выполнения команды.
Обратите внимание, что если ваша функция будет использовать данные из
ввода пользователей, то надо использовать EscapeShellCmd()
для того, что бы пользователи не смогли запустить произвольные программы.
См. также system(), PassThru(),
popen()
и EscapeShellCmd().
system
system -- Запуск внешней программы с выводом
результата
Описание
string system(string command, int
[
return_var
]);
System() такая же, как и C версия
этой функции для запуска command и вывода результата.
Если используется второй параметр, то в него записывается результат выполнения
команды.
Обратите внимание, что если ваша функция будет использовать данные из
ввода пользователей, то надо использовать EscapeShellCmd()
для того, что бы пользователи не смогли запустить произвольные программы.
Вызов System() также пробует автоматически
вставить в буфер вывода web сервера после каждой строки вывода, если PHP
запущен как модель сервера.
Если вы хотите запустить команду и использовать все данные непосредственно
без всякого вмешательства других программ, то используйте функцию PassThru().
См. также exec() и popen()
функции.
passthru
passthru -- Запускает внешнюю программу и выводит
данные напрямую
Описание
string passthru(string command, int
[
return_var
]);
Функция passthru() похожа на функцию Exec()
для запуска command. Если параметр return_var
установлен, то результат Unix команды помещается здесь. Эта функция должна
использоваться вместо Exec() или System()
тогда, когда вывод из Unix команды является двоичными данными, которые
должны быть переданы непосредственно обратно в окно просмотра(browser).
Это можно использовать, например, для запуска утилиты pbmplus для вывода
непосредственно потока изображения. Установка типа image/gif и вызов
программы pbmplus, чтобы вывести gif-рисунок, вы можете создавать PHP скрипты,
которые выводят изображения непосредственно.
См. также exec() и fpassthru().
Назад, к содержанию
Функции работы с filePro
Содержание
filepro
filepro_fieldname
filepro_fieldtype
filepro_fieldwidth
filepro_retrieve
filepro_fieldcount
filepro_rowcount
Эти функии предоставляют доступ "только для чтения" к данным в базе данных filePro.
filePro зарегистрированная торговая марка Fiserv, Inc. Более подробную информацию о filePro вы можете наяти на http://www.fileproplus.com/.
filepro
filepro -- читает и верифицирует map-файл
Описание
bool filepro(string directory);
Читает и верифицирует map-файл, сохраняя файловый счетчик и инфо.
Никакой блокировки не предусмотрено, поэтому вам следует избегать модификации вашей filePro базы данных, пока она открыта в PHP.
filepro_fieldname
filepro_fieldname -- получить имя поля
Описание
string filepro_fieldname(int field_number);
Возвращает имя поля по соответствующему номеру field_number.
filepro_fieldtype
filepro_fieldtype -- получить тип поля
Описание
string filepro_fieldtype(int field_number);
Возвращет тип поля, соответствующего номеру field_number.
filepro_fieldwidth
filepro_fieldwidth -- получить ширину поля
Описание
int filepro_fieldwidth(int field_number);
Возвращает ширину поля по номеру поля field_number.
filepro_retrieve
filepro_retrieve -- прочитать данные из filePro базы данных
Описание
string filepro_retrieve(int row_number, int field_number);
Возвращает данные из указанной ячейки базы данных.
filepro_fieldcount
filepro_fieldcount -- сколько полей в базе данных filePro?
Описание
int filepro_fieldcount(void);
Возвращает количество полей (колонок) в открытой базе filePro.
Смотри также
filepro().
filepro_rowcount
filepro_rowcount -- сколько строк в базе filePro?
Описание
int filepro_rowcount(void);
Возвращает количество строк в открытой базе filePro.
Смотри также
filepro().
Назад, к содержанию
[an error occurred while processing this directive]
Функции, связанные с HTTP
Содержание
header
setcookie
Эти функции позволяют вам управлять ывводом на удаленный браузер на уровне протокола HTTP.
header
header -- послать необработанный заголовок HTTP
Описание
int header(string string);
Функция Header() используется в начале HTML-файла для отправки строки HTTP заголовка. Смотри
HTTP 1.1 Specification для более подробной информации о заголовках HTTP.
Замечание: Помните, что функция
Header() должна быть вызвана перед любыми другими операциями вывода, описанными стандартными тэгами HTML или PHP. Наиболее общие ошибки в коде - применение
include() с auto_prepend и пробелами или пустыми строками, которые инициируеют вывод до вызова header().
Header("Location: http://www.php.net"); /* Редирект браузера на сайт PHP */
exit; /* Код, следующий ниже, не будет исполняться после редиректа. */
PHP-скрипты часто генерируют динамический HTML, который не следует кешировать на клиентском браузере или прокси-сервере. Многие прокси и клиенты можно заставить отключить кеш:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Прошедшая дата
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT"); // всегда модифицировать
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
setcookie
setcookie -- послать кук
Описание
int setcookie(string name, string value, int expire, string path, string domain, int secure);
SetCookie() определяет кук, который будет послан вместе с остальной информацией из заголовка. Все аргументы, исключая name опциональны. Если присутствует только аргумент name, кук с указанным именем будет удален с клиента. Вы также можете представить любой из аргументов пустой строкой, с целью пропуска оного (""). Параметры expire и secure являются целочисленными и ен могут быть заменены пустыми строками. Для этой цели используют (0). Аргумент expire - это стандартное время Unix, возвращаемое функциями
time() или
mktime(). secure показывает, что кук следует передавать только по защищенному соединению HTTPS. Некоторые примеры:
Пример 1. SetCookie
SetCookie("TestCookie","Test Value");
SetCookie("TestCookie",$value,time()+3600); /* истекает через час */
SetCookie("TestCookie",$value,time()+3600,"/~rasmus/",".utoronto.ca",1);
|
Заметим, что значимые части кука при посылке будут автоматически урл-кодированы, тогда как при приеме кука - автоматически декодированы и присвоены переменным с соответствующими именами. Для просмотра содержания тестового кука в скрипте, просто:
echo $TestCookie;
Для получения более подробной информации о куках, смотрите спецификацию Netscape по
http://www.netscape.com/newsref/std/cookie_spec.html.
Microsoft Internet Explorer 4 с Service Pack 1 могут некорректно работать с куками, где установлен параметр path.
Назад, к содержанию
Функции IMAP
Содержание
imap_append
imap_base64
imap_body
imap_check
imap_close
imap_createmailbox
imap_delete
imap_deletemailbox
imap_expunge
imap_fetchbody
imap_fetchstructure
imap_header
imap_headers
imap_listmailbox
imap_listsubscribed
imap_mail_copy
imap_mail_move
imap_num_msg
imap_num_recent
imap_open
imap_ping
imap_renamemailbox
imap_reopen
imap_subscribe
imap_undelete
imap_unsubscribe
imap_qprint
imap_8bit
imap_binary
imap_scanmailbox
imap_mailboxmsginfo
imap_rfc822_write_address
imap_rfc822_parse_adrlist
imap_setflag_full
imap_clearflag_full
imap_sort
imap_fetchheader
imap_uid
Для того, чтобы эти функции заработали вц должны скомпилировать PHP с флагом --with-imap. Этот флаг требут,
чтобы была установлена библиотека c-client. Последнюю версию можно получить по адресу ftp://ftp.cac.washington.edu/imap/.
Затем скопируйте c-client/c-client.a в /usr/local/lib или какую либо другую директорию, прописанную в пути, затем
скопируйте c-client/rfc822.h, mail.h и linkage.h в /usr/local/include или другую директорию с include-файлами.
imap_append
imap_append -- Добавляет текстовое сообщение в указанный почтовый ящик
Описание
int imap_append(int imap_stream, string mbox, string message, stringflags);
Возвращает true в случае успеха или false иначе.
imap_append() добавляет текстовое сообщение в указанный почтовый ящик mbox. Если указаны необязательные
флаги, также записывает в почтовый ящик и флаги.
При общении с сервером Cyrus IMAP нужно использовать в качестве ограничителей строки "rn" вместо "n",
иначе действие не выполнится.
imap_base64
imap_base64 -- Декодирует текст, закодированный с помощью BASE64
Описание
string imap_base64(string text);
Функция imap_base64() декодирует текст в формате BASE-64. Декодированное сообщение возвращается
как строка.
imap_body
imap_body -- Читает тело сообщения
Описание
string imap_body(int imap_stream, int msg_number, int flags);
Функция imap_body() возвращает тело сообщения, имеющего номер п/п msg_number в текущем почтовом ящике.
Необязательные флаги это битовые маски из
FT_UID - Номер сообщения msgno является UID'ом сообщения
FT_PEEK - Не устанавливать флаг Seen если он еще не установлен.
FT_INTERNAL - Возвращаемая строка записана во внутреннем формате и не может быть приведена к канонической
форме с CRLF.
imap_check
imap_check -- Проверяет текущий почтовый ящик
Описание
array imap_check(int imap_stream);
Возвращает информацию о текущем почтовом ящике. В случае неуспеха возвращает FALSE.
Функция imap_check() проверяет статус текущего почтового ящика на сервере и возвращает информацию в объекте
со следующими свойствами.
Date : дата сообщения
Driver : драйвер
Mailbox : название почтового ящика
Nmsgs : количество сообщений
Recent : количество недавно пришедших сообщений
imap_close
imap_close -- Закрывает поток IMAP
Описание
int imap_close(int imap_stream, int flags);
Закрывает поток imap. Необязательный флаг CL_EXPUNGE заставляет стереть помеченные на удаление сообщения
при закрытии.
imap_createmailbox
imap_createmailbox -- Создает новый почтовый ящик.
Описание
int imap_createmailbox(int imap_stream, string mbox);
imap_createmailbox() создает новый почтовый ящик указанный в mbox.
Возвращает true в случае успеха и false при ошибке.
imap_delete
imap_delete -- Помечает сообщение из текущего почтового ящика на удаление
Описание
int imap_delete(int imap_stream, int msg_number);
Возвращает true.
Функция imap_delete() помечает сообщение, указанное через msg_number на удаление. Настоящее удаление сообщений
осуществляется функцией imap_expunge().
imap_deletemailbox
imap_deletemailbox -- Удаляет почтовый ящик
Описание
int imap_deletemailbox(int imap_stream, string mbox);
imap_deletemailbox() удаляет указанный почтовый ящик.
Возвращает true в случае успеха и false иначе.
imap_expunge
imap_expunge -- Удаляет все сообщения, помеченные на удаление
Описание
int imap_expunge(int imap_stream);
imap_expunge() удаляет все сообщения помеченные на удаление с помощью imap_delete().
Возвращает true.
imap_fetchbody
imap_fetchbody -- Извлекает простую секцию тела сообщения
Описание
string imap_fetchbody(int imap_stream, int msg_number, int part_number, flags flags);
Эта функция заставляет извлечь подробную секцию указанного сообщения как текстовую строку.
Секция это строка целых чисел, разделенных точками, которые указывают на части тела сообщения в списке частей
согласно спецификации IMAP4. Части тела не декодируются этой функцией.
Необязательным параметром к imap_fetchbody () является битовая маска из
FT_UID - msgono является UID'ом
FT_PEEK - не устанавливать флаг Seen если он не установлен
FT_UID - возвращаемая строка записана во внутреннем формате, которое не может быть канонизированна с помощью CRLF
imap_fetchstructure
imap_fetchstructure -- Читает структуру простого сообщения
Описание
array imap_fetchstructure(int imap_stream, int msg_number);
Эта функция заставляет извлечь всю информацию о структуре сообщения с номером msg_number. Возвращаемая величина
является объектом со следующими элементами.
type, encoding, ifsubtype, subtype, ifdescription, description, ifid,
id, lines, bytes, ifparameters
тип, кодировка, подтип интерфейса, подтип, описание интерфейса, описание, идентификатор
интерфейса, строки, байты, параметры интерфейса
Также функция возвращает массив объектов под названием parameters[]. Этот объект имеет следующие
свойства.
attribute, value
атрибут, величина
В случае сообщения из нескольих частей, функция также возвращает массив объектов всех свойств
под название parts[].
imap_header
imap_header -- Читает заголовок сообщения
Описание
object imap_header(int imap_stream, int msg_number, int fromlength, int subjectlength, int defaulthost);
Эта функция возвращает объект различных элементов заголовка
remail,date,Date,subject,Subject,in_reply_to,message_id,newsgroups,
followup_to,references
toaddress (полная строка To: строка длиной до 1024 символов)
to[] (возвращает массив объектов из строки To, содержит:)
personal
adl
mailbox
host
fromaddress (полная строка From: строка длиной до 1024 символов)
from[] (возвращает массив объектов из строки From, содержит:)
personal
adl
mailbox
host
ccaddress (полная строка Cc: строка длиной до 1024 символов)
cc[] (возвращает массив объектов из строки Cc, содержит:)
personal
adl
mailbox
host
bccaddress (полная строка Bcc: строка длиной до 1024 символов)
bcc[] (возвращает массив объектов из строки Bcc, содержит:)
personal
adl
mailbox
host
reply_toaddress (полная строка Reply_to: строка длиной до 1024 символов)
reply_to[] (возвращает массив объектов из строки Reply_to, содержит:)
personal
adl
mailbox
host
senderaddress (полная строка Sender: строка длиной до 1024 символов)
sender[] (возвращает массив объектов из строки Sender, содержит:)
personal
adl
mailbox
host
return_path (полная строка Return-path: строка длиной до 1024 символов)
return_path[] (возвращает массив объектов из строки Return_path, содержит:)
personal
adl
mailbox
host
udate ( дата сообщения в формате времени unix)
fetchfrom (строка From, отформатированная до fromlength символов)
fetchsubject (строка Subject, отформатированная до subjectlength символов)
imap_headers
imap_headers -- Возвращает заголовки всех сообщений в почтовом ящике
Описание
array imap_headers(int imap_stream);
Возвращает строковый массив из информации по заголокам. Один элемент массива на сообщение.
imap_listmailbox
imap_listmailbox -- Читает список почтовых ящиков
Описание
array imap_listmailbox(int imap_stream, string ref, string pat);
Возвращает массив, содержащий названия почтовых ящиков.
imap_listsubscribed
imap_listsubscribed -- Перечисляет все подписанные ящики
Описание
array imap_listsubscribed(int imap_stream, string ref, string pattern);
Возвращает массив всех почтовых ящиков на которые Вы подписаны. Аргументы ref и pattern указывают начальное
месторасположение откуда начинать поиск и шаблон, которому должны удовлетворять названия почтовых ящиков.
imap_mail_copy
imap_mail_copy -- Копирует указанные сообщения в почтовый ящик
Описание
int imap_mail_copy(int imap_stream, string msglist, string mbox, int flags);
Возвращает true в случае успеха и false иначе.
Копирует почтовые сообщения указанные с помощью msglist в почтовый ящик mbox. msglist - это диапазон, а не просто
номера сообщений.
флаги - это битовые маски из
CP_UID - номера в последовательности содержат UID'ы
CP_MOVE - после копирования удалить сообщения из текущего почтового ящика
imap_mail_move
imap_mail_move -- Переносит указанные сообщения в почтовый ящик
Описание
int imap_mail_move(int imap_stream, string msglist, string mbox);
Переносит почтовые сообщения указанные с помощью msglist в почтовый ящик mbox. msglist - это диапазон, а не просто
номера сообщений.
Возвращает true в случае успеха и false иначе.
imap_num_msg
imap_num_msg -- Выдает количество сообщений в текущем почтовом ящике
Описание
int imap_num_msg(void);
Возвращает количество сообщений в текущем почтовом ящике.
imap_num_recent
imap_num_recent -- Возвращает количество недавно пришедших сообщений в текущем почтовом ящике
Описание
int imap_num_recent(int imap_stream);
Возвращает количество недавно пришедших сообщений в текущем почтовом ящике.
imap_open
imap_open -- Открывает поток IMAP в почтовый ящик
Описание
int imap_open(string mailbox, string username, string password, int flags);
В случае успеха возвращает поток IMAP или false иначе. Эта функция может быть использована для открытия потоков
к POP3 и NNTP серверам. Для того, чтобы присоединиться к серверу IMAP на 143-й порт на локальной машине сделайте
следующее:
$mbox = imap_open("{localhost:143}INBOX","user_id","password");
Для того, чтобы подсоединиться к POP3-серверу на 110-й порт на локальном сервере используйте:
$mbox = imap_open("{localhost/pop3:110}INBOX","user_id","password");
Для того, чтобы подсоединиться к NNTP-серверу на 119-й порт на локальном сервере используйте:
$nntp = imap_open("{localhost/nntp:119}comp.test","","");
Для того, чтобы подсоединиться к удаленному серверу замените "localhost" на имя или IP-адрес сервера к которому
Вы хотите подсоединиться.
Опции - битовая маска из
OP_READONLY - Открыть почтовый ящик в режим "только чтение"
OP_ANONYMOUS - Не использовать или не обновлять .newsrc при использовании новостей
OP_HALFOPEN - Для IMAP и NNTP устанавливает соединение, но не открывает почтовый ящик
CL_EXPUNGE - Автоматически очищать почтовый ящик при закрытии
imap_ping
imap_ping -- Проверяет поток IMAP на работоспособность
Описание
int imap_ping(int imap_stream);
Возвращает true если поток еще работоспособен и false иначе.
Функция imap_ping() проверяет поток на работоспособность. Он может также проверять новую почту; это
предпочтительный метод для периодической проверки новой почты и "живучести" удаленных серверов.
imap_renamemailbox
imap_renamemailbox -- Переименовывает старый почтовый ящик в новый
Описание
int imap_renamemailbox(int imap_stream, string old_mbox, string new_mbox);
Эта функция переименовывает старый почтовый ящик в новый.
Возвращает true в случае успеха и false иначе.
imap_reopen
imap_reopen -- Заново открывает поток IMAP на новый почтовый ящик
Описание
int imap_reopen(string imap_stream, string mailbox, string [flags]);
Возвращает true в случае успеха и false иначе.
Эта функция заново открывает указанный поток на новый ящик.
Опции - битовая маска из
OP_READONLY - Открыть почтовый ящик в режиме только чтение
OP_ANONYMOUS - Не использовать или не обновлять .newsrc при работе с новостями
OP_HALFOPEN - Для IMAP и NNTP устанавливает связь но не открывает почтовый ящик
CL_EXPUNGE - Очищает почтовый ящик при закрытии
imap_subscribe
imap_subscribe -- Подписывает на почтовый ящик
Описание
int imap_subscribe(int imap_stream, string mbox);
Подписывает на новый почтовый ящик.
Возвращает true в случае успеха и false иначе.
imap_undelete
imap_undelete -- Снимает отметку с сообщения помеченного на удаление
Описание
int imap_undelete(int imap_stream, int msg_number);
Эта функция cнимает отметку с сообщения помеченного на удаление функцией imap_delete().
Возвращает true в случае успеха и false иначе.
imap_unsubscribe
imap_unsubscribe -- Снимает подписку с почтового ящика
Описание
int imap_unsubscribe(int imap_stream, string mbox);
Снимает подписку с почтового ящика.
Возвращает true в случае успеха и false иначе.
imap_qprint
imap_qprint -- Конвертирует строку формата quoted-printable в 8-битовую строку
Описание
string imap_qprint(string string);
Конвертирует строку формата quoted-printable в 8-битовую строку.
Возвращает 8-битовую (бинарную) строку
imap_8bit
imap_8bit -- Конвертирует 8-битовую строку в формат quoted-printable
Описание
string imap_8bit(string string);
Конвертирует 8-битовую строку в формат quoted-printable.
Возвращает строку в формате quoted-printable.
imap_binary
imap_binary -- Конвертирует 8-битную строку в формат base64
Описание
string imap_binary(string string);
Конвертирует 8-битную строку в формат base64.
Возвращает строку в формате base64.
imap_scanmailbox
imap_scanmailbox -- Читает список почтовых ящиков, проводит поиск в названиях ящиков
Описание
array imap_scanmailbox(int imap_stream, string string);
Возвращает массив, содержащий имена почтовых ящиков, которые имеют строку string в названии.
imap_mailboxmsginfo
imap_mailboxmsginfo -- Получает информацию о текущем почтовом ящике
Описание
array imap_mailboxmsginfo(int imap_stream);
Возвращает информацию о текущем почтовом ящике. FALSE в случае неудачи.
Функция imap_mailboxmsginfo() проверяет статус текущего почтового ящика на сервере и возвращает
информацию в объекте со следующими свойствами:
Date : дата сообщения
Driver : драйвер
Mailbox : название почтового ящика
Nmsgs : количество сообщений
Recent : количество недавно пришедших сообщений
Unread : количество непрочитанных сообщений
Size : размер почтового ящика
imap_rfc822_write_address
imap_rfc822_write_address -- Возвращает правильно отформатированный email адрес
Description
string imap_rfc822_write_address(string mailbox, string host, string personal);
Возвращает правильно отформатированный email адрес по данному почтовому ящику, хосту и персональной информации.
imap_rfc822_parse_adrlist
imap_rfc822_parse_adrlist -- Проводит разбор адресной строки
Описание
string imap_rfc822_parse_adrlist(string address, string default_host);
Эта функция разбирает адресную строку и для каждого адреса возвращает массив объектов. Есть 4 типа объектов:
mailbox - название почтового ящика (имя пользователя)
host - название хоста
personal - личное имя
adl - путь к домену-источнику
imap_setflag_full
imap_setflag_full -- Устанавливает флаги на сообщения
Описание
string imap_setflag_full(int stream, string sequence, string flag, string options);
Эта функция застваляет добавить указанный флаг к набору флагов сообщения в указанной последовательности.
options - это битовая маска из
ST_UID Аргументы последовательности содержат UIDы вместо номеров
imap_clearflag_full
imap_clearflag_full -- Очищает флаги сообщения
Описание
string imap_clearflag_full(int stream, string sequence, string flag, string options);
Эта функция заставляет удалить флаги из набора флагов сообщения в указанной последовательности.
options - это битовая маска из
ST_UID Аргументы последовательности содержат UIDы вместо номеров
imap_sort
imap_sort -- Сортирует сообщения в текущем почтовом ящике
Описание
string imap_sort(int stream, int criteria, int reverse, int options);
Возвращает массив номеров сообщений рассортированных по данному параметру
Rev должен быть равен 1 если нужна сортировка в обратном порядке
Критерии сортировки (должен быть указан только один):
SORTDATE по дате сообщения
SORTARRIVAL по дате поступления
SORTFROM по полю From
SORTSUBJECT по теме сообщения
SORTTO по полю To
SORTCC по полю cc
SORTSIZE по размеру
опции - битовая маска из
SE_UID Возвратить UIDы вместо номеров последовательности
SE_NOPREFETCH Не извелекать заранее найденные сообщения
imap_fetchheader
imap_fetchheader -- Возвращает заголовок сообщения
Описание
stringimap_fetchheader(int imap_stream, int msgno, int flags);
Эта функция заставляет извлечь полный, неотфильтрованный заголовок указанного сообщения в формате RFC 822
как текстовую строку.
Опиции:
FT_UID msgno является UID'ом
FT_INTERNAL Возвращаемая строка записана во внутреннем формате
без каких-либо попыток канонизировать ее с помощью CRLF
FT_PREFETCHTEXT RFC822. Текст должен быть предварительно разобран.
Это поможет избежать эстренных задержек если требуется
извлечь полный текст сообщения (например, в операции
"сохранить в локальном файле")
imap_uid
imap_uid -- Эта функция возвращает UID по данному номеру сообщения в последовательности
Описание
string imap_uid(string mailbox, int msgno);
Эта функция возвращает UID по данному номеру сообщения в последовательности.
Назад, к содержанию
PHP опции и информация
Содержание
error_log
error_reporting
getenv
get_cfg_var
get_current_user
get_magic_quotes_gpc
get_magic_quotes_runtime
getlastmod
getmyinode
getmypid
getmyuid
phpinfo
phpversion
putenv
set_magic_quotes_runtime
set_time_limit
error_log
error_log -- отослать сообщение об ошибке
Описание
int error_log(string message, int
message_type, string [
destination
], string
[
extra_headers
]);
Посылает сообщение об ошибке в web сервер лог,
TCP
порт или в файл. Первый параметр, message, определяет сообщение
об ошибке, которое должно быть отослано. Второй параметр, message_type,
определяет способ передачи сообщения:
Таблица 1. error_log() лог типы
0 |
message посылается в системный
лог PHP, используя механизм системного логирования Операционной Системы
или в файл, в зависимости от того, как определена конфигурация error_log
директивы. |
1 |
message посылается по электронной
почте, адрес определен в destination параметре. Только
для этого типа сообщений используется параметр extra_headers.
Этот тип использует ту же внутреннюю функцию, что и Mail(). |
2 |
message отсылается через соединение
PHP отладки. Эта опция доступна только тогда, когда установлена remote
debugging has been enabled. В этом случае параметр destination
определяет имя машины или IP адрес и опционально, номер порта, сокета получающего
отладочную информацию. |
3 |
message добавляется к файлу,
определенному в destination. |
Пример 1. примеры error_log()
// Послать сообщение в системный лог, если не получено соединение с базой данных
if (!Ora_Logon($username, $password)) {
error_log("Oracle database not available!", 0);
}
// Информировать администратора по почте об ошибке выделения FOO
if (!($foo = allocate_new_foo()) {
error_log("Big trouble, we're all out of FOOs!", 1,
"operator@mydomain.com");
}
// другие способы вызова error_log():
error_log("You messed up!", 2, "127.0.0.1:7000");
error_log("You messed up!", 2, "loghost");
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
|
error_reporting
error_reporting -- устанавливает уровень сообщений
об ошибках PHP
Описание
int error_reporting(int [
level
]);
Устанавливает уровень сообщений об ошибках PHP и возвращает старый уровень.
Уровень сообщений об ошибках задается битовой маской и использует следующие
значения (используйте линки для получения информации об их назначении):
Таблица 1. error_reporting() битовые значения
getenv
getenv -- Получить значение переменной среды
окружения.
Описание
string getenv(string varname);
Возвращает значение переменной среды окружения varname,
или false(ложь) в случае ошибки.
$ip = getenv("REMOTE_ADDR"); // получить ip номер пользователя
get_cfg_var
get_cfg_var -- Получить значение опции конфигурации
PHP.
Описание
string get_cfg_var(string varname);
Возвращает текущее значение опции конфигурации PHP, заданной в varname,
или false(ложь), если произошла ошибка.
Не возвращает информацию конфигурации, установленную при компиляции
PHP, или прочитанную из файла конфигурации Apache (использование php3_configuration_option
директив).
Что бы проверить, использует ли система php3.ini файл, попробуйте получить
значение cfg_file_path. Если оно установлено, то php3.ini файл используется.
get_current_user
get_current_user -- Получить имя владельца текущего
PHP скрипта.
Описание
string get_current_user(void);
Возвращает имя владельца текущего PHP скрипта.
См. также getmyuid(), getmypid(),
getmyinode(),
и getlastmod().
get_magic_quotes_gpc
get_magic_quotes_gpc -- Получить текущие активные
установки magic_quotes_gpc.
Описание
long get_magic_quotes_gpc(void);
Возвращает текущие активные установки magic_quotes_gpc.
(0 для выключенных(off), 1 для включенных(on))
См. также get_magic_quotes_runtime(),
set_magic_quotes_runtime().
get_magic_quotes_runtime
get_magic_quotes_runtime -- Получить текущие
активные установки magic_quotes_runtime.
Описание
long get_magic_quotes_runtime(void);
Возвращает текущие активные установки magic_quotes_runtime.
(0 для выключенных(off), 1 для включенных(on))
См. также get_magic_quotes_gpc(),
set_magic_quotes_runtime().
getlastmod
getlastmod -- Получить время последней модификации
страницы.
Описание
int getlastmod(void);
Возвращает время последней модификации текущей страницы. Возвращаемое значение
- Unix timestamp, подходящее для использование в функции date().
Возвращает false(ложь) при ошибке.
Пример 1. getlastmod() пример
// выводит что-то вроде этого 'Последнее изменение: March 04 1998 20:43:59.'
echo "Последнее изменение: ".date( "F d Y H:i:s.", getlastmod() );
|
См. также date(), getmyuid(),
get_current_user(),
getmyinode(),
и getmypid().
getmyinode
getmyinode -- Получить inode текущего скрипта.
Описание
int getmyinode(void);
Возвращает inode текущего скрипта, или false(ложь) при ошибке.
См. также getmyuid(), get_current_user(),
getmypid(),
и getlastmod().
getmypid
getmypid -- Получить ID процесса PHP.
Описание
int getmypid(void);
Возвращает текущий ID процесса PHP, или false(ложь) при ошибке.
Обратите внимание, что при работе PHP как модуля сервера, вы не получите
точный IP процесса.
См. также getmyuid(), get_current_user(),
getmyinode(),
и getlastmod().
getmyuid
getmyuid -- Получить UID владельца скрипта PHP.
Описание
int getmyuid(void);
Возвращает UID текущего скрипта, или false(ложь) при ошибке.
См. также getmypid(), get_current_user(),
getmyinode(),
и getlastmod().
phpinfo
phpinfo -- Вывод большого количества информации
о PHP.
Описание
int phpinfo(void);
Вывод большого количества информации о текущем состоянии PHP. Это включает
информацию относительно опций компиляции и расширений PHP, версию PHP,
информации сервера и среды окружения (если скомпилировано как модуль),
среда окружения PHP, информация о версии операционной системы, пути, основных
и локальных опций конфигурации, HTTP заголовок и GNU Public License.
См. также phpversion().
phpversion
phpversion -- Получить текущую версию PHP.
Описание
string phpversion(void);
Возвращает строку, содержащую версию запущенного в данный момент PHP.
Пример 1. phpversion() пример
// Печатает что-то вроде этого 'Текущая версия PHP: 3.0rel-dev'
echo "Текущая версия PHP: ".phpversion();
|
См. также phpinfo().
putenv
putenv -- Устанавливает значение переменной среды
окружения.
Описание
void putenv(string setting);
Добавляет setting в среду окружения.
Пример 1. Устанавливает значение переменной среды
окружения
putenv("UNIQID=$uniqid");
|
set_magic_quotes_runtime
set_magic_quotes_runtime -- Устанавливает в текущих
активных установках конфигурации установки для magic_quotes_runtime.
Описание
long get_magic_quotes_runtime(int
new_setting);
Устанавливает в текущих активных установках конфигурации установки для
magic_quotes_runtime.
(0 для выключенных(off), 1 для включенных(on))
См. также get_magic_quotes_gpc(),
get_magic_quotes_runtime().
set_time_limit
set_time_limit -- Установка лимита на максимальное
время работы скрипта
Описание
void set_time_limit(int seconds);
Устанавливает длительность в секундах, во время которого скрипт должен
быть выполнен. Если период превышен, то скрипт возвращает фатальную ошибку.
По умолчанию лимит составляет 30 секунд или, если этот параметр установлен,
значение max_execution_time в php3.ini. Если значение установлено в ноль(0),
то лимит выключен.
При вызова, set_time_limit() перезапускает счетчик времени исполнения
с нуля. Другими словами, если установлен лимит по умолчанию 30 секунд,
и прошло 25 секунд со времени запуска, то после вызова set_time_limit(
20 ) общее время будет составлять 45 секунд после с начала запуска скрипта.
Назад, к содержанию
Функции работы с Informix
Содержание
ifx_connect
ifx_pconnect
ifx_close
ifx_query
ifx_prepare
ifx_do
ifx_error
ifx_errormsg
ifx_affected_rows
ifx_fetch_row
ifx_htmltbl_result
ifx_fieldtypes
ifx_fieldproperties
ifx_num_fields
ifx_num_rows
ifx_free_result
ifx_create_char
ifx_free_char
ifx_update_char
ifx_get_char
ifx_create_blob
ifx_copy_blob
ifx_free_blob
ifx_get_blob
ifx_update_blob
ifx_blobinfile_mode
ifx_textasvarchar
ifx_byteasvarchar
ifx_nullformat
ifxus_create_slob
ifx_free_slob
ifxus_close_slob
ifxus_open_slob
ifxus_tell_slob
ifxus_seek_slob
ifxus_read_slob
ifxus_write_slob
Драйверы Informix для Online (ODS) 7.x, SE 7.x и Universal Server (IUS) 9.x выполнены в "functions/ifx.ec" и "functions/php3_ifx.h". В данный момент написание поддержки ODS 7.2 в известной степени завершено, с полной поддержкой BLOB. Поддержка IUS 9.1 завершена частично: новые типы данных уже есть, но поддержка SLOBS все еще в стадии разработки.
Замечания по конфигурации:
Перед тем, как вы запустите скрипт "configure", убедитесь, что переменная "INFORMIXDIR" установлена.
Конфигурационный скрипт автоопределяет библиотеки и включаемые (include) директории, если вы запустите "configure --with_informix=yes". Вы можете переопределить эти директории, специфицировав переменные окружения "IFX_LIBDIR", "IFX_LIBS" и "IFX_INCDIR". Скрипт также патается автоопределить версию сервера Informix. Он установит переменную условного завершения "HAVE_IFX_IUS", если у вас Informix версии >= 9.00.
Несколько замечаний по использованию BLOB:
Текущая версия (18 Сентября 1998) полностью поддерживает select/insert/update для BLOB.
BLOBы в общем случае адрексуются целочисленными идентификаторами BLOB. Запрос Select возвращает "blob id" для каждой колонки BYTE и TEXT. Вы можете получить содержание путем "string_var = ifx_get_blob($blob_id);" если была выбрана передача BLOBов в память ("ifx_blobinfile(0);"). Если вы предпочитаете получать содержимое колонки BLOB в файл, используйте "ifx_blobinfile(1);", и "ifx_get_blob($blob_id);" возвратит вам имя файла. Для получения содержания используйте стандартные операции файлового ввода/вывода
Для запросов insert/update вам неоходимо создать "blob id's" своими силами, используя "ifx_create_blob(..);". Затем включите идентификатор BLOB в массив и замените колонку BLOB знаком вопроса (?) в строке запроса. Для updates/inserts вы определяете содержание BLOB, используя ifx_update_blob(...).
Поведение колонок BLOB может быт изменено конфигурационными переменными, которые можно устанавлиавать и во время выполнения:
конфигурационная переменная : ifx.textasvarchar
конфигурационная переменная : ifx.byteasvarchar
функция времени выполнения :
ifx_textasvarchar(0) : использовать идентификатор BLOB для запросов select для колонок TEXT.
ifx_byteasvarchar(0) : использовать идентификатор BLOB для запросов select для колонок BYTE.
ifx_textasvarchar(1) : возвращать колонку TEXT так, как будто это VARCHAR, без использования идентификатора BLOB для запросов select.
ifx_byteasvarchar(1) : возвращать колонку BYTE так, как будто это VARCHAR, без использования идентификатора BLOB для запросов select.
Конфигурационная переменная : ifx.blobinfile
функция времени выполнения :
ifx_blobinfile_mode(0) : возвращать колонку BYTE в память, идентификатор BLOB позволяет получить содержание.
ifx_blobinfile_mode(1) : возвращать колонку BBYTE в файл, по идентификатору BLOB - имя файла
Если вы устанавливаете ifx_text/byteasvarchar в 1, то можете использовать колонки TEXT и BYTE в запросах select как обычные (но довольно длинные) поля VARCHAR. С тех пор, как все строки в PHP3 "счетные", это напоминает "бинарную безопасность". Возвращаемые данные могут содержать все, что угодно, вы отвечаете за содержимое.
Если вы устанавливаете ifx_blobinfile в 1, используйте имя файла, возвращаемое ifx_get_blob(..) для получения бинарного содержания. Заметим, что в этом случае ВЫ ОТВЕТСТВЕННЫ ЗА УДАЛЕНИЕ ВРЕМЕННЫХ ФАЙЛОВ, СОЗДАННЫХ INFORMIX при выборке ряда. Каждый новый выбранный ряд создает новые временные файлы для каждой колонки типа BYTE.
Местоположение временных файлов указывается в переменной окружения "blobdir", по умолчанию - "." (текущая директория). Что-то вроде putenv(blobdir="tmpblob"); облегчит удаление случайно оставленных временных файлов (имена всех таких файлов начинаются с "blb").
Автоудаление пробелов для данных "char" (SQLCHAR и SQLNCHAR):
Может быть устанвлено в конфигурационной переменной :
ifx.charasvarchar : если установлена в 1 , то концевые пробелы будут удаляться автоматически.
ifx_connect
ifx_connect -- открытие соединения с сервером Informix
Описание
int ifx_connect(string [database], string [userid], string [password]);
При успешном завершении возвращает идентификатор соединения, при ошибке - false.
ifx_connect() устанавливает соединение к серверу Informix. Все аргументы опциональны и при их отсутствии берутся установки по умолчанию, из файла php3.ini: хост - ifx.default_host (если не определено, то библиотеки Informix используют переменную окружения $INFORMIXSERVER), пользователь - ifx.default_user, пароль - ifx.default_password (может быть не определен).
В случае повтороного вызова функции ifx_connect() с теми же параметрами, новое соединение установлено не будет, а возвратится идентификатор уже установленного соединения.pened link
Ссылка к серверу будет уничтожена, как только завершится выполнение скрипта, если только она не будет закрыта раньше вызовом ifx_close().
Смотри также
ifx_pconnect(), и
ifx_close().
Примет 1. Соединение с базой данных Informix
$conn_id = ifx_pconnect (mydb@ol_srv1, "imyself", "mypassword");
|
ifx_pconnect
ifx_pconnect -- открыть устойчивое соединение с Informix
Описание
int ifx_pconnect(string [database], string [userid], string [password]);
Возвращает идентификатор реальной устойчивой ссылки к Informix при успешном завершении и false при ошибке.
ifx_pconnect() работает очень похоже с ifx_connect(), но с двумя основными отличиями.
Эта функция ведет себя точно так же, как ifx_connect(), когда PHP не запкщено как модуль Апача. Во-первых, при соединении функция перво-наперво пытается найти устойчивую ссылку, которая была открыта ранее к тому же хосту с теми же параметрами (пользователь, пароль). Если поиски увенчались успехом, будет возвращен идентификатор ранее установленного соединения.
Во-вторых, соеденение с SQL-сервером не закроется по окончании выполнения скрипта. Вместо этого, ссылка останется открытой для дальнейшего использования (ifx_close() не закроет ссылку, установленную CLASS="FUNCTION">ifx_pconnect()).
Ссылкт такого типа обычно называют устойчивыми (persistent).
Смотри также:
ifx_connect().
ifx_close
ifx_close -- закрыть соединение с Informix
Описание
int ifx_close(int [link_identifier]);
Всегда возвращает true
ifx_close() закрывает ссылку к базе данных Informix, которая ассоциируется со специальным идентификатором ссылки. Если идентификатор ссылки не указан, предполагается последнее установленное соединение.
Заметим, что данная функция не ринадлежит к разряду широко используемых, поскольку неустойчивые соединения автоматически закрываются после окончания выполнения скрипта.
ifx_close() не закрое устойчивое соединение, сгенерированное ifx_pconnect().
Смотри также:
ifx_connect(), и
ifx_pconnect().
Пример 1. закрытие соединения с Informix
$conn_id = ifx_connect (mydb@ol_srv, "itsme", "mypassword");
... несколько запросов и др. ...
ifx_close($conn_id);
|
ifx_query
ifx_query -- послать запрос Informix
Описание
int ifx_query(string query, int [link_identifier], int [cursor_type], mixed [blobidarray]);
Возвращает определенный идентификатор результата Informix при успешном выполнении и false при ошибке.
Целочисленный "result_id" используется другими функциями для выборки результата запроса. Устанавливайте "affected_rows" для выборки, используя функцию ifx_affected_rows().
ifx_query() посылает запрос к текущей активной базе данных на сервере, который указан в link_identifier. Если идентификатор ссылки не специфицирован, подразумевается последнее открытое соединение. Если до этого не было установлено никакое соединение, функция пытается установить ссылку (как при вызове функции ifx_connect()), и использовать ее.
Выполняется query на соединении conn_id. Для запросов типа Select курсор объявлен и открыт. опциональный параметр cursor_type позволяет вам сделать курсор "scroll" и/или "hold". Это маска и может принимать одно из значаний IFX_SCROLL, IFX_HOLD, или обы вместе. Не-select запросы "выполняются немедленно".
Для любого типа запроса количество (предполагаемое или действительное) обрабатываемых рыдов сохраняется для выборки в ifx_affected_rows().
Если у вас есть колонки BLOB (BYTE или TEXT) в запросе update, вы может добавить параметрblobidarray, содержащий соответствующие идентификаторы BLOB; тогда следует заменить эти колонки на знак вопроса (?) в тексте запроса.
Если содержание колонки TEXT/BYTE позволяет, то вы можете также использовать "ifx_textasvarchar(1)" и "ifx_byteasvarchar(1)". Это позволит вам обращаться с колонками TEXT/BYTE так же, как с обычными (но довольно длинными) колонками VARCHAR в запросах select, и нет необходимости морочиться с идентификаторами BLOB.
С ifx_textasvarchar(0) или ifx_byteasvarchar(0) (ситувация по умолчанию) запрос select возвратит колонки BLOB как идентификаторы BLOB (целые значения). Вы можете получитьзначения этих идентификаторов как стори или файлы путем использования специтальных функций для BLOB (см. ниже).
Смотри также:
ifx_connect().
Пример 1. показ всех рядов таблицы "orders" как таблицы html
ifx_textasvarchar(1); // использовать режим "text mode" для BLOBов
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
printf("Can't select orders : %sn<br>%s<br>n",
ifx_error();
ifx_errormsg();
die;
}
ifx_htmltbl_result($res_id, "border="1");
ifx_free_result($res_id);
|
Пример 2. Вставка нескольких значений в таблицу "catalog"
// создание идентификаторов BLOB для колонок byte и text
$textid = ifx_create_blob(0, 0, "Text column in memory");
$byteid = ifx_create_blob(1, 0, "Byte column in memory");
// сохранение идентификаторов BLOB в масиве
$blobidarray[] = $textid;
$blobidarray[] = $byteid;
// запуск запроса
$query = "insert into catalog (stock_num, manu_code, " .
"cat_descr,cat_picture) values(1,'HRO',?,?)";
$res_id = ifx_query($query, $conn_id, $blobidarray);
if (! $res_id) {
... ошибка ...
}
// освобождение идентификатора результата
ifx_free_result($res_id);
|
ifx_prepare
ifx_prepare -- подготовка SQL-выражения к выполнению
Описание
int ifx_prepare(string query, int conn_id, int [cursor_def], mixed blobidarray);
Возвращает целое result_id для использования в ifx_do(). Устанавливает affected_rows для извлечения данных функцией ifx_affected_rows().
Подготавливает query на соединении conn_id. Для запросов типа Select курсор объявлен и открыт. опциональный параметр cursor_type позволяет вам сделать курсор "scroll" и/или "hold". Это маска и может принимать одно из значаний IFX_SCROLL, IFX_HOLD, или обы вместе. Не-select запросы "выполняются немедленно".
Для любого типа запроса количество (предполагаемое или действительное) обрабатываемых рыдов сохраняется для выборки в ifx_affected_rows().
Если у вас есть колонки BLOB (BYTE или TEXT) в запросе update, вы может добавить параметрblobidarray, содержащий соответствующие идентификаторы BLOB; тогда следует заменить эти колонки на знак вопроса (?) в тексте запроса.
Если содержание колонки TEXT/BYTE позволяет, то вы можете также использовать "ifx_textasvarchar(1)" и "ifx_byteasvarchar(1)". Это позволит вам обращаться с колонками TEXT/BYTE так же, как с обычными (но довольно длинными) колонками VARCHAR в запросах select, и нет необходимости морочиться с идентификаторами BLOB.
С ifx_textasvarchar(0) или ifx_byteasvarchar(0) (ситувация по умолчанию) запрос select возвратит колонки BLOB как идентификаторы BLOB (целые значения). Вы можете получитьзначения этих идентификаторов как стори или файлы путем использования специтальных функций для BLOB (см. ниже).
Смотри также:
ifx_do().
ifx_do
ifx_do -- выполняет предварительно подготовленное SQL-выражение
Описание
int ifx_do(int result_id);
Возвращает true при успешном выполнении, false при ошибке.
Выполняет предварительно подготовленный запрос или открывает курсор для него.
НЕ освобождает result_id при ошибке.
ТАкже устанавливает реальное значение ifx_affected_rows() для не-select выражений для выборки данных в ifx_affected_rows().
Смотри также:
ifx_prepare().
ifx_error
ifx_error -- возвратить код ошибки последнего вызова Informix
Описание
string ifx_error(void);
Коды оошибок The Informix (SQLSTATE & SQLCODE) имеют следующий фомат:
x [SQLSTATE = aa bbb SQLCODE=cccc]
где:
x = space : нет ошибок
E : ошибка
N : нет больше данных
W : предупреждене
? : неопределенность
Первый символ возвращет общий результата, SQLSTATE и SQLCODE описывают ошибку более детально. Обрабатывается последняя ошибка.
Просмотрите Руководство к Informix для получения описания SQLSTATE и SQLCODE.
Смотри также:
ifx_errormsg()
ifx_errormsg
ifx_errormsg -- возвратить сообщение об ошибке последнего вызова Informix
Описание
string ifx_errormsg(int [errorcode]);
Возвращает сообщение об ошибке Informix, ассоциируещееся с последней ошибкой, или, если установлен опциональный параметр "errorcode", сообщение, соответствующее "errorcode".
Смотри также:
ifx_error()
printf("%sn<br>", ifx_errormsg(-201));
ifx_affected_rows
ifx_affected_rows -- получить число рядов, обработанных запросом
Описание
int ifx_affected_rows(int result_id);
result_id is a valid result id returned by
ifx_query() или ifx_prepare().
Возвращает число рядов, обработанных запросом, ассоциорванным с result_id.
Для вставок, обновлений и удалений - это реальное количество (sqlerrd[2]) обработанных рядов. Для выборок - ожидаемое количество (sqlerrd[0]). Не полагайтесь на него.
Часто используется после ifx_prepare() для ограничения запроса до приемлимого уровня.
Смотри также:
ifx_num_rows()
Пример 1. Обрабатываемые ряды Informix
$rid = ifx_prepare ("select * from emp where name like " . $name, $connid);
if (! $rid) {
... ошбка ...
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
printf ("Too many rows in result set (%d)n<br>", $rowcount);
die ("Please restrict your query<br>n");
}
|
ifx_fetch_row
ifx_fetch_row -- получить ряд как перечислимый массив
Описание
array ifx_fetch_row(int result_id, mixed [position]);
Возвращает ассоциативный массив, соответсвующий выбранному ряду, или false, если нет больше рядов.
Колонки BLOB возвращаются как целые идентификторы BLOB для использоваиня в ifx_get_blob(), если только вы не используете ifx_textasvarchar(1) или ifx_byteasvarchar(1), в этом случае BLOBы возвратятся как строкоыве значения. При ошибке возвращается false.
result_id - это действительный идентификатор результата, возвращенный ifx_query() или ifx_prepare() (только для запросов типа select).
[position] - опциональный параметр для операций выборки только при подвижном курсоре (scroll cursor): "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" или номер. Если указан номер, выполняется "абсолютная" выборка ряда.
ifx_fetch_row() выбирает один ряд данных из результата, ассоциирующегося с указанным идентификатором результата. Ряд возвращается как массив. аждая колонка результата сохраняется в смещении массива, начиная со смещения 0.
Последующий вызов ifx_fetch_row() возвртит следующий ряд результата, или false, если нет больше рядов.
Пример 1. Выборка рядов Informix
$rid = ifx_prepare ("select * from emp where name like " . $name,
$connid, IFX_SCROLL);
if (! $rid) {
... ошибка ...
}
$rowcount = ifx_affected_rows($rid);
if ($rowcount > 1000) {
printf ("Too many rows in result set (%d)n<br>", $rowcount);
die ("Please restrict your query<br>n");
}
if (! ifx_do ($rid)) {
... ошоибка ...
}
$row = ifx_fetch_row ($rid, "NEXT");
while (is_array($row)) {
for(reset($row); $fieldname=key($row); next($row)) {
$fieldvalue = $row[$fieldname];
printf ("%s = %s,", $fieldname, $fieldvalue);
}
printf("n<br>");
$row = ifx_fetch_row ($rid, "NEXT");
}
ifx_free_result ($rid);
|
ifx_htmltbl_result
ifx_htmltbl_result -- форматировать все ряды запроса в таблицу HTML
Описание
int ifx_htmltbl_result(int result_id, string [html_table_options]);
Возвращает количество выбранных рядов или false по ощибке.
Форматирует все ряды запроса с идентификатором result_id в html-таблицу. Второй опциональный параметр - строка с тегами установок <table>
Пример 1. Результат Informix как таблица HTML
$rid = ifx_prepare ("select * from emp where name like " . $name,
$connid, IFX_SCROLL);
if (! $rid) {
... ошибка ...
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
printf ("Too many rows in result set (%d)n<br>", $rowcount);
die ("Please restrict your query<br>n");
}
if (! ifx_do($rid) {
... ошибка ...
}
ifx_htmltbl_result ($rid, "border="2"");
ifx_free_result($rid);
|
ifx_fieldtypes
ifx_fieldtypes -- список полей Informix SQL
Описание
array ifx_fieldtypes(int result_id);
Возвращает асоциативный масив с именами полей как ключами и типами данных SQL как данными для запроса с result_id. При ошибке FALSE.
Пример 1. Имена полей и типы данных SQL
$types = ifx_fieldtypes ($resultid);
if (! isset ($types)) {
... ошибка ...
}
for ($i = 0; $i < count($types); $i++) {
$fname = key($types);
printf("%s :t type = %sn", $fname, $types[$fname]);
next($types);
}
|
ifx_num_rows
ifx_num_rows -- подсчет рядов, уже выбранных по запросу
Описание
int ifx_num_rows(int result_id);
Дает количество строк, выбранных до сих пор для запроса с result_id после ifx_query() или ifx_do().
ifx_free_result
ifx_free_result -- освободить ресурсы запроса
Описание
int ifx_free_result(int result_id);
Освобождает ресурсы, занятые запросом с идентификатором результата result_id. Возвращает FALSE при ошибке.
ifx_create_char
ifx_create_char -- создание симывольного объекта
Описание
int ifx_create_char(string param);
Создает символьный объект. param должен иметь символьное содердимое.
ifx_free_char
ifx_free_char -- удалить символьный объект
Описание
int ifx_free_char(int bid);
Удаляет символьны объеккт для аолученного идентификатора символьногго объекта bid. Возвращает FALSE при ошибке, в противном случае - TRUE.
ifx_update_char
ifx_update_char -- обновить содержимое символьного объекта
Описание
int ifx_update_char(int bid, string content);
Обновляет содержимое символьного объекта с идентификатором bid. content - строка с новыми данными. Возвращает FALSE при ошибке, в противном случае - TRUE.
ifx_get_char
ifx_get_char -- прочесть содержимое символьного объекта
Описание
int ifx_get_char(int bid);
Возвращает содержание символьного объекта с идентификатором bid.
ifx_create_blob
ifx_create_blob -- создать объект BLOB
Описание
int ifx_create_blob(int type, int mode, string param);
Создает объект BLOB
type: 1 = TEXT, 0 = BYTE
mode: 0 = BLOB-объект хранится в памяти
1 = BLOB-объект хранит содержимое в файле
param: если режим = 0: указатель на содержимое
если режим = 1: указатель на файл-строку
Возвращает FALSE при ошибке, в противном случае - новый идентификатор BLOB-объекта.
ifx_copy_blob
ifx_copy_blob -- дублирование полученного объекта BLOB
Описание
int ifx_copy_blob(int bid);
Дублирует полученный BLOB-объект. bid - идентификатор дублируемого объекта
Возвращает FALSE при ошибке, в противном случае - новый идентификатор BLOB-объекта.
ifx_free_blob
ifx_free_blob -- удалить BLOB-объект
Описание
int ifx_free_blob(int bid);
Удаляет объект BLOB сидентификатором bid. Возвращает FALSE при ошибек и TRUE в противном случае.
ifx_get_blob
ifx_get_blob -- прочитать содержимое BLOB
Описание
int ifx_get_blob(int bid);
Возвращает содержимое объекта BLOB с идентификатором bid.
ifx_update_blob
ifx_update_blob -- обновить содержимое объекта BLOB
Описание
ifx_update_blob(int bid, string content);
Обновляет содержимое объекта BLOB c идентификатором bid. content - строка с новыми данными. Возвращает FALSE при ошибке и TRUE в противном случае.
ifx_blobinfile_mode
ifx_blobinfile_mode -- установка умолчаний для BLOB для всех запросов select
Описание
void ifx_blobinfile_mode(int mode);
Устанавливает для BLOB режимы по умолчанию для всех запросов select. Режим "0" означает сохранение Byte-BLOB в памяти, а режим "1" - сохранение в файл.
ifx_textasvarchar
ifx_textasvarchar -- установка умолчаний для текстового режима
Описание
void ifx_textasvarchar(int mode);
Устанавливает умолчания для текстового режима для всех запрососв типа select. Режим "0" - возвращается идентификатор BLOB, а при режиме "1" - возвратится varchar с текстовым содержанием.
ifx_byteasvarchar
ifx_byteasvarchar -- установка умолчаний для байтового режима
Описание
void ifx_byteasvarchar(int mode);
Устанавливает умолчани для байтового режима для всх запросов select. Режим "0" - возвращается идентификатор BLOB, а при режиме "1" - возвратится varchar с текстовым содержанием.
ifx_nullformat
ifx_nullformat -- установка возвращаеого по умолчанию значения при выборке ряда
Описание
void ifx_nullformat(int mode);
Устанавливает возвращаемое по умолчанию значение при выборке ряда для полей созначением NULL. При mode=0 вощвращается пустая строка, при mode=1 - NULL.
ifxus_create_slob
ifxus_create_slob -- создать объект slob и открыть его
Описание
int ifxus_create_slob(int mode);
Создает slob-объект и открывает его. Режимы: Modes: 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> or-маска. Вы также можете использовать константы, именованные IFX_LO_RDONLY, IFX_LO_WRONLY etc. Возвращает FALSE при ошибке и новый идентификатор объекта slob в противном случае.
ifx_free_slob
ifx_free_slob -- удалить объект slob
Описание
int ifxus_free_slob(int bid);
Удаляет объект slob с идентификатором bid. Возвращает FALSE приошибке и TRUE в противном случае.
ifxus_close_slob
ifxus_close_slob -- удалить объект slob
Описание
int ifxus_close_slob(int bid);
Удаляет объект slob с идентификатором bid. Возвращает FALSE приошибке и TRUE в противном случае.
ifxus_open_slob
ifxus_open_slob -- открыть объект slob
Описание
int ifxus_open_slob(long bid, int mode);
Открывает объект slob. bid должен быть существующим идентификатором slob. Режимы: 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> or-маска. Возвращает FALSE при ошибке и новый идентификатор объекта slob в противном случае.
ifxus_tell_slob
ifxus_tell_slob -- возвратить текущий файл или позицию поиска
Описание
int ifxus_tell_slob(long bid);
Возвращает текущий файл или позицию поиска для открытього объекта slob, bid должен быть действующим идентификатором slob. Возвращает FALSE при ошибке, в противном случае - позицию поиска.
ifxus_seek_slob
ifxus_seek_slob -- установить текущий файл или позицию поиска
Описание
int ifxus_seek_blob(long bid, int mode, long offset);
Устанавливает текуцщий файл или позицию поиска для открытого объекта slob. bid должен быть существующим идентификатором slob. Режимы: 0 = LO_SEEK_SET, 1 = LO_SEEK_CUR, 2 = LO_SEEK_END и offset - байтовое смещение. Возвращает FALSE при ошибке, в противном случае - позицию поиска.
ifxus_read_slob
ifxus_read_slob -- читать байты в объект slob
Описание
int ifxus_read_slob(long bid, long nbytes);
Читает байты в объект slob. bid - существующий идентификатор slob и nbytes - количество байт, которое надо прочесть. Возвращает FALSE при ошибке и строку в протвном случае.
ifxus_write_slob
ifxus_write_slob -- записать строку в объект slob
Описание
int ifxus_write_slob(long bid, string content);
Записывает строку в объект slob. bid - существующий идентификатор slob и content - содержание записи. Возвращает FALSE при ошибке или число записанных байт в противном случае.
Назад, к содержанию
Функции работы с InterBase
Содержание:ibase_connectibase_pconnectibase_closeibase_queryibase_fetch_rowibase_free_resultibase_prepareibase_bindibase_executeibase_free_queryibase_timefmt
ibase_connectibase_connect -- Описание ibase_connect( );
ibase_pconnectibase_pconnect -- Описание ibase_pconnect( );
ibase_closeibase_close -- Описание ibase_close( );
ibase_queryibase_query -- Описание ibase_query( );
ibase_fetch_rowibase_fetch_row -- Описание ibase_fetch_row( );
ibase_free_resultibase_free_result -- Описание ibase_free_result( );
ibase_prepareibase_prepare -- Описание ibase_prepare( );
ibase_bindibase_bind -- Описание ibase_bind( );
ibase_executeibase_execute -- Описание ibase_execute( );
ibase_free_queryibase_free_query -- Описание ibase_free_query( );
ibase_timefmtibase_timefmt -- Описание ibase_timefmt( );
Назад, к содержанию
LDAP Функции
Содержание
ldap_add
ldap_bind
ldap_close
ldap_connect
ldap_count_entries
ldap_delete
ldap_dn2ufn
ldap_explode_dn
ldap_first_attribute
ldap_first_entry
ldap_free_result
ldap_get_attributes
ldap_get_dn
ldap_get_entries
ldap_get_values
ldap_list
ldap_modify
ldap_next_attribute
ldap_next_entry
ldap_read
ldap_search
ldap_unbind
Введение в LDAP
LDAP (Lightweight Directory Access Protocol) - Протокол Доступа к
Директориям (каталогам), является протоколом,
используемым для доступа к "Серверам
Каталогов". Директория является специальной
разновидностью базы данных, которая хранит
информацию используя древовидную структуру.
Эта концепция аналогична структуре каталога на
вашем жестком диске, за исключением того что в
данном контексте корневой каталог
рассматривается как "весь мир" а
подкаталоги первого уровня как "страны".
Более низкие уровни структуры директории
содержат входы для компаний, организаций или
мест, на уровне еще ниже находятся входы каталога
для людей, и возможно для оборудования или
документов.
Для ссылки на файл в подкаталоге на жестком
диске используется нечто подобное
/usr/local/myapp/docs
Прямая косая черта отмечает каждый раздел в
ссылке, а вся последовательность символов ссылки
читается слева направо.
Эквивалентом полностью определенной ссылки в
LDAP является "distinguished name" (различаемое имя),
обозначаемое просто как "dn". Примером dn
может быть:
cn=John Smith,ou=Accounts,o=My Company,c=US
Каждый раздел такой ссылки отмечается запятой,
а вся последовательность читается справа налево.
Ссылка читается как ..
country = US
organization = My Company
organizationalUnit = Accounts
commonName = John Smith
Так же как и при организации структуры каталога
на жестком диске, в данном способе нет жестких
правил по организации структуры, и менеджер
сервера директории LDAP допускает любую структуру,
подходящую для выбранной цели. Однако имеется
ряд соглашений. Суть их в том, что вы не можете
написать код доступа к серверу директории, не
зная его структуры, так же как вы не можете
использовать базу данных без представления о ее
предназначении.
Пример полной программы
Поиск информации для всех записей, где фамилия
начинается с "S", в сервере директории, вывод
на дисплей и извлечение с именем и email-адресом.
Пример 1. Пример поиска в LDAP
<?php
// базовая последовательность в LDAP это соединение, связь,
// поиск, интерпретация поиска, результат, закрытие соединения
echo "<h3>LDAP тест запроса</h3>";
echo "Соединение ...";
$ds=ldap_connect("localhost"); // должен существовать LDAP-сервер!
echo "результат соединения ".$ds."<p>";
if ($ds) {
echo "Установка связи ...";
$r=ldap_bind($ds); // это "anonymous" связь, обычно доступ
// только для чтения, вывод "Результат связи.."
echo "Результат связи ".$r."<p>";
echo "Поиск для (sn=S*) ...";
// Поиск записи с фамилией
$sr=ldap_search($ds,"o=My Company, c=US", "sn=S*");
echo "Результат поиска ".$sr."<p>";
echo "Количество возвращенных записей ".ldap_count_entries($ds,$sr)."<p>";
echo "Получение записей ...<p>";
$info = ldap_get_entries($ds, $sr);
echo "Данные для ".$info["count"]." объектов возвращены:<p>";
for ($i=0; $i<$info["count"]; $i++) {
echo "dn is: ". $info[$i]["dn"] ."<br>";
echo "первая запись cn: ". $info[$i]["cn"][0] ."<br>";
echo "первая запись email: ". $info[$i]["mail"][0] ."<p>";
}
echo "Закрытие соединения";
ldap_close($ds);
} else {
echo "<h4>Нет соединения с LDAP сервером</h4>";
}
?>
|
Использование PHP LDAP вызовов
Вам потребуется установить и скомпилировать
библиотеки LDAP-клиента или из пакета University of Michigan
ldap-3.3, или из Netscape Directory SDK. Вам также потребуется
перекомпилировать PHP с поддержкой LDAP для того
чтобы применение PHP LDAP вызовов стало доступным.
Прежде чем использовать LDAP вызовы, необходимо
знать ..
Имя или адрес сервера директории, который вы
будете использовать
"Базовый dn" сервера (часть "мирового"
каталога на данном сервере, которая может быть
"o=My Company,c=US")
Нужен ли пароль для доступа к данному серверу (многие
серверы обеспечивают доступ для чтения для
"anonymous связей" но требуют пароля для чего-либо
еще)
Типичная последовательность LDAP-вызовов,
которую вы можете применять в приложениях,
представлена в следующем щаблоне:
ldap_connect() // установка
соединения с сервером
|
ldap_bind() // анонимный
или идентифицируемый "вход"
|
действия подобные поиску или обновлению
каталога
с выводом результата
|
ldap_close() // "выход"
Дополнительная информация
Большое количество информации по LDAP может быть
найдено:
Netscape
University of
Michigan
OpenLDAP Project
LDAP World
Netscape SDK одержит полезное Руководство
Программиста в .html формате.
ldap_add
ldap_add -- добавляет записи в LDAP каталог
Описание
int ldap_add(целочисленный link_identifier, строковое dn,
массив записи);
возвращает true при успехе и false при ошибке.
Функция ldap_add() используется для
добавления записей в LDAP каталог. DN добавляемой
записи выражается посредством dn. Массив записи
определяет информацию о записи. Значения записей
индексируются посредством индивидуальных
атрибутов. В случае множественных значений для
атрибута, они индексируются целыми числами
начиная с 0.
запись["атрибут1"] = значение
запись["атрибут2"][0] = значение1
запись["атрибут2"][1] = значение2
Пример 1. Полный прример с
идентифицируемой связью
<?php
$ds=ldap_connect("localhost"); // проверка наличия LDAP сервера на хосте
if ($ds) {
// связь с подходящим dn для получения обновленного доступа
$r=ldap_bind($ds,"cn=root, o=My Company, c=US", "secret");
// подготовка данных
$info["cn"]="John Jones";
$info["sn"]="Jones";
$info["mail"]="jonj@here.and.now";
$info["objectclass"]="person";
// добавление данных в каталог
$r=ldap_add($ds, "cn=John Jones, o=My Company, c=US", $info);
ldap_close($ds);
} else {
echo "Нет соединения с LDAP сервером";
}
?>
|
ldap_bind
ldap_bind -- связь с LDAP каталогом
Описание
int ldap_bind(целое link_identifier, строковое bind_rdn,
строковое bind_password);
Связь с LDAP каталогом с определенным RDN и паролем.
Возвращает true при успехе и false при ошибке.
ldap_bind() осуществляет операцию
связи с каталогом. bind_rdn и bind_password используются
факультативно. Если не определено, применяется
связь anonymous.
ldap_close
ldap_close -- закрывает связь с LDAP сервером
Описание
int ldap_close(целое link_identifier);
Возвращает true при успехе, false при ошибке.
ldap_close() закрывает связь с LDAP
сервером, которая ассоциировалась с
определенным link_identifier.
Этот вызов внутренне идентичен ldap_unbind(). LDAP API использует вызов ldap_unbind(), поэтому возможно он
предпочтительнее вызова ldap_close().
ldap_connect
ldap_connect -- соединение с LDAP сервером
Описание
int ldap_connect(строковое hostname, целое port);
Возвращает положительный LDAP идентификатор
связи при успехе, false при ошибке.
ldap_connect() устанавливает соединение
с LDAP сервером по определенным hostname
и port. Оба аргумента
факультативные. Если аргументы не определены, то
будет возвращен идентефикатор уже открытого
соединения. Если определено только hostname,
то по умолчанию используется порт 389.
ldap_count_entries
ldap_count_entries -- подсчет количества записей при
поиске
Описание
int ldap_count_entries(целое link_identifier, целое
result_identifier);
Возвращает количество записей в результате или
false при ошибке.
ldap_count_entries() возвращает количество
записей хранимых в результате от предыдущей
операции поиска. result_identifier
идентифицирует внутренний ldap результат.
ldap_delete
ldap_delete -- удаляет запись из каталога
Описание
int ldap_delete(целое link_identifier, строковое dn);
Возвращает true при успехе и false при ошибке.
ldap_delete() удаляет отдельную запись
из LDAP каталога, определенную по dn.
ldap_dn2ufn
ldap_dn2ufn -- конвертирует DN в User Friendly Naming формат
Описание
string ldap_dn2ufn(строковое dn);
ldap_dn2ufn() преобразует DN в более
дружественную для пользователя форму, удаляя
имена типа.
ldap_explode_dn
ldap_explode_dn -- разбивает DN на составные части
Описание
array ldap_explode_dn(строковое dn, целое with_attrib);
ldap_explode_dn() разбивает DN
возвращаемое по ldap_get_dn() на составные части. Каждая
часть известна как Relative Distinguished Name, или RDN. ldap_explode_dn() возвращает массив всех
компонентов. with_attrib
используется для запроса, возвращать ли RDN толъко
со значениями или также с их атрибутами. Чтобы
получить RDN-части с атрибутами (т.е. в формате
атрибут=значение) установите with_attrib
в 1, чтобы получить только значения установите
его в 0.
ldap_first_attribute
ldap_first_attribute -- возвращает первый атрибут
Описание
string ldap_first_attribute(целое link_identifier, целое
result_entry_identifier, целое ber_identifier);
Возвращает первый атрибут в записи при успехе и
false при ошибке.
Подобно чтению записей, атрибуты также
читаются один за другим из отдельной записи. ldap_first_attribute() возвращает первый
атрибут в записи, отмеченной идентификатором
записи. Оставшиеся атрибуты ищутся
последовательными вызовами ldap_next_attribute(). ber_identifier
является идентификатором указателя положения
внутренней памяти. Он передается по ссылке.
Аналогичный ber_identifier
передается ldap_next_attribute() функции, которая изменяет
этот указатель.
См. также ldap_get_attributes()
ldap_first_entry
ldap_first_entry -- возвращает первый идентификатор (id)
результата
Описание
int ldap_first_entry(целое link_identifier, целое result_identifier);
Возвращает идентификатор записи для первой
записи результата при успехе и false при ошибке.
Записи в LDAP-результате считываются
последовательно с использованием функций ldap_first_entry() и ldap_next_entry(). ldap_first_entry()
возвращает идентификатор записи для первой
записи в результате. Этот идентификатор записи
передается затем в процедуру lap_next_entry()
для получения последовательных записей из
результата.
См. также ldap_get_entries().
ldap_free_result
ldap_free_result -- освобождает память результата
Описание
int ldap_free_result(целое result_identifier);
Возвращает true при успехе и false при ошибке.
ldap_free_result() освобождает внутреннюю
память, предназначенную для хранения результата
и отмечаемую посредством result_identifier.
Вся память результата автоматически
освобождается когда скрипт завершается.
Обычно вся память, выделяемая для ldap результата
освобождается при окончании скрипта. В случае,
когда скрипт выполняет последовательные поиски,
которые возвращают большие наборы записей в
результате, ldap_free_result() может быть
вызвана для сохранения работоспособности
оперативной памяти для следующей части скрипта..
ldap_get_attributes
ldap_get_attributes -- получает атрибуты записи в
результате от поиска
Описание
array ldap_get_attributes(целое link_identifier, целое
result_entry_identifier);
Возвращает полную информацию о записи в
многоразмерном массиве при успехе и false при
ошибке.
ldap_get_attributes() используется для
упрощения чтения атрибутов и значений из записи
в результате от поиска. Возвращаемым значением
функции является многоразмерный массив
атрибутов и значений.
Разместив определенную запись в каталоге, вы
можете узнать какая информация хранится для этой
записи, используя данный вызов. Вы могли бы
использовать этот вызов в приложении которое "просматривает"
каталог записей и/или когда вам не известна
структура каталога записей. Во многих
приложениях вы можете искать определенные
атрибуты, такие как email-адрес или фамилия, не
озадачиваясь при этом содержимым других данных.
return_value["count"] = количество
атрибутов в записи
return_value[0] = первый атрибут
return_value[n] = n-ый атрибут
return_value["attribute"]["count"] = количество
значений атрибута
return_value["attribute"][0] = первое значение
атрибута
return_value["attribute"][i] = i-тое значение
атрибута
Пример 1. Показывает список
атрибутов отдельной записи каталога
// $ds является идентификатором связи для каталога
// $sr допустимый результат поиска от предыдущего вызова к
// текущему при вызовах поиска по ldap каталогу
$entry = ldap_first_entry($ds, $sr);
$attrs = ldap_get_attributes($ds, $entry);
echo $attrs["count"]." атрибуты для данной записи:<p>";
for ($i=0; $i<$attrs["count"]; $i++)
echo $attrs[$i]."<br>";
|
См. также ldap_first_attribute() и ldap_next_attribute()
ldap_get_dn
ldap_get_dn -- получает DN записи результата
Описание
string ldap_get_dn(целое link_identifier, целое
result_entry_identifier);
Возвращает DN записи результата или false при
ошибке.
ldap_get_dn() используется для
нахождения DN записи в результате.
ldap_get_entries
ldap_get_entries -- получает все записи результата
Описание
array ldap_get_entries(целое link_identifier, целое
result_identifier);
Возвращает полную информацию о результате в
многомерном массиве при успехе и false при ошибке.
ldap_get_entries() используется для
упрощения чтения множества записей из
результата и затем чтения атрибутов и
множественных значений. Информация о записи
возвращается по одиночному вызову функции в
многомерном массиве. Структура массива
представлена ниже.
Индекс атрибута преобразуется к нижнему
регистру. (Атрибуты серверов каталогов
нечувствительны к регистру, но не в том случае
когда они используются в качестве индексов
массива).
return_value["count"] = количество
записей в результате
return_value[0] : ссылается на детали первой записи
return_value[i]["dn"] = DN i-той записи в
результате
return_value[i]["count"] = количество атрибутов i-той
записи
return_value[i][j] = j-тый атрибут i-той записи
результата
return_value[i]["attribute"]["count"] = количество
значений атрибута в i-той записи
return_value[i]["attribute"][j] = j-тое значение атрибута в
i-той записи
См. также ldap_first_entry() и ldap_next_entry()
ldap_get_values
ldap_get_values -- получение всех значений из записи
результата
Описание
array ldap_get_values(целое link_identifier, целое
result_entry_identifier, строковое attribute);
Возвращает массив значений атрибута при успехе
и false при ошибке.
ldap_get_values() используется для чтения
всех значений атрибута в записи в данном
результате. Запись определяется по result_entry_identifier.
Количество значений может быть получено при
индексации "счетчика" в результирующем
массиве. Отдельные значения доступны по
целочисленному индексу в массиве. Первый индекс
начинается с 0.
Для данного вызова необходим result_entry_identifier,
поэтому нужно предварительно сделать один вызов
ldap поиска, и один из вызовов для получения
отдельной записи.
Ваше приложение или может быть жестко
настроено на поиск определенных атрибутов (таких
как "фамилия" или "почта") или вы должны
использовать вызов ldap_get_attributes() для получения
информации о том, какие атрибуты существуют для
данной записи.
В LDAP может быть более одной записи для атрибута,
поэтому можно, например, хранить несколько
адресов email в записи каталога для одной персоны,
при этом все записи будут отмечены с атрибутом
"mail"
return_value["count"] = количество
значений для атрибута
return_value[0] = первое значение атрибута
return_value[i] = i-тое значение атрибута
Пример 1. Список значений
атрибута "mail" для записи каталога
// $ds допустимый идентификатор связи для сервера каталога
// $sr допустимый результат поиска от предыдущего вызова к
// текущему при вызовах поиска по ldap каталогу
// $entry допустимый идентификатор записи от предыдущего
// вызова к текущему от вызовов возвращающих запись каталога
$values = ldap_get_values($ds, $entry,"mail");
echo $values["count"]." email адрес для данной записи.<p>";
for ($i=0; $i < $values["count"]; $i++)
echo $values[$i]."<br>";
|
ldap_list
ldap_list -- одноуровневый поиск
Описание
int ldap_list(целое link_identifier, строковое base_dn,
строковое filter);
Возвращает идентификатор результата поиска
или false при ошибке.
ldap_list() выполняет поиск с
определенным фильтром по каталогу с областью
LDAP_SCOPE_ONELEVEL.
LDAP_SCOPE_ONELEVEL означает что такой поиск может
вернуть только информацию, находящуюся на уровне
непосредственно ниже базового dn, заданного в
вызове. (Эквивалентно вводу "ls" и получению
списка файлов и папок в текущем рабочем каталоге).
Этот вызов берет факультативно четвертый
параметр который является массивом требуемых
атрибутов. См. примечание к ldap_search().
Пример 1. Составление списка
всех подразделений организации
// $ds допустимый идентификатор связи для сервера каталога
$basedn = "o=My Company, c=US";
$justthese = array("ou");
$sr=ldap_list($ds, $basedn, "ou=*", $justthese);
$info = ldap_get_entries($ds, $sr);
for ($i=0; $i<$info["count"]; $i++)
echo $info[$i]["ou"][0] ;
|
ldap_modify
ldap_modify -- изменение записи LDAP
Описание
int ldap_modify(целое link_identifier, строковое dn, массив
entry);
Возвращает true при успехе и false при ошибке.
ldap_modify() используется для
изменения существующих записей в каталоге LDAP.
Структура записи такая же как и в ldap_add().
ldap_next_attribute
ldap_next_attribute -- получает следующий атрибут в
результате
Описание
string ldap_next_attribute(целое link_identifier, целое
result_entry_identifier, целое ber_identifier);
Возвращает следующий атрибут в записи или false
при ошибке.
ldap_next_attribute() вызывается для поиска
атрибутов в записи. Внутреннее положение
указателя устанавливается по ber_identifier.
Он посылается в данную функцию по ссылке. Первый
вызов ldap_next_attribute() осуществляется с result_entry_identifier получаемым от ldap_first_attribute().
См. также ldap_get_attributes()
ldap_next_entry
ldap_next_entry -- получает следующую запись в
результате
Описание
int ldap_next_entry(целое link_identifier, целое
result_entry_identifier);
Возвращает идентефикатор записи для следующей
записи в результате, записи которого начинали
считываться функцией ldap_first_entry(). Если больше нет записей
в результате, то возвращается false.
ldap_next_entry() используется для поиска
записей, хранящихся в результате.
Последовательные вызовы ldap_next_entry()
возвращают записи одну за другой пока не
закончатся все записи. Первое обращение к ldap_next_entry() осуществляется после
вызова ldap_first_entry() с параметром result_identifier,
который возвращается от ldap_first_entry().
См. также ldap_get_entries()
ldap_read
ldap_read -- чтение записи
Описание
int ldap_read(целое link_identifier, строка base_dn, строка
filter, массив [attributes]);
Возвращает идентификатор результата поиска
или false при ошибке.
ldap_read() выполняет поиск при
определенном фильтре по каталогу с областью
LDAP_SCOPE_BASE. Таким образом, это эквивалентно чтению
записи из каталога.
Пустой фильтр не допустим. Если вы хотите
получить абсолютно всю информацию для данной
записи, используйте фильтр "objectClass=*". Если вы
знаете какие типы записей используются в сервере
каталога, вы можете применить подходящий фильтр,
такой как "objectClass=inetOrgPerson".
Этот вызов берет факультативно четвертый
параметр который является массивом требуемых
атрибутов. См. примечание ldap_search().
ldap_search
ldap_search -- поиск по дереву LDAP
Описание
int ldap_search(целое link_identifier, строковое base_dn,
строковое filter, массив [attributes]);
Возвращает идентификатор результата поиска
или false при ошибке.
ldap_search() осуществляет поиск для
определенного фильтра по каталогу с областью
LDAP_SCOPE_SUBTREE. Это эквивалентно поиску по всему
каталогу. base_dn определяет
базовый DN для данного каталога.
Имеется факультативный четвертый параметр,
который может быть добавлен для ограничения
атрибутов и значений возвращаемых сервером, если
это требуется. Это значительно эффективнее чем
действие по умолчанию (которое возвращает все
атрибуты и их соответствующие значения).
Использование четвертого параметра может
поэтому рассматриваться как хорошая практика.
Четвертый параметр является стандартным
строковым массивом PHP с требуемыми атрибутами, т.е.
array("mail","sn","cn"). Заметим, что
"dn" требуется всегда, независимо от того,
какие типы атрибутов запрашиваются.
Отметим также, что некоторые хосты каталога
сервера могут быть сконфигурированы так, что
будут возвращать количество записей не
превышающее предварительно установленное
количество. Если это происходит, сервер будет
показывать что он будет возвращать только
ограниченные наборы результатов.
Поисковый фильтр может быть простым или
расширенным, использующим булевы операторы в
формате описанном в документации LDAP (См. Netscape Directory SDK
для дополнения информации по фильтрам).
Приведенный ниже пример отыскивает the отдел
организации, фамилию, данное имя и адрес email для
всех людей в "My Company" где фамилия или данное
имя содержат подстроку $person. Этот пример
использует логический фильтр для указания
серверу на поиск информации более чем в одном
атрибуте.
Пример 1. LDAP поиск
// $ds допустимый идентификатор связи сервера каталога
// $person вся часть имени персоны, т.е. "Jo"
$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array( "ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
print $info["count"]." записей возвращено<p>";
|
Когда вы выполняете поиск, и слишком много
данных возвращается (много записей) вы получите
предупреждение, и ldap_get_entries() выдаст сбой.
Рассматриваемый здесь прием должен выключить
это предупреждение, потом проверить полученную
запись.
$normerr = error_reporting ();
error_reporting (0); // выключает
предупреждение!
$sr = ldap_search ($ds, $dn, $searchfor);
$normerr = error_reporting ($normerr);
if (!$sr) {
print "слишком много записей!";
} else .....
Вы можете попробовать сузить эту область,
добавив особый фильтр, т.е. (cn=a*), но было бы
лучше иметь возможность захватить результаты в
битах (т.е. 1-100, 101-200...).
ldap_unbind
ldap_unbind -- прекращение связи из каталога LDAP
Описание
int ldap_unbind(целое link_identifier);
Возвращает true при успехе и false при ошибке.
ldap_unbind() прекращает связь из
каталога LDAP.
Назад, к содержанию
Почтовые функции
Содержание
mail
mail
mail -- шлет почту
Описание
bool mail(string to, string subject, string message, string additional_headers);
Функция mail() позволяет отсылать почту.
Mail() автоматически посылает сообщение, содержащееся в message адресату, указанному в to.
Несколько получателей могут быть указаны в поле to в виде строки с адресами, разделенными пробелами.
Пример 1. Посылка почты.
mail("rasmus@lerdorf.on.ca", "Моя тема", "Строка 1nСтрока 2nСтрока 3");
Если задан четвертый строковый аргумент, он автоматически вставляется в конец заголовка.
обычно это используется при добавлении дополнительных полей в заголовок. Несколько дополнительных
полей разделяются символом новой строки.
Пример 2. Посылка почты с дополнительными полями заголовка.
mail("ssb@guardian.no", "the subject", $message, "From: webmaster@$SERVER_NAMEnReply-To: webmaster@$SERVER_NAMEnX-Mailer: PHP/" . phpversion());
Назад, к содержанию
Математические функции
Содержание
Abs
Acos
Asin
Atan
Atan2
base_convert
BinDec
Ceil
Cos
DecBin
DecHex
DecOct
Exp
Floor
getrandmax
HexDec
Log
Log10
max
min
mt_rand
mt_srand
mt_getrandmax
number_format
OctDec
pi
pow
rand
round
Sin
Sqrt
srand
TanВведение
Эти математические функции работают только с диапазоном чисел
типа long и double. Если Вы хотите использовать большие числа,
взгляните на
математические функции произвольной точности. .
Математические константы
Следующие величины определяются как математические константы PHP:
Таблица 1. Математические константы
КонстантаВеличинаОписание
M_PI | 3.14159265358979323846 | Значение ¶ (pi) |
AbsAbs -- абсолютная величинаОписаниеmixed abs(mixed number);
Возвращает абсолютную величину числа. Если число с плавающей запятой,
то также возвращает число с плавающей запятой.
AcosAcos -- арккосинусОписаниеfloat acos(float arg); Возвращает арккосинус аргумента в радианах.
См.также
asin() и
atan().
AsinAsin -- арксинусОписаниеfloat asin(float arg); Возвращает арксинус аргумента в радианах.
См.также
acos() и
atan().
AtanAtan -- арктангенсОписаниеfloat atan(float arg); Возвращает арктангенс аргумента в радианах.
См.также
acos() и atan().
Atan2Atan2 -- арктангенс от двух переменныхОписаниеfloat atan2(float y, float x);
Эта функция вычисляет арктангенс от двух переменных x и y. Аналогично вычислению
арктангенса y / x, за исключением того, что знаки обоих аргументов используются для определения сектора результата.
Функция возвращает результат в радианах, находящихся между -PI и PI (включительно).
См.также
acos() и
atan().
base_convertbase_convert -- конвертирует число между произвольными основаниямиОписаниеstrin base_convert(string number, int frombase, int tobase); Возвращает строку, содержащую number,
представленное по основанию tobase. Основание, в котором дается число
which number указывается в
frombase. Основания
frombase и tobase
должны находиться в диапазоне от 2 до 36 включительно. Цифры в числах
с основанием выше, чем 10 будут представлены буквами a-z, со значениями
a - 10, b - 11 и z - 36.
Пример 1. base_convert() $binary = base_convert($hexadecimal, 16, 2); |
BinDecBinDec -- двоичное в десятичноеОписаниеint bindec(string binary_string);
Возвращает десятичный эквивалент двоичного числа, представленного
аргументом binary_string.
OctDec конвертирует двоичное число в десятичное. Наибольшее
число, которое может быть сконвертировано равно 31 битам или
2147483647 в десятичном виде.
См.также функцию
decbin().
CeilCeil -- округлить дробную часть наверхОписаниеint ceil(float number);
Возвращает следующее наивысшее целое значение
number. Использование ceil()
на целых числах - абсолютная трата времени.
ЗАМЕЧАНИЕ: Функция ceil() в PHP/FI 2 возвращаля число типа
float. Используйте: $new = (double)ceil($number); для того, чтобы сэмулировать старое поведение функции.
См.также
floor() и
round().
CosCos -- косинусОписаниеfloat cos(float arg); Возвращает косинус аргумента в радианах.
См.также
sin() и
tan().
DecBinDecBin -- десятичное в двоичноеОписаниеstring decbin(int number);
Возвращает строку, содержащую двоичное представление аргумента number.
Наибольшее число, которое может быть сконвертировано равно 2147483647
в десятичном виде или 31 бит.
См.также функцию
bindec().
DecHexDecHex -- десятичное в шестнадцатиричноеОписаниеstring dechex(int number);
Возвращает строку, содержащую шестнадцатиричное представление
аргумента number. Наибольшее число, которое может быть сконвертировано
равно 2147483647 в десятичном виде или "7fffffff" в шестнадцатиричном.
См. также функцию
hexdec().
DecOctDecOct -- десятичное в восьмеричноеОписаниеstring decoct(int number);
Возвращает строку, содержащую восьмеричное представление аргумента
number. Наибольшее число, которое может быть сконвертировано равно
2147483647 в десятичном виде или "17777777777" в восьмеричном.
См.также
octdec().
ExpExp -- e в степени ...Описаниеfloat exp(float arg); Возвращает число e, возведенное в степень arg.
См.также
pow().
FloorFloor -- округляет дробную часть внизОписаниеint floor(float number);
Возвращает следующее нижележащее значение после
number. Использование floor() на целых числах - абсолютная потеря времени.
ЗАМЕЧАНИЕ: Функция floor() в PHP/FI 2 возвращала число типа
float. Используйте: $new = (double)floor($number); для эмулирования старого поведения этой функции.
См.также
ceil() и
round().
getrandmaxgetrandmax -- показывает наибольшую возможную случайную величинуОписаниеint getrandmax(void );
Возвращает максимальную величигу, которая может быть возвращена вызовом
функции
rand().
См.также
rand(),
srand()
mt_rand(),
mt_srand() и
mt_getrandmax().
HexDecHexDec -- шестнадцатиричное в десятичноеОписаниеint hexdec(string hex_string);
Возвращает десятичный эквивалент числа, представленного аргументом
hex_string. HexDec конвертирует шестнадцатиричную сстроку в десятичное
число. Наибольшее число, которое может быть сконверьтировано
равно 7fffffff в шестнадцатиричном виде или 2147483647 в десятичном.
См. также функцию
dechex().
LogLog -- натуральный логарифмОписаниеfloat log(float arg);
Возвращает натуральный логарифм от аргумента arg.
Log10Log10 -- логарифм по основанию 10Описаниеfloat log10(float arg);
Возвращает логарифм по основанию 10 от аргумента arg.
maxmax -- находит максимумОписаниеmixed max(mixed arg1, mixed arg2, mixed argn); max()
возвращает наибольшее число из перечисленных в параметрах.
Если первый элемент является массивом, max()
возвращает максимальную величину массива. Если первый парметр - целое,
строка или типа double, следует использовать как минимум два параметра,
и в этом случае
max()
возвращает наибольшее из этих величин.
Вы можете сравнивать неограниченное количнество значений.
Если одна или более величин типа double, все остальные величины
будут обращены double, и, соответственно, возвратится число типа double.
Если ни одно из чисел не является double, то все будут обращены
в целые и возвратится целое число.
minmin -- находит минимумОписаниеmixed min(mixed arg1, mixed arg2, mixed argn); min() возвращает наименьшее значение из указанных в аргументах.
Если первый параметр - массив, min()
возвратит наименьшую величину массива. Если первый параметр - целое число,
строка или double, следует указать минимум два парметра и
min() возвратит наименьшую из них величину.
Вы можете сравнивать неограниченно количество величин.
Если одна или более величин типа double, все остальные величины
будут обращены double, и, соответственно, возвратится число типа double.
Если ни одно из чисел не является double, то все будут обращены
в целые и возвратится целое число.
mt_randmt_rand -- генерирует наилучшее случаное числоОписаниеint mt_rand([int min], [int max]);
Множество генераторов случайных чисел, написанных на старой
библиотеке libcs, имеют неясные или неизвестные характеристики,
и к тому же, медленны. По умолчанию с функцией
rand() PHP использует генератор
случайных чисел, написанный на libc. Функция
mt_rand() является его полной заменой. Она использует генератор случайных чисел
с известными характеристиками (Mersenne Twister), который производит
случайные числа, пригодные для использования в криптографии и работает
в четыре раза быстрее, чем средняя скорость, которую обеспечивает libc.
Домашняя страница Mersenne Twister'а Вы можете найти по адресу
http://www.math.keio.ac.jp/~matumoto/emt.html,
а оптимизированную версию исходных текстов на
http://www.scp.syr.edu/~marc/hawk/twister.html.
Если функция вызывается без необязательных аргументов min и max,
mt_rand() возвращает псевдо-случайное число между 0 и RAND_MAX.
Если Вы хотите получить случайное число между 5 и 15 (включительно),
то можно использовать следующий вызов функции: mt_rand(5,15).
Не забудьте инициализировать генератор случайных чисел перед
использованием функции
mt_srand().
См.также
mt_srand(),
mt_getrandmax(),
srand(),
rand() и
getrandmax().
mt_srandmt_srand -- инициализирует лучший генератор случаных чиселОписаниеvoid mt_srand(int seed);
Инициализирует генератор случайных чисел значением
seed.
// инициализируется количеством микросекунд с посленей "целой" секунды
mt_srand((double)microtime()*1000000);
$randval = mt_rand();
См.также
mt_rand(),
mt_getrandmax(),
srand(),
rand() и
getrandmax().
mt_getrandmaxmt_getrandmax -- показывает наибольшее возможное случайное числоОписаниеint mt_getrandmax(void );
Возвращает максимальную величину, которая может быть возвращена
вызовом функции
mt_rand().
См.также
mt_rand(),
mt_srand()
rand(),
srand() и
getrandmax().
number_formatnumber_format -- форматирует число с сгруппированными тысячамиОписаниеstring number_format(float number, int decimals, string dec_point, string thousands_sep); number_format()
возвращает форматированную версию числа
number.
Эта функция принимает один, два или четыре параметра (не три):
Если дан только один параметр, число
number
будет отформатировано без десятичных цифр, но с запятой (",")
между каждой группой тысяч.
Если дано два параметра, число number will
будет отформатировано с десятичным знаком
decimals с точкой (".") впереди и запятой (",") между каждой группой тысяч.
Если даны все четыре параметра, то число number
будет отформатировано с десятичным знаком decimals,
dec_point вместо точки (".") перед десятичным знаком и
thousands_sep вместо запятой (",") между каждой группой тысяч.
OctDecOctDec -- восьмеричное в десятичноеОписаниеint octdec(string octal_string);
Возвращает десятичный эквивалент восьмеричного числа, представленного
аргументом octal_string. OctDec конвертирует восьмеричное число
в десятичное. Максимальное число, которое может быть сконвертировано
равно 17777777777 или 2147483647 в десятичном виде.
См.также
decoct().
pipi -- величина piОписаниеdouble pi(void );
Вохвращает аппроксимированное значение pi.
powpow -- степень числаОписаниеfloat pow(float base, float exp);
Возвращает base, возведенное в степень exp.
См.также
exp().
randrand -- генерирует случаную величинуОписаниеint rand([int min], [int max]);
Если функция вызывается без необязательных параметров min и max, rand()
возвращает псевдо-случайную величину между 0 и RAND_MAX. При желании
получить случайное число между 5 и 15 (включительно), используйте rand(5,15).
Не забудьте проинициализировать генератор случайных чисел перед
использованием
srand().
См.также
srand(),
getrandmax(),
mt_rand(),
mt_srand() и
mt_getrandmax().
roundround -- округляет число с плавающей запятойОписаниеdouble round(double val); Возвращает округленную величину val.
$foo = round( 3.4 ); // $foo == 3.0
$foo = round( 3.5 ); // $foo == 4.0
$foo = round( 3.6 ); // $foo == 4.0
См.также
ceil() and
floor().
SinSin -- синусОписаниеfloat sin(float arg); Возврашает синус аргумента.
См.также
cos() и
tan().
SqrtSqrt -- квадратный кореньОписаниеfloat sqrt(float arg); Возвращает квадратный корень аргумента.
srandsrand -- инициализирует генератор случайных чиселОписаниеvoid srand(int seed); Инициализирует генератор случайных чисел значением
seed.
// инициализируется числом микросекунд с последней "целой" секунды
srand((double)microtime()*1000000);
$randval = rand();
См.также
rand(),
getrandmax(),
mt_rand(),
mt_srand() и
mt_getrandmax().
TanTan -- тангенсОписаниеfloat tan(float arg); Возвращает тангенс аргумента.
См.также
sin() и
cos().
Назад, к содержанию
Дополнительные функции
Содержание
eval
die
exit
iptcparse
leak
pack
register_shutdown_function
serialize
sleep
unpack
unserialize
uniqid
usleep
Эти функции были размещены здесь, т.к. не подходят
не под какую либо категорию.
eval
eval -- Производит выполнение строки содержащей
PHP код
Описание
void eval(string code_str);
eval() производит выполнение строки, данной в code_str
содержащей PHP код. Кстати, это может пригодиться для сохранения кода в
текстовом поле базы данных для более позднего выполнения.
Имеются некоторые условия, которые надо иметь в виду при использовании
eval().
Не забудьте, что переданная строка должна иметь допустимый PHP код, при
включении чего-нибудь подобного завершению кода с точкой с запятой дальнейшее
выполнение не прервется на строке после
eval(), поэтому
пропускайте это в code_str.
Также не забудьте, что при изменении переменных значений в eval()
эти переменные будут изменены и в основных данных.
Пример 1. eval() - простое объединение
текста
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.<br>';
echo $str;
eval( "$str = "$str";" );
echo $str;
?>
|
При выполнении вышеприведенного примера будет выведено следующее:
This is a $string with my $name in it.
This is a cup with my coffee in it.
die
die -- Вывод сообщения и завершение текущего
скрипта
Описание
void die(string message);
Эта функция выводит сообщение и прекращает выполнение текущего скрипта.
Не возвращает значение.
Пример 1. die
<?php
$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
or die "unable to open file ($filename)";
?>
|
exit
exit -- Завершает текущий скрипт
Описание
void exit(void);
Эта функция завершает текущий скрипт. Не возвращает значение.
iptcparse
iptcparse -- Анализирует двоичный IPTC http://www.xe.net/iptc/
блок на одиночные тэги.
Описание
array iptcparse(string iptcblock);
Эта функция анализирует двоичный блок IPTC на одиночные теги. Возвращает
массив, использующий tagmarker как индекс и значение как значение. Возвращает
false при ошибке или если никаких IPTC данных не было найдено. См. GetImageSize()
для примера.
leak
leak -- Отсечение куска памяти
Описание
void leak(int bytes);
Leak() отсекает определенный объем
памяти.
Это полезно при отладке диспетчера памяти, который автоматически очищает
"отсеченную" память при выполнении запроса.
pack
pack -- упаковывает данные в двоичную строку
Описание
string pack(string format, mixed [
args
]...);
Упаковывает данные в двоичную строку согласно формату. Возвращает двоичную
строку, содержащую данные.
Идея на эту функцию принималась из Perl и всей работы кодов форматирования
также как там. Строка формата состоит из кодов формата, сопровождаемые
факультативным параметром ретранслятора. Параметр ретранслятора может быть
или целочисленное значение или * для повторение до конца входных данных.
Для a, A, h, H количество повторов определяет, сколько принимается символов
одного параметра данных, для @ это безусловная позиция, где поместить следующие
данные, для всего остального количество повторов определяет сколько данных
будет использовано и упаковано в возникающую в результате двоичную строку.
В настоящее время выполнено:
a строка NUL-заполнений
A строка SPACE-заполнений
h Hex строка, младший полубайт вначале
H Hex строка, старший полубайт вначале
c signed char
C unsigned char
s signed short (всегда 16 бит, machine byte order)
S unsigned short (всегда 16 бит, machine byte order)
n unsigned short (всегда 16 бит, big endian byte order)
v unsigned short (всегда 16 бит, little endian byte order)
i signed integer (machine dependant размер и byte order)
I unsigned integer (machine dependant размер и byte order)
l signed long (всегда 32 бит, machine byte order)
L unsigned long (всегда 32 бит, machine byte order)
N unsigned long (всегда 32 бит, big endian byte order)
V unsigned long (всегда 32 бит, little endian byte order)
f float (machine dependent размер и representation)
d double (machine dependent размер и representation)
x NUL байт
X Копирует один байт
@ NUL-Заполнение до конкретной позиции
Пример 1. pack форматируем строку
$binarydata = pack(" nvc* ", 0x1234, 0x5678, 65, 66);
Возникающая в результате двоичная строка будет длиной 6 байтов и содержать
последовательность байтов 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.
|
Обратите внимание, что различие между знаковыми и без знаковыми значениями
эффективно только для функции unpack(),
так как функция
pack() дает тот же самый результат для знаковых
и без знаковых кодов форматирования.
Также обратите внимание, что PHP хранит интегральные значения как значения
со знаком и имеет machine dependant размер. Если вы делаете без знака,
то интегральное значение будет сохранено и сконвертировано, при этом конечный
результат будет неизвестен.
register_shutdown_function
register_shutdown_function -- Устанавливает функцию,
которая будет выполнена при завершении.
Описание
int register_shutdown_function(string
func);
Устанавливает функцию с именем func, которая будет выполнена
при завершении.
serialize
serialize -- Генерирует удобохраниемое представление
значения
Описание
string serialize(mixed value);
serialize() возвращает строку состоящую из потока байтов при представлениизначения
value,
которое может где-нибудь сохранено.
Это полезно для сохранения или передачи значений PHP без потери
их типа и структуры..
Чтобы преобразовать строку обратно в PHP значение, используйте unserialize().
serialize()
обрабатывает следующие типы:
integer
,
double
,
string
,
array
(многомерный) и
object
(объект будет
преобразован в последовательную форму, но методы при этом будут утеряны).
Пример 1. serialize
// $session_data содержит многомерный массив с информацией о сессии
// текущего пользователя. Мы используем serialize() для сохранения
// этого в базе данных в конце запроса.
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array(serialize($session_data), $PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata)) {
$stmt = odbc_prepare($conn,
"INSERT INTO sessions (id, data) VALUES(?, ?)");
if (!odbc_execute($stmt, &$sqldata)) {
/* Что-то сделано неправильно. */
}
}
|
sleep
sleep -- Задержка выполнения
Описание
void sleep(int seconds);
Sleep фукция выполняет задержку выполненя программы в секундах (seconds).
См. также usleep().
unpack
unpack -- Распаковывает данные из двоичной строки
Описание
array unpack(string format, string
data);
Распаковывает данные из двоичной строки в массив согласно формату. Возвращает
массив, содержащий распакованные элементы.
Unpack работает не так как в Perl поскольку распакованные данные сохранены
в ассоциативном массиве. Чтобы сделать это, Вы должны установить различные
коды формата, и отделить их наклонной чертой вправо /.
Пример 1. Распаковываем строку
$array = unpack("c2chars/nint", $binarydata);
Возникающий в результате массив будет содержать "chars1", "chars2" и "int".
|
Для объяснения кодов формата см. также: pack()
Помните, что PHP хранит интегральные значения со знаком. Даже если вы
сохраните с указанием что это без знака, и будете извлекать, то все равно
непредсказуем результат и может возникнуть ошибка.
unserialize
unserialize -- создает PHP значение из сохраненного
представления
Описание
mixed unserialize(string str);
unserialize() берет одно сохраненное значение (см. serialize())
и преобразует обратно в PHP значение. Возвращает преобразованное значение,
и может иметь тип:
integer
,
double
,
string
,
array
или
object
. Если был преобразован object,
то методы не востановятся.
Пример 1. unserialize
// Здесь мы используем unserialize() для загрузки данных о сессии из базы данных
// в $session_data. Этот пример дополняет описанный в месте
// с serialize().
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {
// Если сбой запуска или выборки , то инициализируем массив
$session_data = array();
} else {
// Мы должны иметь представление в $tmp[0].
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// Что-то неправильно, инициализируем массив
$session_data = array();
}
}
|
uniqid
uniqid -- генерирует уникальный идентификатор
Описание
int uniqid(string prefix);
uniqid() возвращает уникальный идентификатор, основанный на текущем
времени в микросекундах. Префикс может быть полезен, например, если Вы
генерируете идентификаторы одновременно на отдельных хостах, которые, могли
бы случилось, генерировали идентификатор в одной и той же микросекунде.
Префикс может быть длиной до 114 символов.
Если Вы нуждаетесь в уникальном идентификаторе или лексеме(маркере),
и Вы предполагаете раздавать эту лексему(маркер) пользователю через сеть
(то есть сеанс cookies), то рекомендуется, чтобы Вы использовали что -
нибудь со строками
$token = md5(uniqid("")); // Не произвольно
$better_token = md5(uniqid(random())); // Намного лучше, труднее подобрать
Это создаст 32 символьный идентификатор (128 бит hex число) который чрезвычайно
трудно предсказать.
usleep
usleep -- Задержка выполнения в микросекундах
Описание
void usleep(int micro_seconds);
Задержка выполнения программы в микросекундах(micro_seconds).
См. также sleep().
Назад, к содержанию
Функции mSQL
Содержание
msql
msql_affected_rows
msql_close
msql_connect
msql_create_db
msql_createdb
msql_data_seek
msql_dbname
msql_drop_db
msql_dropdb
msql_error
msql_fetch_array
msql_fetch_field
msql_fetch_object
msql_fetch_row
msql_fieldname
msql_field_seek
msql_fieldtable
msql_fieldtype
msql_fieldflags
msql_fieldlen
msql_free_result
msql_freeresult
msql_list_fields
msql_listfields
msql_list_dbs
msql_listdbs
msql_list_tables
msql_listtables
msql_num_fields
msql_num_rows
msql_numfields
msql_numrows
msql_pconnect
msql_query
msql_regcase
msql_result
msql_select_db
msql_selectdb
msql_tablename
msql
msql -- посылает mSQL-запрос
Описание
int msql
(string database, string query, int link_identifier);
Возвращает положительный идентификатор результата mSQL-запроса или
false в случае ошибки.
msql() выбирает базу данных и выполняет на ней запрос. Если не
указан необязательный идентификатор связи, функция будет пытаться
найти открытую связь с mSQL-сервером и если ни одной связи найдено
не будет, функция попытается создать ее, как если бы вызывалась
функция
msql_connect()
без аргументов
(см.
msql_connect()
).
msql_affected_rows
msql_affected_rows -- возвращает количество строк результата запроса
Описание
int msql_affected_rows
(int query_identifier);
Возвращает количество строк результата запроса (т.е. количество
строк, возвращаемых SELECT, количество строк, модифицированных
UPDATE или количество строк, удаленных DELETE).
См.также:
msql_query()
msql_close
msql_close -- закрывает соединение с mSQL
Описание
int msql_close
(int link_identifier);
Возвращает true в случае успеха и false в случае ошибки.
msql_close() закрывает связь с базой данных mSQL, которая ассоциирована
с указанным идентификатором связи. Если идентификатор связи не указан,
закрывается последняя открытая связь.
Заметьте, что обычно нет необходимости это делать, т.к.
непостоянные связи автоматически закрываются после исполнения
скрипта.
msql_close() не закрывает постоянную связь, открытую с помощью
msql_pconnect()
.
См.также:
msql_connect()
и
msql_pconnect()
.
msql_connect
msql_connect -- открывает соединение с mSQL
Описание
int msql_connect
(string hostname);
В случае успеха возвращает положительный идентификатор связи или
false в случае ошибки.
msql_connect() устанавливает соединение с mSQL сервером. Аргумент
hostname - необязателен, и если он пропущен, подразумевается localhost.
В случае второго вызова функции msql_connect() с одинаковыми
аргументами, новой связи не образуется, а вместо нее возвращается
идентификатор уже открытого соединения.
Связь серверои будет закрыта сразу же, как только прекратится
выполнение скрипта или ранее она не будет закрыта вызовом функции
msql_close()
.
См.также
msql_pconnect()
,
msql_close()
.
msql_create_db
msql_create_db -- создает базу данных в mSQL
Описание
int msql_create_db
(string database name, int [
link_identifier
]
);
msql_create_db() пытается создать новую базу данных на сервере,
ассоциированном с указанным идентификатором связи.
См.также:
msql_drop_db()
.
msql_createdb
msql_createdb -- создает базу данных в mSQL
Описание
int msql_createdb
(string database name, int [
link_identifier
]
);
Идентична
msql_create_db()
.
msql_data_seek
msql_data_seek -- перемещает внутренний указатель строки
Описание
int msql_data_seek
(int query_identifier, int row_number);
Возвращает true в случае успеха и false в случае ошибки.
msql_data_seek() передвигает внутренний указатель строки
результата msql_data_seek() ассоциированного с указанным
идентификатором запроса для того, чтобы указать на строку
с конкретным номером. Вызов
msql_fetch_row()
возвратит эту строку.
См.также:
msql_fetch_row()
.
msql_dbname
msql_dbname -- возвращает название текущей базы данных mSQL
Описание
string msql_dbname
(int query_identifier, int i);
msql_dbname()
возвращает название базы данных
записанной в положении
i
указателя, возвращаемого функцией
msql_listdbs()
. Для определения количества доступных баз данных
может быть использована функция
msql_numrows()
.
msql_drop_db
msql_drop_db -- удаляет базу данных mSQL
Описание
int msql_drop_db
(string database_name, int link_identifier);
Возвращает true в случае успеха и false в случае ошибки.
msql_drop_db() пытается полностью удалить с сервера базу данных,
ассоциированную с указанным идентификатором связи.
См.также:
msql_create_db()
.
msql_dropdb
msql_dropdb -- удаляет базу данных mSQL
Описание
См.
msql_drop_db()
.
msql_error
msql_error -- возвращает ссобщение об ошибке последнего обращения функций к msql
Описание
string msql_error
( );
Ошибки, идующие от сервера mSQL больше не выдают предупреждений.
Вместо них используйте функции для извлечения строки ошибки.
msql_fetch_array
msql_fetch_array -- извлекает строку как массив
Описание
int msql_fetch_array
(int query_identifier);
Возвращает массив, который соответствует извлеченной строке. Если
больше строк нет, возвращается false.
msql_fetch_array() это расширенная версия функции
msql_fetch_row()
.
В дополнение к записи данных в массив с цифровыми индексами,
данные также записываются в ассоциативный массив, использующий
названия полей в качестве ключей.
Будьте осторожны при извлечении данных из запроса, который
может возвратить запись, содержащую одно поле со значением
0 (или пустую строку, или NULL).
Важно заметить, что использование msql_fetch_array() работает совсем
НЕ медленнее, чем
msql_fetch_row()
,
причем обеспечивает при этом важные дополнения.
За дополнительной информацией обратитесь к
msql_fetch_row()
msql_fetch_field
msql_fetch_field -- извлекает информацию о поле
Описание
object msql_fetch_field
(int query_identifier, int field_offset);
Возвращает объект, содержащий информацию о поле
msql_fetch_field() может использоваться для извлечения
информации о полях в некоторых результатх запросов.
Если не указано смещение поля, то возвращается следующее
поле не извлеченное функцией msql_fetch_field() поле.
Свойствами объекта являются:
name - название колонки
table - название таблицы, которой принадлежит колонка
to
not_null - 1, если колонка не может быть равна
null
primary_key - 1, если колонка является первичным ключом
unique - 1, если колонка является уникальным ключом
type - тип колонки
См.также
msql_field_seek()
.
msql_fetch_object
msql_fetch_object -- fetch row as object
Описание
int msql_fetch_object
(int query_identifier);
Возвращает объект со свойствами, соответствующими извлеченной
строке. Если больше нет строк, возвращается false.
msql_fetch_object() эквивалентно
msql_fetch_array()
,
с одним исключением - вместо массива возвращается объект.
Это значит, что доступ у данным может производиться только по
названию поля, а не по их смещению (числа - неправильные названия полей).
По скорости работы функция иденитична
msql_fetch_array()
и
msql_fetch_row()
(разница очень маленькая).
См.также:
msql_fetch_array()
and
msql_fetch_row()
.
msql_fetch_row
msql_fetch_row -- возвращает строку как массив с числовыми индексами
Описание
array msql_fetch_row
(int query_identifier);
Возвращает массив, соответствующий извлеченной строке. Если больше
нет строк, то возвращается false.
msql_fetch_row() извлекает одну строку данных из результата,
асслциированного с указанным идентификатором. Строка возвращается
как массив. Каждая колонка результата записывается в массив со смещение,
начиная со смещения 0.
Следующий вызов msql_fetch_row() возвратит следубщую строку
из результата. Если строк больше нет, возвратится false.
См.также:
msql_fetch_array()
,
msql_fetch_object()
,
msql_data_seek()
, и
msql_result()
.
msql_fieldname
msql_fieldname -- получает название поля
Описание
string msql_fieldname
(int query_identifier, int field);
msql_fieldname() возвращает название указанного поля.
query_identifier
- идентификатор запроса, и
field
- индекс поля.
msql_fieldname($result, 2);
возвратит название второго поля результата, ассоциированного с
идентификатором результата.
msql_field_seek
msql_field_seek -- устанавливает смещение поля
Описание
int msql_field_seek
(int query_identifier, int field_offset);
Перемещает указатель на указанное смещение поля. Если последующий
вызов
msql_fetch_field()
не будет включать в себя смещение поля, будет возвращено
текущее поле.
См.также:
msql_fetch_field()
.
msql_fieldtable
msql_fieldtable -- получает название таблицы для поля
Описание
int msql_fieldtable
(int query_identifier, int field);
Возвращает название таблицы, откуда было извлечено поле
field
.
msql_fieldtype
msql_fieldtype -- получает тип поля
Описание
string msql_fieldtype
(int query_identifier, int i);
msql_fieldtype() эквивалентно
msql_fieldname()
.
Аргументы идентичны, но возвращается тип поля. Тип может быть
следующим: "int", "string" или "real".
msql_fieldflags
msql_fieldflags -- получает флаги поля
Описание
string msql_fieldflags
(int query_identifier, int i);
msql_fieldflags() возвращает флаги указанного поля. В текущий момент
они могут быть следующими: "not null", "primary key", их комбинацией
или "" (пустая строка).
msql_fieldlen
msql_fieldlen -- получает длину поля
Описание
int msql_fieldlen
(int query_identifier, int i);
msql_fieldlen() возвращает длину указанного поля.
msql_free_result
msql_free_result -- высвобождает рузультат из памяти
Описание
int msql_free_result
(int query_identifier);
msql_free_result()
освобождает память, ассоциированную с
query_identifier
.
Когда PHP завершает запрос, эта память осовобождается автоматически,
таким образом Вам нужно вызывать эту функцию только тогда, когда Вы
хотите быть уверены, что не используете слишком много памяти во время
исполнения скрипта.
msql_freeresult
msql_freeresult -- освобождает результат из памяти
Описание
См.
msql_free_result()
msql_list_fields
msql_list_fields -- перечисляет поля результата
Описание
int msql_list_fields
(string database, string tablename);
msql_list_fields() извлекает информацию о данной таблице.
Аргументами являются название базы данных и название таблицы.
Возвращается указатель результата, который может быть использован
функциями
msql_fieldflags()
,
msql_fieldlen()
,
msql_fieldname()
, и
msql_fieldtype()
.
Идентификатор запроса - положительное целое число. Функция возвращает
-1
если возникла ошибка. Строка, описывающая ошибку будет помещена в
$phperrmsg
, и до тех пор, пока функция не будет вызвана как
@msql_list_fields()
,
строка ошибки будет выводится на печать.
См.также
msql_error()
.
msql_listfields
msql_listfields -- перечисляет поля результата
Описание
See
msql_list_fields()
.
msql_list_dbs
msql_list_dbs -- перечисляет базы данных mSQL на сервере
Описание
int msql_list_dbs
(void);
msql_list_dbs()
возвратит указатель на результат, содержащий базы данных, доступные
с текущего msql демона. Используйте функцию
msql_dbname()
для извлечения имен таблиц.
msql_listdbs
msql_listdbs -- перечисляет базы данных mSQL на сервере
Описание
См.
msql_list_dbs()
.
msql_list_tables
msql_list_tables -- перечисляет таблицы в базе данных mSQL
Описание
int msql_list_tables
(string database);
msql_list_tables()
в качестве параметра использует название базы данных, и возвращает у
казатель на результат, примерно, как и функция
msql()
. Для извлечения настоящих названий таблиц должна быть использована функция
msql_tablename()
,
параметром в которую передается указатель на результат.
msql_listtables
msql_listtables -- перечисляет таблицы в базе данных mSQL
Описание
См.
msql_list_tables()
.
msql_num_fields
msql_num_fields -- получает количество полей в результате
Описание
int msql_num_fields
(int query_identifier);
msql_num_fields() возвращает количество полей в данных резултата.
См.также:
msql()
,
msql_query()
,
msql_fetch_field()
, и
msql_num_rows()
.
msql_num_rows
msql_num_rows -- получает количество строк результата
Описание
int msql_num_rows
(int query_identifier);
msql_num_rows() возвращает количество строк данных результата.
См.также:
msql()
,
msql_query()
, и
msql_fetch_row()
.
msql_numfields
msql_numfields -- получает количество полей результата
Описание
int msql_numfields
(int query_identifier);
Идентична
msql_num_fields()
.
msql_numrows
msql_numrows -- получает количество строк результата
Описание
int msql_numrows
(void);
Идентична
msql_num_rows()
.
msql_pconnect
msql_pconnect -- открывает постоянное соединение с mSQL
Описание
int msql_pconnect
(string hostname);
Возвращает положительный идентификатор соединения в случае успеха
или false в случае ошибки.
msql_pconnect() ведет себя во многом также как
msql_connect()
с двумя главными отличиями:
Во-первых, при соединении функция должна попытаться найти (постоянное)
соединение, уж открытое с указанным хостом. Если таковое найдено,
вместо открытия нового соединения будет возвращен идентификатор
только что найденного.
Во-вторых, соединение с SQl-сервером не закроется, когда завершится исполнение
скрипты. Вместо этого, соединение останется открытым для будущего
использования
(
msql_close()
не закроет соединение, установленно с помощью msql_pconnect()).
Такой тип связи, поэтому, называется 'постоянным'.
msql_query
msql_query -- посылает mSQL-запрос
Описание
int msql_query
(string query, int link_identifier);
msql_query() посылает запрос к текущей активной базе данных
на сервере, которая задается идентификатором связи. Если
идентификатор связи не указан, то будет использоваться
последняя открытая связь. Если связи вообще не открыто, то
функция пытается установить связь как если бы вызывалась
функция
msql_connect()
.
Возвращает положительный идентификатор запроса в случае успеха
или false в случае ошибки.
См.также:
msql()
,
msql_select_db()
, and
msql_connect()
.
msql_regcase
msql_regcase -- создает регулярное выражение для контекстно независимого поиска
Описание
См.
sql_regcase()
.
msql_result
msql_result -- получает данные результата
Описание
int msql_result
(int query_identifier, int i, mixed field);
Возвращает содержимое ячейки с указанной строки и смещения
в указанном рузльтате.
msql_result() возвращает содержимое одной ячейки из результата.
Аргумент field может быть смещением поля или его названием или
же названием таблицы, точка, названием поля (fieldname.tablename).
Если название колонки является псевдонимом ('select foo as bar from...'),
используйте псевдоним вместо названия колонки.
При работе с большими результатами запросов, Вы должны рассмотреть
возможность использования одной из функций, которые извлекают
колонку целиком. Т.к. эти функции извлекают содержимое
нескольких ячеек за один вызов, то они работают НАМНОГО быстрее,
чем msql_result().
Также заметьте, что при указании числового смещения поля
функция работает гораздо быстрее, чем при указании названия поля
или аргумента название_таблицы.название_поля.
В качестве высокоскоростной альтернативы рекомендуем:
msql_fetch_row()
,
msql_fetch_array()
, и
msql_fetch_object()
.
msql_select_db
msql_select_db -- выбирает базу данных mSQL
Описание
int msql_select_db
(string database_name, int link_identifier);
Возвращает true в случае успеха и false в случае ошибки.
msql_select_db() устанавливает текущую активную базу данных на
сервере, которая ассоциируется с указанным идентификатором связи.
Если не указан идентификатор связи, используется последняя открытая
связь. Если не открыто ни одного соединения, функция попытается
установить связь, как если бы вызывалась функция msql_connect(),
и в дальнейшем использует установленную связь.
Каждый последующий вызов
msql_query()
будет сделан на активную базу данных.
См.также:
msql_connect()
,
msql_pconnect()
, и
msql_query()
.
msql_selectdb
msql_selectdb -- выбирает базу данных mSQL
Описание
См.
msql_select_db()
.
msql_tablename
msql_tablename -- получает название таблицы п=конкретного поля
Описание
string msql_tablename
(int query_identifier, int field);
msql_tablename() использует в качестве аргументов указатель на
рузультат, возвращаемый функцией
msql_list_tables()
и целый индекс и возвращает название таблицы.
Функция
msql_numrows()
может быть использована для определения количества таблиц
в результате запроса.
Пример 1. Использование msql_tablename()
<?php
msql_connect ("localhost");
$result = msql_list_tables("wisconsin");
$i = 0;
while ($i < msql_numrows($result)) {
$tb_names[$i] = msql_tablename($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?>
|
Назад, к содержанию
Функции MySQL
Содержание:mysql_affected_rowsmysql_closemysql_connectmysql_create_dbmysql_data_seekmysql_db_querymysql_drop_dbmysql_errnomysql_errormysql_fetch_arraymysql_fetch_fieldmysql_fetch_lengthsmysql_fetch_objectmysql_fetch_rowmysql_field_namemysql_field_seekmysql_field_tablemysql_field_typemysql_field_flagsmysql_field_lenmysql_free_resultmysql_insert_idmysql_list_fieldsmysql_list_dbsmysql_list_tablesmysql_num_fieldsmysql_num_rowsmysql_pconnectmysql_querymysql_resultmysql_select_dbmysql_tablename
Эти функции обеспечивают доступ к серверам баз данных MySQL.
Больше информации о MySQL можно найти на сайте http://www.mysql.com/.
mysql_affected_rowsmysql_affected_rows -- возвращает количество столбцов, использованных предыдущими MySQL операциями
Описаниеint mysql_affected_rows(int [link_identifier]
);
mysql_affected_rows() возвращает количество столбцов, использованных запросами INSERT, UPDATE или DELETE на сервере, связываемом с определенным идентификатором связи(link_identifier). Если идентификатор связи не определен, используется последняя открытая связь.
Если последний запрос был запрос DELETE без условия WHERE, ВСЕ записи будут удалены из таблицы, но эта функция возвратит нуль.
Эта команда не действует при запросе SELECT, она действует только при запросах, изменяющих записи. Чтобы получить количество колонок возвращенных на запрос SELECT, используйте mysql_num_rows().
mysql_closemysql_close -- закрывает MySQL соединение
Описаниеint mysql_close(int [link_identifier]
); Возвращает: true при успешном завершении, false при ошибке
mysql_close() закрывает связь с базой данных MySQL, ассоциированной с определенным идентификатором связи(link identifier.
Если идентификатор связи не определен, используется последняя открытая связь.
Имейте в виду, что это не всегда необходимо, так как непостоянные открытые связи автоматически закрываются в конце выполнения сценария.
mysql_close() не закроет устойчивые связи сгенерированные функцией mysql_pconnect().
См. также: mysql_connect(), и
mysql_pconnect().
mysql_connectmysql_connect -- открывает соединение с MySQL сервером
Описаниеint mysql_connect(string [hostname]
[:port]
, string [username]
, string [password]
);
Возвращает: Правильный идентификатор связи MySQL при успешном выполнении, или false при ошибке.
mysql_connect() устанавливает соединение с MySQL сервером. Все аргументы дополнительны(опциональны), и если они пропущены, то устанавливаются по умолчанию -('localhost', имя пользователя, который владеет процессом, пустой пароль). Строка "имя сервера"("hostname") также может содержать номер порта( подобно "hostname:port").
В случае, если будет сделан второй вызов mysql_connect() с теми же аргументами, никакая новая связь не установится - вместо этого, будет возвращен идентификатор связи уже открытой связи.
Как только выполнение сценария закончится, связь с сервером закроется, если оно не было явно закрыто более ранний вызовом
mysql_close().
См. также mysql_pconnect(), и
mysql_close().
mysql_create_dbmysql_create_db -- Создает базу данных MySQL
Описаниеint mysql_create_db(string database name, int [link_identifier]
);
mysql_create_db() пытается создавать новую базу данных на сервере связанном с определенным идентификатором связи.
См. также: mysql_drop_db(). Для совместимости с более ранними версиями может также быть использована функция mysql_createdb() .
mysql_data_seekmysql_data_seek -- Перемещает внутренний указатель результата
Описаниеint mysql_data_seek(int result_identifier, int row_number);
Возвращает: true при успешном выполнении , false при ошибке.
mysql_data_seek() перемещает внутренний указатель столбца в MySQL запросе связанного с определенным идентификатором результата чтобы указать на определенный номер столбца. Последующий вызов mysql_fetch_row() должно возвратить этот столбец.
mysql_db_querymysql_db_query -- Посылает MySQL запрос
Описаниеint mysql_db_query(string database, string query, int [link_identifier]
);
Возвращает: Правильный идентификатор результата MySQL в результате запроса,
или false при ошибке .
mysql_db_query() выбирает базу данных и выполняет запрос на нее. Если дополнительный идентификатор связи не определен, функция попытается найти открытую связь с MySQL сервером и если такая связь не обнаружена, то она попытается создать ее, как если бы функция mysql_connect() была вызвана без аргументов.
См. также mysql_connect(). Для обратной совместимости может быть также использована функция mysql().
mysql_drop_dbmysql_drop_db -- удаляет базу данных MySQL
Описаниеint mysql_drop_db(string database_name, int [link_identifier]
);
Возвращает: true при успешном выполнении , false при неудачном завершении.
mysql_drop_db() пытается удалить целую базу данных с сервера, связанного с определенным идентификатором связи.
См. также: mysql_create_db(). Для обратной совместимости может быть также использована функция mysql_dropdb().
mysql_errnomysql_errno -- Возвращает номер сообщения об ошибке предыдущей операции MySQL
Описаниеint mysql_errno(int [link_identifier]
); Ошибки возвращающиеся с выходного буфера базы данных mySQL больше не делают предупреждение. Взамен, используйте эту функцию, чтобы получить номер ошибки.
<?php
mysql_connect("marliesle");
echo mysql_errno().": ".mysql_error()."<BR>";
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."<BR>";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."<BR>";
?>
См. также: mysql_error()
mysql_errormysql_error -- Возвращает текст сообщения об ошибке предыдущей операции MySQL
Описаниеstring mysql_error(int [link_identifier]
); Ошибки возвращающиеся с выходного буфера базы данных mySQL больше не делают предупреждение. Взамен, используйте эту функцию, чтобы получить строку описания ошибки.
<?php
mysql_connect("marliesle");
echo mysql_errno().": ".mysql_error()."<BR>";
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."<BR>";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."<BR>";
?>
См. также: mysql_errno()
mysql_fetch_arraymysql_fetch_array -- Выбрать результат как ассоциативный массив
Описаниеarray mysql_fetch_array(int result);
Возвращает результат строки запроса как массив, или false при отсутствии результата.
mysql_fetch_array() является расширенной версией функции
mysql_fetch_row(). Кроме того, что она сохраняет данные в пронумерованных элементах, результатного массива, она также сохраняет ассоциативную связь, используя имена полей как ключи.
Если два или более столбцов имеют одинаковые имена, то связку ключ/значение получает последний из них. Чтобы получить доступ к другому столбцу(-цам) с таким же именем, вы должны использовать индексы или задать псевдонимы(alias) для этих столбцов.
select t1.f1 as foo t2.f1 as bar from t1, t2
Важно заметить, что использование mysql_fetch_array() НЕСУЩЕСТВЕННО медленнее, чем использование mysql_fetch_row(), пока это обеспечивает необходимую задачу.
Более подробно см.
mysql_fetch_row()
Пример 1. mysql fetch array <?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_array($result)) {
echo $row["user_id"];
echo $row["fullname"];
}
mysql_free_result($result);
?> |
mysql_fetch_fieldmysql_fetch_field -- Получает информацию о столбце из результата и возвращает ее как объект.
Описаниеobject mysql_fetch_field(int result, int [field_offset]
); Возвращает объект, содержащий информацию о поле.
mysql_fetch_field() Может быть использована для получения информации о поле в определенном результате запроса. Если параметры поля не указаны, то будет запрошено поле, которое еще не было запрошено функцией mysql_fetch_field().
Свойствами объекта являются:
name - имя столбца
table - имя таблицы, содержащей столбец
max_length - максимальная длинна столбца
not_null - 1, если столбец не может принимать нулевые значения
primary_key - 1, если столбец является первичным ключом.
unique_key - 1 если столбец является уникальным ключом
multiple_key - 1 если столбец является не-уникальным ключом
numeric - 1 если столбец числовой
blob - 1 это столбец является BLOB
type - тип столбца
unsigned - 1 если столбец не назван
zerofill - 1 если столбец заполнен нулем
См. также mysql_field_seek()
mysql_fetch_lengthsmysql_fetch_lengths -- Получает максимальный размер данных для каждого выходного значения
Описаниеarray mysql_fetch_lengths(int result);
Возвращает: Массив, который соответствует длинам каждого поля в последней строке, выбранной
mysql_fetch_row(),
или false при ошибке .
mysql_fetch_lengths() хранит длины каждого столбца в последней колонке результата возвращенного функцией mysql_fetch_row() в массиве, нумеруемом с нуля.
См. также: mysql_fetch_row().
mysql_fetch_objectmysql_fetch_object -- Получает строку результата как объект.
Описаниеobject mysql_fetch_object(int result);
Возвращает объект с свойствами, который соответствует полученной строке, или false если нет результата.
mysql_fetch_object() подобна
mysql_fetch_array(), с одним различием - вместо массива возвращается объект.
Это означает, что Вы можете иметь доступ к данным только по именам полей, а не по их параметрам (индексные числа в данном случае являются неверным обращением).
Вообще говоря, эта функция идентична
mysql_fetch_array(), такая же быстрая как
mysql_fetch_row() (различие незначительное).
Пример 1. mysql fetch object <?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result($result);
?> |
См. также: mysql_fetch_array() и
mysql_fetch_row().
mysql_fetch_rowmysql_fetch_row -- Получите строку результата как пронумерованный массив
Описаниеarray mysql_fetch_row(int result);
Возвращает: Массив, который соответствует выбранным колонкам, или false
если нет результата.
mysql_fetch_row() выбирает столбец данных из результата, и связывает его с определенным идентификатором результата(индексом элемента массива). Запрос возвращается как массив. Каждый столбец результата хранится в элементах массива, пронумерованного с нуля.
Последующий вызов функции mysql_fetch_row() должен возвратить следующую строку, или false если нет больше колонок.
См. также: mysql_fetch_array(),
mysql_fetch_object(),
mysql_data_seek(),
mysql_fetch_lengths(), и
mysql_result().
mysql_field_namemysql_field_name -- Получает имя определенного поля в результате
Описаниеstring mysql_field_name(int result, int field_index); mysql_field_name() возвращает имя указанного поля. Аргументами функции являются идентификатор результата и индекс поля, т.е.
mysql_field_name($result,2);
Возвратит имя второй области в результат, связанный с идентификатором результата($result).
Для обратной совместимости также может быть использована функция mysql_fieldname().
mysql_field_seekmysql_field_seek -- Устанавливает указатель запроса в определенное поле.
Описаниеint mysql_field_seek(int result, int field_offset); Поиск в определенном поле. Если следующий вызов mysql_fetch_field() не содержит указания поля, то должно быть возвращено именно это поле.
См. также: mysql_fetch_field().
mysql_field_tablemysql_field_table -- Получает имя таблицы, в которой находится указанное поле.
Описаниеstring mysql_field_table(int result, int field_offset);
Получает имя таблицы поля. Для обратной совместимости также может быть использована mysql_fieldtable() .
mysql_field_typemysql_field_type -- Получает тип указанного поля в результате
Описаниеstring mysql_field_type(int result, int field_offset); mysql_field_type() подобна функции mysql_field_name() . Аргументы идентичны, но возвращается тип поля. Это будет что-то из "int", "real", "string", "blob", или другие типы, которые подробно описываются в документации MySQL.
Пример 1. mysql field types <?php
mysql_connect("localhost:3306");
mysql_select_db("wisconsin");
$result = mysql_query("SELECT * FROM onek");
$fields = mysql_num_fields($result);
$rows = mysql_num_rows($result);
$i = 0;
$table = mysql_field_table($result, $i);
echo "Your '".$table."' table has ".$fields." fields and ".$rows." records <BR>";
echo "The table has the following fields <BR>";
while ($i < $fields) {
$type = mysql_field_type ($result, $i);
$name = mysql_field_name ($result, $i);
$len = mysql_field_len ($result, $i);
$flags = mysql_field_flags ($result, $i);
echo $type." ".$name." ".$len." ".$flags."<BR>";
$i++;
}
mysql_close();
?> |
Для обратной совместимости mysql_fieldtype()
также может быть использована.
mysql_field_flagsmysql_field_flags -- Получает флаги, связанные с указанным полем в результате
Описаниеstring mysql_field_flags(int result, int field_offset);
mysql_field_flags() возвращает флаги указанного поля. Флаги передаются как одно слово на флаг, разделенные одним пробелом, так, что Вы можете разделить возвращенную величину используя explode().
Если ваша текущая версия MySQL их поддерживает, могут быть получены следующие флаги :
: "not_null", "primary_key",
"unique_key", "multiple_key", "blob", "unsigned", "zerofill",
"binary", "enum", "auto_increment", "timestamp".
Для обратной совместимости mysql_fieldflags() также может быть использована.
mysql_field_lenmysql_field_len -- Возвращает длину указанного поля
Описаниеint mysql_field_len(int result, int field_offset); mysql_field_len() возвращает длину указанного поля. Для обратной совместимости mysql_fieldlen() также может быть использована.
mysql_free_resultmysql_free_result -- Освобождает память результата
Описаниеint mysql_free_result(int result); mysql_free_result() должна быть использована только если Вы беспокоитесь об использовании слишком большого объема памяти, во время работы вашего скрипта. Вся используемая результатом память для определенного идентификатора результата автоматически будет освобождена.
Для обратной совместимости mysql_freeresult()
также может быть использована.
mysql_insert_idmysql_insert_id -- Получает id сгенерированный предыдущим выполнением SQL-запроса INSERT
Описаниеint mysql_insert_id(int [link_identifier]
);
mysql_insert_id() возвращает ID сгенерированнуые для поля с автоинкрементом(AUTO_INCREMENTED). Эта функция не использует аргументов. Она возвратит автоматически сгенерированный номер ID возвращенный последним запросом INSERT.
mysql_list_fieldsmysql_list_fields -- Показывает список полей MySQL в результате запроса
Описаниеint mysql_list_fields(string database_name, string table_name, int [link_identifier]
); mysql_list_fields() извлекает информацию о заданной tablename таблице. Аргументы - имя базы данных и имя таблицы. После выполнения возвращается указатель результата, который может использоваться функциями
mysql_field_flags(),
mysql_field_len(),
mysql_field_name(), и
mysql_field_type().
Идентификатор результата является положительным целым. Функция возвращает -1 если происходит ошибка. Строка описсания ошибки будет помещена в переменную $phperrmsg, и если функция не была вызвана как @mysql() то затем также будет выведено это описание ошибки.
Для обратной совместимости mysql_listfields()
также может быть использована.
mysql_list_dbsmysql_list_dbs -- Показывает список доступных Баз Данных на сервере
Описаниеint mysql_list_dbs(int [link_identifier]
); mysql_list_dbs() возвратит указатель результата, содержащий базы данных доступные текущему процессу mysql. Используйте функцию mysql_tablename(), чтобы просмотреть этот указатель результата.
Для обратной совместимости mysql_listdbs() также может быть использована.
mysql_list_tablesmysql_list_tables -- Показывает список таблиц в базе данных MySQL
Описаниеint mysql_list_tables(string database, int [link_identifier]
);
mysql_list_tables() берет имя базы данных и указатель результата очень подобно функции mysql_db_query(). Функция mysql_tablename() должна использоваться, чтобы извлечь фактические имена таблиц с указателя результата.
Для обратной совместимости mysql_listtables()
также может быть использована.
mysql_num_fieldsmysql_num_fields -- Получает количество полей в результате.
Описаниеint mysql_num_fields(int result);
mysql_num_fields() получает количество полей в установленном результате.
См. также:
mysql_db_query(),
mysql_query(),
mysql_fetch_field(),
mysql_num_rows().
Для обратной совместимости mysql_numfields()
также может быть использована.
mysql_num_rowsmysql_num_rows -- Получает количество столбцов в результате
Описание:int mysql_num_rows(int result); mysql_num_rows() получает количество столбцов в установленном результате
См. также:
mysql_db_query(),
mysql_query() и,
mysql_fetch_row().
Для обратной совместимости mysql_numrows() также может быть использована.
mysql_pconnectmysql_pconnect -- Открывает устойчивое соединение с MySQL-сервером
Описаниеint mysql_pconnect(string [hostname]
[:port]
, string [username]
, string [password]
);
Возвращает: Правильный MySQL идентификатор устойчивой связи при успешном выполнении ,
или false при ошибке.
mysql_pconnect() действует очень похоже на
mysql_connect() с двумя важными различиями.
Во-первых, при соединении, функция должна сначала попытаться найти (устойчивую) связь, которая уже открыта тем же хостом, именем пользователя и паролем. Если она обнаруживается, возвратится ее идентификатор, вместо открытия нового соединения.
Во-вторых, соединение с сервером SQL не закроется, когда закончится выполнение сценария. Вместо этого, связь останется открытой для последующего использования (mysql_close() не закроет связи установленные функцией mysql_pconnect()).
Потому этот тип связей назван 'устойчивый'.
mysql_querymysql_query -- Отправляет SQL-запрос на MySQL
Описаниеint mysql_query(string query, int [link_identifier]
);
mysql_query() посылает запрос в базу данных, к настоящему времени активную на сервере, который связан с определенным идентификатором связи. Если link_identifier не указан, используется последняя открытая связь. Если связь не открыта, функция пытается установить связь, как если бы была вызвана функция mysql_connect() и использует ее.
Эта функция возвращает TRUE или FALSE чтобы показать успешность выполнения запросов UPDATE, INSERT, и DELETE. При запросе SELECT она возвращает новый идентификатор результата. Ресурсы, использованные запросом затем могут быть освобождены вызовом функции mysql_free_result().
См. также:
mysql_db_query(),
mysql_select_db(), и
mysql_connect().
mysql_resultmysql_result -- Получает данные результата
Описаниеint mysql_result(int result, int row, mixed field); mysql_result() возвращает содержимое одной ячейки из установленного результата MySQL. Аргументом поля может быть номер или имя поля, или параметр типа имя_таблицы-точка-имя_поля(fieldname.tablename).
Если имя столбца заменено псевдонимом('select foo as bar from...'), используйте псевдоним вместо имени столбца.
Работая с больших результатами, Вы должны предусматривать использование одной из функций, которые выбирают целую строку(указано ниже)
За счет того, что эти функции возвращают содержимое большого числа ячеек за один вызов функции, они ЗНАЧИТЕЛЬНО более быстрые чем mysql_result(). Также, имейте в виду, что определение аргумента поля числовым параметром, значительно более быстрое чем определение имени поля(fieldname) или использование аргумента tablename.fieldname.
Вызов mysql_result() не должен смешиваться с вызовами других функций, которые имеют дело с установленным результатом.
Рекомендуемые быстродействующие альтернативы:
mysql_fetch_row(),
mysql_fetch_array(), и
mysql_fetch_object().
mysql_select_dbmysql_select_db -- Выбирает Базу Данных MySQL
Описаниеint mysql_select_db(string database_name, int [link_identifier]
);
Возвращает: true при успешном выполнении , false при ошибке
mysql_select_db() устанавливает текущую активную базу данных в сервере, которая связывается с определенным идентификатором связи. Если не определен идентификатор связи, принимается последняя открытая связь.
Если связь не открыта, функция попытается установить связь, как если бы была вызвана функция mysql_connect().
Каждый последующий вызов mysql_query() будет произведен в активной базе данных.
См. также:
mysql_connect(),
mysql_pconnect(), и
mysql_query()
Для обратной совместимости mysql_selectdb()
также может быть использована.
mysql_tablenamemysql_tablename -- Получает имя таблицы, содержащей указанное поле.
Описаниеstring mysql_tablename(int result, int i);
mysql_tablename() берет указатель результата возвращенный функцией
mysql_list_tables() а также
целочисленный индекс и возвращает имя таблицы. Функция mysql_num_rows() может использоваться для того, чтобы определить количество таблиц на данном указателе результата.
Пример 1. mysql_tablename() example <?php
mysql_connect ("localhost:3306");
$result = mysql_listtables ("wisconsin");
$i = 0;
while ($i < mysql_num_rows ($result)) {
$tb_names[$i] = mysql_tablename ($result, $i);
echo $tb_names[$i] . "<BR>";
$i++;
}
?> |
Назад, к содержанию
Функции для работы с Sybase
Содержание
sybase_affected_rows
sybase_close
sybase_connect
sybase_data_seek
sybase_fetch_array
sybase_fetch_field
sybase_fetch_object
sybase_fetch_row
sybase_field_seek
sybase_free_result
sybase_num_fields
sybase_num_rows
sybase_pconnect
sybase_query
sybase_result
sybase_select_db
sybase_affected_rows
sybase_affected_rows -- возвращает число
строк, измененных последним запросом
Описание
int sybase_affected_rows(int [link_identifier] );
Возвращает: Число строк,измененных
последним запросом.
Функция sybase_affected_rows()
возвращает число строк,
участвовавших в запросе вида INSERT,
UPDATE или DELETE к серверу, указанному с
помощью идентификтора соединения
(link_identifier). Если идентификатор не
задан, используется соединение,
открытое последним.
Эта команда работает только с
операторами, изменяющими записи.
Для получения числа записей,
возвращаемых оператором SELECT
следует использовать функцию sybase_num_rows().
sybase_close
sybase_close -- завершает соединение с
Sybase
Описание
int sybase_close(int link_identifier);
возвращет: true - в случае успеха, false
- в случае ошибки
Функция sybase_close() завершает
соединение с базой данных Sybase,
обозначенное с помощью
идентификатора соединения. Если он
не указан, используется соединение,
открытое последним.
Отметим, что вызов этой функции не
является обязательным, т.к.
временные соединения закрываются
автоматически после окончания
выполнения скрипта.
Функция sybase_close() не завершает
постоянные соединения, открытые с
помощью sybase_pconnect().
Смотри также: sybase_connect(),
sybase_pconnect().
sybase_connect
sybase_connect -- устанавливает
соединение с Sybase - сервером
Описание
int sybase_connect(string servername, string
username, string password);
Возвращает: В случае успеха:
идентификатор соединения
(положительное число), в противном
случае - false.
Функция sybase_connect() устанавливает
соединение с Sybase-сервером. Параметр
'servername' должен содержать
существующее имя сервера,
определенное в файле 'interfaces'.
Если функция sybase_connect() будет
вызвана повторно с теми же
параметрами, то новое соединение не
установится, а будет возвращен
идентификатор уже открытого
соединения.
Соединение с сервером будет
закрыто после завершения скрипта
или раньше, посредством явного
вызова функции sybase_close().
Смотри также: sybase_pconnect(),
sybase_close().
sybase_data_seek
sybase_data_seek -- перемещает внутренний
указатель записей
Описание
int sybase_data_seek(int result_identifier, int
row_number);
Возвращает: true -в случае успеха,
иначе - false
Функция sybase_data_seek() перемещает
внутренний указатель в
результирующем наборе записей,
заданном с помощью идентификатора
result_identifier, на строку с номером
row_number. При последующем вызове
функции sybase_fetch_row()
будет извлечена эта строка.
Смотри также: sybase_data_seek().
sybase_fetch_array
sybase_fetch_array -- извлекает строку в
виде массива
Описание
int sybase_fetch_array(int result);
Возвращает: Массив, содержащий
извлеченную из набора данных
строку или false - если строк больше
нет.
Функция sybase_fetch_array() является
расширенной версией функции sybase_fetch_row().
Доступ к элементам массива
возможен не только по номерам , но и
по именам столбцов таблицы.
Необходимо отметить, что функция
sybase_fetch_array() работат НЕ намного
МЕДЛЕННЕЕ, чем sybase_fetch_row(), и
предоставляет дополнительные
возможности по сравнению с
последней.
Подробнее смотри также sybase_fetch_row()
sybase_fetch_field
sybase_fetch_field --получает информацию о
столбце из набора данных
Description
object sybase_fetch_field(int result, int
field_offset);
Возвращает объект, содержащий
информацию о столбце
Функцию sybase_fetch_field() можно
использовать для получения данных
о столбцах результирующего набора
result. Если смещение (номер) столбца в
таблице (field_offset) не указано, то при
каждом вызове sybase_fetch_field() будет
извлекаться информация о следующем
по порядку столбце.
Свойства объекта:
name - имя столбца. Если столбец
является вычслимым, то это
свойство принимает значение
computed#N, где #N - это порядковый
номер;
column_source - таблица, которой
принадлежит данный столбец;
max_length - максимальная длина
столбца;
numeric - 1, если столбец - числовой;
Смотри также sybase_field_seek()
sybase_fetch_object
sybase_fetch_object --извлекает строку в
виде объекта
Описание
int sybase_fetch_object(int result);
Возвращает: Объект, свойства
которого соответствуют
извлеченной из набора данных
строке, или false - если сторк больше
нет.
Функция sybase_fetch_object() аналогична sybase_fetch_array()
за одним исключением - она
возвращает объект, а не массив.
Фактически это означает, что доступ
к данным осществляется по именам
столбцов, а не по их смещению в
строке (числовые значения не могут
быть именами свойств).
С точки зрения скорости
выполнения эта функция идентична sybase_fetch_array(),
и работает практически также
быстро, как и sybase_fetch_row()
(разница в скорости незначительна).
Смотри также: sybase_fetch-array()
и sybase_fetch-row().
sybase_fetch_row
sybase_fetch_row -- получает строку в виде
пронумерованного массива
Описание
array sybase_fetch_row(int result);
Возвращает: Массив,
соответствующий извлеченной
строку, или false - если строк больше
нет.
Функция sybase_fetch_row() извлекает
строку данных из результирующего
набора, заданного идентификатором
result .Строка возвращается в виде
массива. Каждый столбец хранится в
виде элемента массива. Нумерация
элементов начинается с 0.
Последующий вызов функции
sybase_fetch_rows() вернет следующую строку
запроса, или false, если строк больше
нет.
Смотри также: sybase_fetch_array(),
sybase_fetch_object(),
sybase_data_seek(),
sybase_fetch_lengths() и sybase_result().
sybase_field_seek
sybase_field_seek -- указывает смещение
(номер) столбца в строке
Описание
int sybase_field_seek(int result, int
field_offset);
Переходит к указанному столбцу.
Если при следующем вызове sybase_fetch_field()
не будет указан конкретный номер
столбца, то будет возвращен этот
столбец.
Смотри также: sybase_fetch_field().
sybase_free_result
sybase_free_result --освобождает память,
занятую результирующим набором
данных
Описание
int sybase_free_result(int result);
Функцию sybase_free_result() следует
вызывать, только если вы хотите
уменьшить объем используемой
памяти во время выполнения скрипта.
Все занимаемая память будет
автоматически освобождена после
завершения скрипта. Вы можете
вызвать sybase_free_result() с
идентификатором result в качестве
параметра, и содержащая результаты
выполнения этого запроса память
будет освобождена.
sybase_num_fields
sybase_num_fields -- получает число
столбцов в результирующем наборе
данных
Описание
int sybase_num_fields(int result);
sybase_num_fields() возвращает число
столбцов в результирующем наборе
Смотри также: sybase_db_query(), sybase_query(), sybase_fetch_field(),
sybase_num_rows().
sybase_num_rows
sybase_num_rows -- получает число
столбцов в результирующем наборе
данных
Описание
int sybase_num_rows(string result);
sybase_num_rows() rвозвращает число строк
в результирующем наборе
Смотри также: sybase_db_query(), sybase_query() и sybase_fetch_row().
sybase_pconnect
sybase_pconnect -- открывает постоянное
соединение с Sybase-сервером
Описание
int sybase_pconnect(string servername, string
username, string password);
Возвращает: Идентификатор
соединения с Sybase-сервером
(положительное число) или false в
случае ошибки
Функция sybase_pconnect() выполняется
практически аналогично sybase_connect() с
двумя главными отличиями:
Во-первых, при установлении
соединения функция сначала
пытается найти уже открытое
(постоянное) соединение,
использующее те же имена хоста,
пользователя и пароль. Если такое
соединение уже существует, то
возвращается его идентификатор, и
новое соединение не
устанавливается.
Во-вторых, соединение с
SQL-сервером не завершается после
выполнения скрипта. Вместо этого,
оно остается открытым для
последующего использования.
(Функция sybase_close()
не закрывает соединения,
установленные с помощью sybase_pconnect()).
Поэтому этот тип соединений
называется 'постоянным'.
sybase_query
sybase_query -- посылает запрос на
Sybase-сервер
Описание
int sybase_query(string query, int
link_identifier);
Возвращает: в случае успеха-
идентификатор результирующего
набора данных (положительное
число), или false- в случае ошибки.
Функция sybase_query() посылает запрос к
текущей открытой базе данных на
сервере, заданном иденитификатором
link_identifier. Если этот идентификатор
не указан, то используется
соединение, открытое последним.
Если нет ни одного соединения, то
функция пытается установить новое (
как если бы была вызвана sybase_connect()),
и затем его использовать.
Смотри также: sybase_db_query(), sybase_select_db()
и sybase_connect().
sybase_result
sybase_result --получает результирующие
данные
Описание
int sybase_result(int result, int i, mixed
field);
Возвращает: Содержимое ячейки
данных на пересечении указанных
строки и столбца из заданного
результирующего набора данных Sybase.
Функция sybase_result() возвращает
содержимое одной ячейки данных из
результирующего набора Sybase. В
качестве параметра field может быть
указано смещение (номер) столбца,
его имя или имя столбца и имя
таблицы, указанные через точку.
(имя_столбца.имя_таблицы). Если для
столбца был указан псевдоним ('select
foo as bar from...'), то вместо имени столбца
следует использовать этот
псевдоним.
При работе с большими наборами
данных следует использовать
функции (перечисленные ниже),
которые извлекают из таблицы всю
строку целиком. Поскольку эти
функции за один вызов возвращают
несколько ячеек данных, они
работают ГОРАЗДО быстрее, чем
sybase_result(). Кроме того, надо отметить,
что скорость выполнения будет
гораздо выше, если указывать
числовое смещение столбца, а не
параметр вида
имя_столбца.имя_таблицы.
Рекомендуемые
высокопроизводительные
альтернативные функции: sybase_fetch_row(), sybase_fetch_array()
и sybase_fetch_object().
sybase_select_db
sybase_select_db -- выбирает базу данных
Sybase
Описание
int sybase_select_db(string database_name, int
link_identifier);
Возвращает: true - в случае успеха,
false - в случае ошибки
Функция sybase_select_db() устаналивает
активную базу данных на сервере,
заданном идентификатором link_identifier.
Если это идентификатор не указан,
то используется соединение,
открытое последним. Если нет
открытых соединений, то функция
попытается установить новое (как
если бы была вызвана sybase_connect()) и
затем его использовать.
Все последующие вызовы sybase_query()
будут работать с данной активной
базой данных.
Смотри также: sybase_connect(),
sybase_pconnect()
и sybase_query()
Назад, к содержанию
Сетевые функции
Содержание
fsockopen
set_socket_blocking
gethostbyaddr
gethostbyname
gethostbynamel
checkdnsrr
getmxrr
openlog
syslog
closelog
debugger_on
debugger_off
fsockopen
fsockopen -- Открывает соединение с узлом в Интернете или Unix-системой через socket .
Описание
int fsockopen(string hostname, int port, int [errno], string [errstr]);
Открывает сокетное соединение с доменом Internet по адресу
hostname
на порт port
и возвращает файловый указатель, который может использоваться функциями fgets(),
fgetss()
,
fputs()
, и
fclose()
. Если вызов завершается неудачей, он возвращает FALSE и если указаны дополнительные аргументы
errno
и
errstr
, то они будут использованы, чтобы указать фактическую системную ошибку,
которая случилась на системном уровне при вызове connect(). Если возвращенное errno - 0, но функция вернула FALSE, это - признак того, что ошибка произошла перед вызовом connect(). Это наиболее вероятно, из-за проблемы инициализации сокета. Имейте в виду, что аргументы errno и errstr необязательно должны упоминаться.
Если
port
- 0 и ОС поддерживает доменные сокеты Unix (domain sockets),
hostname будет использован для подключения в качестве filename доменного сокета Unix.
По умолчанию сокет откроется в режиме blocking mode. Вы можете переключить его в non-blocking mode используя
set_socket_blocking().
Пример 1. fsockopen example
$fp = fsockopen("www.php.net", 80, &$errno, &$errstr);
if(!$fp) {
echo "$errstr ($errno)<br>n";
} else {
fputs($fp,"GET / HTTP/1.0nn");
while(!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
|
set_socket_blocking
set_socket_blocking -- Устанавливает blocking/non-blocking режимы работы сокета
Описание
int set_socket_blocking(int socket descriptor, int mode);
Если
mode
отсутствует, данный дескриптор сокета переключится на non-blocking режим, а если присутствует, то переключится на blocking режим.
Это влияет на вызовы типа
fgets(), который читает из сокета. В non-blocking режиме fgets() вызов всегда будет возвращаться немедленно, в то время как в blocking режиме он ждет данные, чтобы стать доступным на сокете.
gethostbyaddr
gethostbyaddr -- Получает имя хоста Internet, соответствующее данному IP-адресу.
Описание
string gethostbyaddr(string ip_address);
Возвращает имя хоста Internet определенного аргументом
ip_address . Если происходит ошибка, возвращается
ip_address
.
См. также
gethostbyname()
.
gethostbyname
gethostbyname -- Получает IP-адрес, соответствующий заданному имени хоста Интернет
Описание
string gethostbyname(string hostname);
Возвращает IP-адрес хоста, указанного аргументом
hostname
.
См. также
gethostbyaddr()
.
gethostbynamel
gethostbynamel -- Получает список IP-адресов, соответствующих заданному имени хоста Интернет.
Описание
array gethostbynamel(string hostname);
Возвращает список IP-адресов на которых разрешен хост Internet, указанный аргументом hostname.
См. также
gethostbyname()
,
gethostbyaddr()
,
checkdnsrr()
,
getmxrr()
checkdnsrr
checkdnsrr -- Проверяет записи DNS, соответствующие заданному хосту или IP-адресу
Описание
int checkdnsrr(string host, string [type]);
Ищет в DNS записи типа
type, соответствующие аргументу
host. Возвращает true, если обнаруживаются какие-либо записи ; Возвращает false, если не обнаружены никакие записи или если произошла ошибка.
type
может быть любым из значений: A, MX, NS, SOA,
PTR, CNAME, или ANY. По умолчанию - MX.
host
может или быть адресом IP или именем хоста.
См. также
getmxrr()
,
gethostbyaddr()
,
gethostbyname()
,
gethostbynamel()
getmxrr
getmxrr -- Получает MX записи, соответствующие заданному имени хоста.
Описание
int getmxrr(string hostname, array mxhosts, array [weight]);
Ищет в DNS MX-записи, соответствующие
hostname. Возвращает true если записи найдены; возвращает false если записей не найдено или произошла ошибка.
Список MX-записей может размещаться в массиве
mxhosts.
Если задано weight массива, то он может быть заполнен собранной информацией.
См. также
checkdnsrr()
,
gethostbyname()
,
gethostbynamel()
,
gethostbyaddr()
openlog
openlog -- открывает соединение к системным логам (system logger)
Описание
int openlog(string ident, int option, int facility);
openlog() открывает для программы соединение c system logger . Строка ident добавляется к каждому сообщению. Значение для option и facility даются в следующем разделе. Использование openlog() не обязательно; Это может быть автоматически вызвано вызовом
syslog() если необходимо, в этом случае ident по умолчанию будет false.
См. также
syslog()
и
closelog()
.
syslog
syslog -- генерирует системное регистрационное сообщение
Описание
int syslog(int priority, string message);
syslog() генерирует регистрационное сообщение, для system logger.
priority
- комбинация легкости и уровня, значения для которых даются в следующем разделе. А другой аргумент является отсылаемым сообщением, кроме того, два символа %m заменятся строкой сообщения ошибки (strerror) соответствующей значению errno.
Больше информации о средствах syslog можно обнаружить на man-страницах для syslog в Unix-системах.
В WindowsNT, сервис syslog эмулируется использованием Event Log.
closelog
closelog -- закрывает соединение с system logger
Описание
int closelog(void);
closelog() закрывает дескриптор, используемый для записи в system logger. Использование closelog() необязательно.
debugger_on
debugger_on -- Разрешает внутренний PHP отладчик
Описание
int debugger_on(string address);
Разрешает внутренний PHP отладчик, соединяя его на
address
. Отладчик находится в стадии разработки.
debugger_off
debugger_off -- запрещает внутренний PHP отладчик
Описание
int debugger_off(void);
Запрещает внутренний PHP отладчик. Отладчик находится в стадии разработки.
Назад, к содержанию
Функции ODBC
Содержание
odbc_autocommit
odbc_binmode
odbc_close
odbc_close_all
odbc_commit
odbc_connect
odbc_cursor
odbc_do
odbc_exec
odbc_execute
odbc_fetch_into
odbc_fetch_row
odbc_field_name
odbc_field_type
odbc_field_len
odbc_free_result
odbc_longreadlen
odbc_num_fields
odbc_pconnect
odbc_prepare
odbc_num_rows
odbc_result
odbc_result_all
odbc_rollback
odbc_autocommit
odbc_autocommit -- Переключает режим автофиксирования (auto-commit)
Описание
int odbc_autocommit
(int connection_id, int [
OnOff
]);
Без параметра
OnOff
эта функция возвращает статус автофиксирования для
connection_id
. True возвращается, если автофиксирование включено,
false если оно выключено или если произошли ошибки.
Если параметр
OnOff
установлен в true, то автофиксирование включено, если параметр установлен в ложь,
то автофиксирование отключено.
True
возвращается при успешном завершении,
false
- при ошибке.
По умолчанию автофиксирование включено для соединения.
Отключение автофиксирования эквивалентно началу транзакции.
См. также
odbc_commit()
и
odbc_rollback()
.
odbc_binmode
odbc_binmode -- обработка двоичных данных
Описание
int odbc_binmode
(int result_id, int mode);
(ODBC SQL types affected: BINARY, VARBINARY, LONGVARBINARY)
ODBC_BINMODE_PASSTHRU: Передает двоичные данные
ODBC_BINMODE_RETURN: Возвращает как есть
ODBC_BINMODE_CONVERT: Конвертирует в символьный вид и возвращает значение
Когда двоичные данные SQL конвертируются в символьные данные C, каждый байт
(8 битов) исходных данных представляется как два ASCII символа.
Эти символы являются ASCII-представлением числа в шестнадцатиричной форме.
Например, двоичное 00000001 конвертируется в
"01"
и двоичное 11111111 конвертируется в
"FF"
.
Таблица 1. Обработка данных типа LONGVARBINARY
binmode
longreadlen
результат
ODBC_BINMODE_PASSTHRU |
0 |
передает |
ODBC_BINMODE_RETURN |
0 |
передает |
ODBC_BINMODE_CONVERT |
0 |
передает |
ODBC_BINMODE_PASSTHRU |
0 |
передает |
ODBC_BINMODE_PASSTHRU |
>0 |
передает |
ODBC_BINMODE_RETURN |
>0 |
возвращает как есть |
ODBC_BINMODE_CONVERT |
>0 |
возвращает как символ |
Если была использована функция
odbc_fetch_into()
, то передача означает, что для этих полей будет возвращена пустая строка.
Если
result_id
равен
0
, то установки принимаются по умолчанию для новых результатов.
Замечание:
По умолчанию для longreadlen установлено
4096
и binmode по умолчанию -
ODBC_BINMODE_RETURN
. Обработка двоичных данных типа LONG также осуществляется
odbc_longreadlen()
odbc_close
odbc_close -- Закрывает ODBC-соединение
Описание
void odbc_close
(int connection_id);
odbc_close()
закрывает соединение с сервером баз данных, связанное с указанным идентификатором соединения.
Замечание:
Эта функция выдаст ошибку, если у этого соединения есть запущенные транзакции.
Соединение останется открытым в этом случае.
odbc_close_all
odbc_close_all -- Закрывает все ODBC-соединения
Описание
void odbc_close_all
(void);
odbc_close_all()
закрывает все соединения с сервером(серверами) баз данных.
Замечание:
Эта функция выдаст ошибку, если у этих соединений есть незавершенные транзакции.
В этом случае соединения останутся открытыми.
odbc_commit
odbc_commit -- Фиксирует транзакцию ODBC
Описание
int odbc_commit
(int connection_id);
Возвращает:
true
при успехе,
false
при ошибке.
Все незаконченные транзакции на
connection_id
фиксируются.
odbc_connect
odbc_connect -- Соединяет с источником данных
Описание
int odbc_connect
(string dsn, string user, string password);
возвращает идентификатор ODBC-соединения или 0 (
false
) при ошибке.
Идентификатор соединения, возвращаемый этой функцией, запрашивается другими
ODBC функциями. Вы можете иметь несколько соединений открытых одновременно.
Для постоянных соединений см.
odbc_pconnect()
.
odbc_cursor
odbc_cursor -- Получает имя курсора
Описание
string odbc_cursor
(int result_id);
odbc_cursor возвращает имя курсора для указанного result_id.
odbc_do
odbc_do -- совпадает с
odbc_exec()
Описание
string odbc_do
(int conn_id, string query);
odbc_do запускает запрос на указанном соединении
odbc_exec
odbc_exec -- Подготовка и запуск SQL-запроса
Описание
int odbc_exec
(int connection_id, string query_string);
Возвращает
false
при ошибке. Возвращает ODBC-идентификатор результата,
если SQL команда была запущена успешно.
odbc_exec()
посылает SQL-запрос серверу баз данных, определенному параметром
connection_id
. Этот параметр должен быть правильным идентификатором, возвращенным функцией
odbc_connect()
or
odbc_pconnect()
.
См. также:
odbc_prepare()
and
odbc_execute()
для многократных запусков SQL-запросов.
odbc_execute
odbc_execute -- запускает подготовленный SQL-запрос
Описание
int odbc_execute
(int result_id, array
[
parameters_array
]);
Запускает SQL-запрос, подготовленный функцией
odbc_prepare()
. Возвращает
true
при успешном запуске,
false
о обратном случае. Массив
arameters_array
необходим только если вы действительно имеете параметры в вашем SQL-запросе.
odbc_fetch_into
odbc_fetch_into -- Извлекает одну строку результата в массив
Описание
int odbc_fetch_into
(int result_id, int [
rownumber
], array result_array);
Возвращает число столбцов в результате;
false
при ошибке.
result_array
может быть любого типа, так как он будет конвертирован в тип массив.
Массив будет содержать значения полей начиная с индекса 0 массива.
odbc_fetch_row
odbc_fetch_row -- Извлекает строку
Описание
int odbc_fetch_row
(int result_id, int [
row_number
]);
Если
odbc_fetch_row()
прошла успешно (строка существовала), то будет возвращено
true
. Если больше строк нет, то будет возвращеноfalse.
odbc_fetch_row()
Извлекает строку из данных, возвращенных функцией
odbc_do()
/
odbc_exec()
. После вызова
odbc_fetch_row()
, доступ к полям той строки может быть осуществлен с помощью функции
odbc_result()
.
Если параметр
row_number
не указан, то
odbc_fetch_row()
бедет пытаться извлечь следующую строку в результирующем наборе.
Вызов функции
odbc_fetch_row()
можно осуществлять как с, так и без параметра
row_number
.
Для использования результата более одного раза, вы можете вызвать
odbc_fetch_row()
с
row_number
1, и затем продолжить выполнять
odbc_fetch_row()
без
row_number
для просмотра результата. Если драйвер не поддерживает извлечение строк по номеру, то параметр
row_number
игонорируется.
odbc_field_name
odbc_field_name -- Возвращает имя столбца
Описание
string odbc_fieldname
(int result_id, int field_number);
odbc_field_name()
возвращает имя поля в соответствии с указанным номером столбца
в указанном ODBC-идентификаторе результата. Номера полей начинаются с 1.
false
возвращается при ошибке.
odbc_field_type
odbc_field_type -- тип данных поля
Описание
string odbc_field_type
(int result_id, int field_number);
odbc_field_type()
возвращает SQL тип поля в соответствии с номером в указанном ODBC-идентификаторе результата.
Номера полей начинаются с 1.
odbc_field_len
odbc_field_len -- возвращает длину поля
Описание
string odbc_field_type
(int result_id, int field_number);
odbc_field_type()
возвращает длину поля в соответствии с номером в указанном ODBC-идентификаторе
результата. Номера строк начинаются с 1.
odbc_free_result
odbc_free_result -- освобождает ресурсы, связанные с результатом
Описание
int odbc_free_result
(int result_id);
Всегда возвращает
true.
odbc_free_result()
необходимо вызывать только если вы беспокоитесь об использовании большого количества
памяти во время запуска вашего скрипта. Вся память результата будет автоматически
освобождена при завершении скрипта. Но, если вы уверены, что больше нигде в скрипте не будете
использовать данные результата, то вы можете вызвать
odbc_free_result()
, и память, связанная с параметром
result_id
будет освобождена.
Замечание:
Если автофиксирование отключено (см.
odbc_autocommit()
) вы можете вызвать
odbc_free_result()
и перед фиксированием все незавершенные транзакции будут откатаны назад.
odbc_longreadlen
odbc_longreadlen -- обработка полей типа LONG
Описание
int odbc_longreadlen
(int result_id, int length);
(Обрабатываемые ODBC SQL типы : LONG, LONGVARBINARY)
Число байтов, возвращенных PHP, контролируется длиной параметра.
Если она установлена в 0, то данные типа Long передаются клиенту.
Замечание:
Обработка полей типа LONGVARBINARY также осуществляется
odbc_binmode()
odbc_num_fields
odbc_num_fields -- число столбцов в результате
Описание
int odbc_num_fields
(int result_id);
odbc_num_fields()
возвращает число полей (столбцов) в результате ODBC. Эта функция
вернет -1 при ошибке. Аргумент является правильным результирующим идентификатором,
возвращенным
odbc_exec()
.
odbc_pconnect
odbc_pconnect -- Открывает постоянное соединение с базой данных
Описание
int odbc_pconnect
(string dsn, string user, string password);
Возвращает идентификатор ODBC соединения или 0 (
false
) при ошибке. Эта функция очень похожа на
odbc_connect()
, кроме того, что соединение в действительности не закрывается после завершения скрипта.
Будующие запросы на соединение с той же комбинацией параметров
dsn
,
user
,
password
(через
odbc_connect()
и
odbc_pconnect()
) могут повторно использовать постоянное соединение.
Замечание:
Постоянные соединения не действуют, если PHP используется как CGI программа.
Для подробной информации о постоянных соединениях см. PHP3 FAQ.
odbc_prepare
odbc_prepare -- Подготавливает запрос для запуска
Описание
int odbc_prepare
(int connection_id, string query_string);
Возвращает false при ошибке.
Возвращает ODBC-идентификатор результата, если SQL команда
была подготовлена успешно. Идентификатор результата может быть использован
для последеющего запуска запроса с помощью
odbc_execute()
.
odbc_num_rows
odbc_num_rows -- Число строк в результате
Описание
int odbc_num_rows
(int result_id);
odbc_num_rows()
возвращает число строк в ODBC результате. Эта функция вернет -1 при ошибке.
Для команд INSERT, UPDATE и DELETE
odbc_num_rows()
вернет число обработанных строк. Для случая SELECT это
может
быть число доступных строк.
Замечание: Использование
odbc_num_rows()
для определения числа строк, доступных после SELECT вернет -1 у многих драйверов.
odbc_result
odbc_result -- получает результирующие данные
Описание
string odbc_result
(int result_id, mixed field);
Возвращает содержимое поля.
поле
может быть целым числом, содержащим номер столбца необходимого вам поля, или
оно может быть строкой, содержащей имя поля. Например:
$item_3 = odbc_result($Query_ID, 3 );
$item_val = odbc_result($Query_ID, "val");
Первый вызов
odbc_result()
вернет значение третьего поля в текущей записи результата запроса.
Второй вызов функции
odbc_result()
возвратит значение поля, имя которого "val" в текущей записи результата запроса.
Ошибка возникнет, если параметр номера столбца для поля меньше, чем один или более
номеров столбцов (или полей) в текущей записи. Так же ошибка возникнет, если запрашивается
поле с именем, не совпадающем с именами полей в запрашиваемой таблице (таблицах).
Номера полей начинаются с 1.
Field indices start from 1. Относительно способа возврата двоичных данных
и данных типа LONG см. функции
odbc_binmode
()
and
odbc_longreadlen()
.
odbc_result_all
odbc_result_all -- Выдача результата в виде HTML таблицы
Описание
int odbc_result_all
(int result_id, string [
format
]);
Возвращает число строк в результате или
false
при ошибке.
odbc_result_all()
выдает все строки из идентификатора результата, полученного от
odbc_exec()
. Результат выдается в формате HTML таблицы. С дополнительным строковым аргументом
format
, может быть осуществлено дополнительное форматирование таблицы.
odbc_rollback
odbc_rollback -- Откат транзакции
Описание
int odbc_rollback
(int connection_id);
Откатавает все незаконченные запросы на
connection_id
. Возвращает
true
при успехе,
false
при ошибке.
Назад, к содержанию
Функции PDF
Содержание
PDF_get_info
PDF_set_info_creator
PDF_set_info_title
PDF_set_info_subject
PDF_set_info_keywords
PDF_set_info_author
PDF_open
PDF_close
PDF_begin_page
PDF_end_page
PDF_show
PDF_show
PDF_set_font
PDF_set_leading
PDF_set_text_rendering
PDF_set_horiz_scaling
PDF_set_text_rise
PDF_set_text_matrix
PDF_set_text_pos
PDF_set_char_spacing
PDF_set_word_spacing
PDF_continue_text
PDF_stringwidth
PDF_save
PDF_restore
PDF_translate
PDF_scale
PDF_rotate
PDF_setflat
PDF_setlinejoin
PDF_setlinecap
PDF_setmiterlimit
PDF_setlinewidth
PDF_setdash
PDF_moveto
PDF_curveto
PDF_lineto
PDF_circle
PDF_arc
PDF_rect
PDF_closepath
PDF_stroke
PDF_closepath_stroke
PDF_fill
PDF_fill_stroke
PDF_closepath_fill_stroke
PDF_endpath
PDF_clip
PDF_setgray_fill
PDF_setgray_stroke
PDF_setgray
PDF_setrgbcolor_fill
PDF_setrgbcolor_stroke
PDF_setrgbcolor
PDF_add_outline
PDF_set_transition
PDF_set_duration
Вы можете использовать функции PDF для создания pdf файлов, если вы имеете
библиотеку PDF (доступную на
http://www.ifconnection.de/~tm/
) Томаса Мерза. Пожалуйста, используйте документацию для библиотеки pdflib,
поставляемой с исходным кодом или доступной на
http://www.ifconnection.de/~tm/software/pdflib/PDFlib-0.6.pdf
. Так как эта документация является не полной, документация библиотека pdflib
должна быть просмотрена в первую очередь. Функции в бибилотеке pdflib и в php3
имеют одинаковые имена. Параметры также идентичны. Вам следует также понимать некоторые
концепции pdf для еффективного применения этого модуля.
Модуль pdf использует два новых типа переменных. Они называются
pdfdoc
и
pdfinfo
.
PDF_get_info
PDF_get_info -- Возвращает обычную информационную структуру для pdf документа
Описание
info pdf_get_info
(string filename);
Функция
PDF_get_info()
возвращает обычную (принимаемую по умолчанию) информационную структуру для pdf документа.
Эта структура может быть заполнена различной информацией, такой как автор, название и т.д.
Пример 1. PDF_get_info
<?php $info = PDF_get_info();
PDF_set_info_creator($info, "Name of Author") ?>
|
См. также
PDF_set_info_creator()
,
PDF_set_info_subject()
.
PDF_set_info_creator
PDF_set_info_creator -- Заполняет поле создателя информационной структуры
Описание
void pdf_set_info_creator
(info info, string creator);
Функция
PDF_set_info_creator()
устанавливает создателя pdf документа. Она должна вызываться после
PDF_get_info()
и перед
PDF_open()
. Вызов функции после
PDF_open()
на даст никакого эффекта в документе.
Замечание:
Эта функция не является частью библиотеки pdf.
См. также
PDF_get_info()
,
PDF_set_info_subject()
.
PDF_set_info_title
PDF_set_info_title -- Заполняет поле заголовка информационной структуры
Описание
void pdf_set_info_title
(info info, string title);
Функция
PDF_set_info_title()
устанавливает заголовок pdf документа. Она должна вызываться после
PDF_get_info()
и перед
PDF_open()
. Вызов функции после
PDF_open()
не даст никакого эффекта в документе.
Примечание:
Эта функция не является частью библиотеки pdf.
См. также
PDF_get_info()
,
PDF_set_info_xxxxx()
.
PDF_set_info_subject
PDF_set_info_subject -- заполняет поле темы информационной структуры
Описание
void pdf_set_info_subject
(info info, string subject);
Функция
PDF_set_info_subject()
устанавливает тему pdf документа. Она должна вызываться после
PDF_get_info()
и перед
PDF_open()
. Вызов функции после
PDF_open()
не даст никакого эффекта в документе.
Замечание:
Эта функция не является частью библиотеки pdf.
См. также
PDF_get_info()
,
PDF_set_info_xxxxx()
.
PDF_set_info_keywords
PDF_set_info_keywords -- Заполняет поле ключевых слов информационной структуры
Описание
void pdf_set_info_keywords
(info info, string keywords);
Функция
PDF_set_info_keywords()
устанавливает ключевые слова pdf документа. Она должна вызываться после
PDF_get_info()
и перед
PDF_open()
. Вызов функции после
PDF_open()
не даст никакого эффекта в документе.
Замечание:
Эта функция не является частью библиотеки pdf.
См. также
PDF_get_info()
,
PDF_set_info_xxxxx()
.
PDF_set_info_author
PDF_set_info_author -- Заполняет поле автора информационной структуры
Описание
void pdf_set_info_author
(info info, string author);
Функция
PDF_set_info_author()
устанавливает автора pdf документа. Она должна вызываться после
PDF_get_info()
и перед
PDF_open()
. Вызов функции после
PDF_open()
не даст никакого эффекта в документе.
Замечание:
Эта функция не является частью библиотеки pdf.
См. также
PDF_get_info()
,
PDF_set_info_xxxxx()
.
PDF_open
PDF_open -- Открывает новый pdf документ
Описание
int pdf_open
(int descripterfile, int info);
Функция
PDF_set_info_author()
открывает новый pdf документ. Соответствующий файл должен быть открыт
функцией
fopen()
и дескриптор файла использоваться как аргумент
file
.
info
является информационной структурой, которая должна быть создана функцией
pdf_get_info()
.
Замечание:
Возвращаемое значение необходимо как первый параметр у всех функций
записи в pdf документ.
См. также
fopen()
,
PDF_get_info()
.
PDF_close
PDF_close -- Закрывает pdf документ
Описание
void pdf_close
(int pdf document);
Функция
PDF_close()
закрывает pdf документ
int
.
Замечание:
Функция не закроет файл. Вам неоходимо вызвать отдельно функцию
fclose()
после
pdf_close()
.
См. также
PDF_open()
,
fclose().
PDF_begin_page
PDF_begin_page -- начинает страницу
Описание
void pdf_begin_page
(int pdf document, double height, double width);
Функция
PDF_begin_page()
начинает новую страницу высотой
height
и шириной
width
.
См. также
PDF_end_page().
PDF_end_page
PDF_end_page -- завершает страницу
Описание
void pdf_end_page
(int pdf document);
Функция
PDF_end_page()
завершает страницу.
См. также
PDF_end_page()
.
PDF_show
PDF_show -- выводит текст в текущей позиции
Описание
void pdf_show
(int pdf document, string text);
Функция
PDF_show()
выводит строку
text
в текущей позиции.
См. также
PDF_show_xy()
,
PDF_set_text_pos()
.
PDF_show
PDF_show -- Выводит текст с определнной позиции
Описание
void pdf_show_xy
(int pdf document, string text, double x-koor, double y-koor);
Функция
PDF_show_xy()
выводит строку
text
в позиции с координатами (
x-koor
,
y-koor
).
См. также
PDF_show()
.
PDF_set_font
PDF_set_font -- Выбирает текущий шрифт и его размер
Описание
void pdf_set_font
(int pdf document, string font name, double size, string encoding);
Функция
PDF_set_font()
устанавливает текущий шрифт, его размер и кодировку. Вам потребуется указать
Adobe Font Metrics (afm-файлы) для шрифта в пути шрифта (по умолчанию ./fonts).
См. также
PDF_info()
.
PDF_set_leading
PDF_set_leading -- Устанавливает промежуток между строками текста
Описание
void pdf_set leading
(int pdf document, double distance);
Функция
PDF_set_leading()
устанавливает промежуток между строками текста. Он будет использоваться
при выводе текста функцией
PDF_continue_text()
.
См. также
PDF_continue_text()
.
PDF_set_text_rendering
PDF_set_text_rendering -- Определяет, как текст отрисовывается (рендеринг)
Описание
void pdf_set_text_rendering
(int pdf document, int mode);
Функция
PDF_set_text_rendering()
определяет, как текст отрисовывается. Возможные значения для параметра
mode
это 0=заливка текста, 1=контурный текст, 2=контурный текст с заливкой, 3=невидимый текст,
4=заливка текста и добавление его в контур обреза, 5=контурный текст с добалением в контур
обреза, 6=контурный текст с заливкой и с добавлением к контур обреза,
7=добавление текста в контур обреза.
PDF_set_horiz_scaling
PDF_set_horiz_scaling -- Устанавливает горизонтальное масштабирование текста
Описание
void pdf_set_horiz_scaling
(int pdf document, double scale);
Функция
PDF_set_horiz_scaling()
устанавливает горизонтальное масштабирование в
scale
процентов.
PDF_set_text_rise
PDF_set_text_rise -- Устанавливает увеличение текста
Описание
void pdf_set_text_rise
(int pdf document, double value);
Функция
PDF_set_text_rise()
устанавливает увеличение текста на
value
едениц.
PDF_set_text_matrix
PDF_set_text_matrix -- Устанавливает тестовую матрицу
Описание
void pdf_set_text_matrix
(int pdf document, array matrix);
Функция
PDF_set_text_matrix()
уставливает матрицу, которая описывает изменения, применяемые к
текущему шрифту текста.
PDF_set_text_pos
PDF_set_text_pos -- Устанавливает позицию текста
Описание
void pdf_set_text_pos
(int pdf document, double x-koor, double y-koor);
Функция
PDF_set_text_pos()
устанавливает позицию текста для следующего вызова функции
pdf_show()
.
См. также
PDF_show()
,
PDF_show_xy()
.
PDF_set_char_spacing
PDF_set_char_spacing -- Устанавливает межсимвольные промежутки
Описание
void pdf_set_char_spacing
(int pdf document, double space);
Функция
PDF_set_char_spacing()
устанавливает промежутки между символами.
См. также
PDF_set_word_spacing()
,
PDF_set_text_leading()
.
PDF_set_word_spacing
PDF_set_word_spacing -- Устанавливает промежутки между словами
Описание
void pdf_set_word_spacing
(int pdf document, double space);
Функция
PDF_set_word_spacing()
устанавливает промежутки между словами.
См. также
PDF_set_char_spacing()
,
PDF_set_text_leading()
.
PDF_continue_text
PDF_continue_text -- Выводит текст на следующей строке
Описание
void pdf_continue_text
(int pdf document, string text);
Функция
PDF_continue_text()
выводит строку из
text
на следующей строке.
См. также
PDF_show_xy()
,
PDF_set_text_leading()
,
PDF_set_text_pos()
.
PDF_stringwidth
PDF_stringwidth -- Возвращает ширину текста при текущем шрифте
Описание
double pdf_stringwidth
(int pdf document, string text);
Функция
PDF_stringwidth()
возвращает ширину строки в
text
. Этой функции необходим заранее установленный шрифт.
См. также
PDF_set_font()
.
PDF_save
PDF_save -- Сохраняет текущее окружение
Описание
void pdf_save
(int pdf document);
Функция
PDF_save()
сохраняет текущее окружение. Она работает как postscript-команда gsave.
Функция очень полезна при переводе или вращении объекта без затрагивания
других объектов.
См. также
PDF_restore()
.
PDF_restore
PDF_restore -- Восстанавливает сохраненное ранее окружение
Описание
void pdf_restore
(int pdf document);
Функция
PDF_restore()
восстанавливает окружение сохраненное функцией
PDF_save()
. Она работает postscript-команда grestore. Функция очень полезна при переводе или вращении
объекта без затрагивания других объектов.
Example 1. PDF_get_info
<?php PDF_save($pdf);
// делает все виды вращений, трансформаций...
PDF_restore($pdf) ?>
|
См. также
PDF_save()
.
PDF_translate
PDF_translate -- Устанавливает начало системы координат
Описание
void pdf_translate
(int pdf document, double x-koor, double y-koor);
Функция
PDF_translate()
устанавливает начало системы координат в точке (
x-koor
,
y-koor
).
PDF_scale
PDF_scale -- Устанавливает масштабирование
Описание
void pdf_scale
(int pdf document, double x-scale, double y-scale);
Функция
PDF_scale()
устанавливает масштабный коэффициент для обоих осей.
PDF_rotate
PDF_rotate -- Устанавливает вращение
Описание
void pdf_rotate
(int pdf document, double angle);
Функция
PDF_rotate()
Устанавливает вращение в процентах на угол
angle
.
PDF_setflat
PDF_setflat -- Устанавливает плоскость
Описание
void pdf_setflat
(int pdf document, double value);
Функция
PDF_setflat()
устанавливает плоскость на величину от 0 до 100.
PDF_setlinejoin
PDF_setlinejoin -- Устанавливает параметр слияния линий
Описание
void pdf_setlinejoin
(int pdf document, long value);
Функция
PDF_setlinejoin()
устанавливает параметр слияния линий между от 0 до 2.
PDF_setlinecap
PDF_setlinecap -- Устанавливает параметр формата строки
Описание
void pdf_setlinecap
(int pdf document, int value);
Функция
PDF_setlinecap()
устанавливает параметр формата строки от 0 до 2.
PDF_setmiterlimit
PDF_setmiterlimit -- Устанавливает минимальную границу
Описание
void pdf_setmiterlimit
(int pdf document, double value);
Функция
PDF_setmiterlimit()
устанавливает минимальную границу больше или равную 1.
PDF_setlinewidth
PDF_setlinewidth -- Устанавливает ширину линии
Описание
void pdf_setlinewidth
(int pdf document, double width);
Функция
PDF_setlinewidth()
устанавливает ширину
width
линии.
PDF_setdash
PDF_setdash -- Устанавливает шаблон тире
Описание
void pdf_setdash
(int pdf document, double white, double black);
Функция
PDF_setdash()
устанавливает шаблон тире, где
white
- еденицы белого и
black
- еденицы черного. Если они оба равны 0, то устанавливается сплошная линия.
PDF_moveto
PDF_moveto -- Устанавливает текущую точку
Описание
void pdf_moveto
(int pdf document, double x-koor, double y-koor);
Функция
PDF_moveto()
устаналивает текущую точку в координатах
x-koor
и
y-koor
.
PDF_curveto
PDF_curveto -- Рисует кривую
Описание
void pdf_curveto
(int pdf document, double x1, double y1, double x2, double y2, double x3, double y3);
Функция
PDF_curveto()
рисует кривую Безье с текущей тоски до точки с координатами (
x3
,
y3
) используя
(
x1
,
y1
) и
(
x2
,
y2
) как управляющие точки.
См. также
PDF_moveto()
,
PDF_lineto()
.
PDF_lineto
PDF_lineto -- Рисует линию
Описание
void pdf_lineto
(int pdf document, double x-koor, double y-koor);
Функция
PDF_lineto()
рисует линию с текущей точки до точки с координатами
(
x-koor
,
y-koor
).
См. также
PDF_moveto()
,
PDF_curveto()
.
PDF_circle
PDF_circle -- Рисует круг
Описание
void pdf_circle
(int pdf document, double x-koor, double y-koor, double radius);
Функция
PDF_circle()
рисует круг с центром в точке (
x-koor
,
y-koor
) и радиусом
radius
.
См. также
PDF_arc()
.
PDF_arc
PDF_arc -- Рисует дугу
Описание
void pdf_arc
(int pdf document, double x-koor, double y-koor, double radius, double start, double end);
Функция
PDF_arc()
рисует дугу с центром в точке с координатами (
x-koor
,
y-koor
) и радиусом
radius
, начинает с угла
start
и заканчивает углом
end
.
См. также
PDF_circle()
.
PDF_rect
PDF_rect -- Рисует прямоугольник
Описание
void pdf_rect
(int pdf document, double x-koor, double y-koor, double width, double height);
Функция
PDF_rect()
Рисует прямоугольник с нижним левым углом в точке (
x-koor
,
y-koor
). Ширина определяется параметром
widgth
. Высота определяется параметром
height
.
PDF_closepath
PDF_closepath -- Закрывает контур
Описание
void pdf_closepath
(int pdf document);
Функция
PDF_closepath()
закрывает текущий контур.
PDF_stroke
PDF_stroke -- Рисует линию вдоль контура
Описание
void pdf_stroke
(int pdf document);
Функция
PDF_stroke()
рисует линию вдоль текущего контура.
См. также
PDF_closepath()
,
PDF_closepath_stroke()
.
PDF_closepath_stroke
PDF_closepath_stroke -- Закрывает контур и рисует вдоль него линию
Описание
void pdf_closepath_stroke
(int pdf document);
Функция
PDF_closepath_stroke()
является сочетанием функций
PDF_closepath()
и
PDF_stroke()
. Затем контур сбрасывается.
См. также
PDF_closepath()
,
PDF_stroke()
.
PDF_fill
PDF_fill -- Заполняет текущий контур
Описание
void pdf_fill
(int pdf document);
Функция
PDF_fill()
заполняет область текущего контура текущим цветом заполнения.
См. также
PDF_closepath()
,
PDF_stroke()
,
PDF_setgray_fill()
,
PDF_setgray()
,
PDF_setrgbcolor_fill()
,
PDF_setrgbcolor()
.
PDF_fill_stroke
PDF_fill_stroke -- Заполняет о обрезает текущий контур
Описание
void pdf_fill_stroke
(int pdf document);
Функция
PDF_fill_stroke()
заполняет область текущего контура текущим цветом заполнения и рисует текущий контур.
См. также
PDF_closepath()
,
PDF_stroke()
,
PDF_fill()
,
PDF_setgray_fill()
,
PDF_setgray()
,
PDF_setrgbcolor_fill()
,
PDF_setrgbcolor()
.
PDF_closepath_fill_stroke
PDF_closepath_fill_stroke -- Закрывает, заполняет и обрезает текущий контур
Описание
void pdf_closepath_fill_stroke
(int pdf document);
Функция
PDF_closepath_fill_stroke()
закрывает, заполняет область текущего контура текущим цветом заполнения и
рисует текущий контур.
См. также
PDF_closepath()
,
PDF_stroke()
,
PDF_fill()
,
PDF_setgray_fill()
,
PDF_setgray()
,
PDF_setrgbcolor_fill()
,
PDF_setrgbcolor()
.
PDF_endpath
PDF_endpath -- Заканчивает текущий контур
Описание
void pdf_endpath
(int pdf document);
Функция
PDF_endpath()
заканчивает текущий контур, но не закрывает его.
См. также
PDF_closepath()
.
PDF_clip
PDF_clip -- Заканчивает текущий контур
Описание
void pdf_clip
(int pdf document);
Функция
PDF_clip()
прекращает рисование в текущем контуре.
PDF_setgray_fill
PDF_setgray_fill -- Устанавливает серый цвет заполнения
Описание
void pdf_setgray_fill
(int pdf document, double value);
Функция
PDF_setgray_fill()
делает текущим серый цвет для заполнения контура.
См. также
PDF_setrgbcolor_fill()
.
PDF_setgray_stroke
PDF_setgray_stroke -- Устанавливает серый цвет рисования
Описание
void pdf_setgray_stroke
(int pdf document, double gray value);
Функция
PDF_setgray_stroke()
далает текущий цвет рисования серым.
См. также
PDF_setrgbcolor_stroke()
.
PDF_setgray
PDF_setgray -- Устанавливает серый цвет рисования и заполнения
Описание
void pdf_setgray
(int pdf document, double gray value);
Функция
PDF_setgray_stroke()
делает текущие цвет рисования и заполнения серым.
См. также
PDF_setrgbcolor_stroke()
,
PDF_setrgbcolor_fill()
.
PDF_setrgbcolor_fill
PDF_setrgbcolor_fill -- Устанавливает RGB значение цвета заполнения
Описание
void pdf_setrgbcolor_fill
(int pdf document, double red value, double green value, double blue value);
Функция
PDF_setrgbcolor_fill()
делает текущим RGB цвет для заполнения контура.
См. также
PDF_setrgbcolor_fill()
.
PDF_setrgbcolor_stroke
PDF_setrgbcolor_stroke -- Устанавливает RGB значение цвета рисования
Описание
void pdf_setrgbcolor_stroke
(int pdf document, double red value, double green value, double blue value);
Функция
PDF_setrgbcolor_stroke()
делает текущим RGB цвет рисования.
См. также
PDF_setrgbcolor_stroke()
.
PDF_setrgbcolor
PDF_setrgbcolor -- Устанавливает RGB цвет рисования и заполнения
Описание
void pdf_setrgbcolor
(int pdf document, double red value, double green value, double blue value);
Функция
PDF_setrgbcolor_stroke()
делает текущим RGB цвет рисования и заполнения.
См. также
PDF_setrgbcolor_stroke()
,
PDF_setrgbcolor_fill()
.
PDF_add_outline
PDF_add_outline -- Добавляет закладку для текущей страницы
Описание
void pdf_add_outline
(int pdf document, string text);
Функция
PDF_add_outline()
добавляет закладку с текстом
text
, которая указывает на текущую страницу.
PDF_set_transition
PDF_set_transition -- Устанавливает переход между страницами
Описание
void pdf_set_transition
(int pdf document, int transition);
Функция
PDF_set_transition()
устанавливает переход между указанными следующими страницами. Значения параметра
transition
могут быть 0 для никакого перехода,
1 для двух линий, проходящих через экран, открывая страницу,
2 для нескольких линий, проходящих через экран, открывая страницу,
3 для прямоугльника, открывающего страницу,
4 для одной линии, проходящей через экран, открывая страницу,
5 для растворения старой страницы, открывая новую,
6 для эффекта растворения, перемещяющегося от одного края экрана, к другому,
7 для простой смены старой страницы новой (по умолчанию).
PDF_set_duration
PDF_set_duration -- Устанавливает паузу между страницами
Описание
void pdf_set_duration
(int pdf document, double duration);
Функция
PDF_set_duration()
устанавливает паузу между следующими страницами в секундах.
Назад, к содержанию
Функции семафоров и разделяемой памяти
Содержание
sem_get
sem_acquire
sem_release
shm_attach
shm_detach
shm_put_var
shm_put_var
shm_remove_var
shm_remove
Этот модуль предоставляет функции семафоров, используя семафоры System V.
Семафоры могут использоваться для обеспечения эксклюзивного доступа к русурсам
используемой машины или для ограничения числа процессов, которые могут одновременно
использовать ресурс.
Поддержка разделяемой памяти также включена. Она совместима с System V - совместимыми системами.
sem_get
sem_get -- получение идентификатора семафора
Описание
int sem_get
(int key, int [
max_acquire
]
, int [
perm
]
);
Возвращает положительный индентификатор семафора при успехе или false при ошибке.
sem_get()
возвращает идентификатор, который может быть использован для доступа к семафору
System V с указанным ключом. Семафор создается, если необходимо, используя биты доступа,
указанные в perm (по умолчанию 0666). Число процессов, которое может быть зафиксировано
семафором одновременно устанавливается в max_acquire (по-умолчанию 1). В действительности
это значение устанавливается только если процесс обнаруживает, что он является единственным,
присоединенным к семафору.
Повторный вызов функции
sem_get()
с тем же ключем вернет другой идентификатор семафора, но оба
идентификатора указывают на один и тот же семафор.
См. также:
sem_acquire()
and
sem_release()
.
sem_acquire
sem_acquire -- фиксирует семафор
Описание
int sem_acquire
(int sem_identifier);
Возвращает true при успехе, false при ошибке.
sem_acquire()
блокируется (если необходимо) до тех пор, пока семафор сможет быть зафиксирован.
Процесс, пытающийся зафиксировать семафор, который уже зафиксирован, буде блокирован
навсегда, если фиксация семафора вызовет превышение его max_acquire значения..
После обработки запроса, любые семафоры, зафиксированные процессом, но не
освобожденные вручную, будут освобождены автоматически с выдачей предупреждения.
См. также:
sem_get()
and
sem_release()
.
sem_release
sem_release -- освобождает семафор
Описание
int sem_release
(int sem_identifier);
Возвращает true при успехе и false при ошибке.
sem_release()
освобождает семафор если он зафиксирован в данное время вызывающим процессом,
иначе выдается предупреждение.
После освобождения семафора функция
sem_acquire()
может быть вызвана для ре-фиксации его.
См. также:
sem_get()
and
sem_acquire()
.
shm_attach
shm_attach -- Создает или открывает разделяемую память
Описание
int shm_attach
(long key, long memsize, long perm);
Создает или открывает разделяемую память с указанным ключем и размером памяти.
shm_detach
shm_detach -- Отсоединяет от разделяемой памяти
Описание
int shm_detach
(long id);
Отсоединяет от разделяемой памяти с указанным
id
, созданным с помощью функции
shm_attach()
. Помните, что разделяемая память все еще существует в Unix-системе и данные все еще присутствуют.
shm_put_var
shm_put_var -- Вставляет или обновляет переменную в разделяемой памяти
Описание
int shm_put_var
(int id, long variable_key, mixed variable);
Вставляет или обновляет переменную с указанным variable_key. Все типы переменных
(double, long, string, array) поддерживаются. Функция
serialize()
может быть использована для хранения данных.
shm_put_var
shm_put_var -- Считывает переменную с указанным variable_key
Описание
mixed shm_get_var
(int id, long variable_key);
Считывает переменную с указанным
variable_key
. Переменная все еще присутствует в разделяемой памяти. Функция
unserialize()
может быть использована для декодирования данных.
shm_remove_var
shm_remove_var -- Удаляет переменную из разделяемой памяти
Описание
int shm_remove_var
(int id, long variable_key);
Удаляет переменную с указанным
variable_key
из разделяемой памяти.
shm_remove
shm_remove -- Удаляет разделяемую память
Описание
int shm_remove
(long key);
Удаляет разделяемую память из Unix-системы. Все данные будут уничтожены.
Назад, к содержанию
Solid (надежные) функции
Содержание
solid_close
solid_connect
solid_exec
solid_fetchrow
solid_fieldname
solid_fieldnum
solid_freeresult
solid_numfields
solid_numrows
solid_result
Solid (надежные) функции являются предопределенными, поэтому вместо них вы вероятно захотите использовать
Универсальные ODBC функции.
solid_closesolid_close -- закрывает Solid-соединение
Описание
См. odbc_close().
solid_connectsolid_connect -- соединяет с Solid-источником данных
Описание
См. odbc_connect().
solid_execsolid_exec -- запускает Solid-запрос
Описание
См. odbc_exec().
solid_fetchrowsolid_fetchrow -- выдяляет строку данных из Solid-запроса
Descriptio
См. odbc_fetch_row()
solid_fieldnamesolid_fieldname -- возвращает имя столбца из Solid-запроса
Описание
См. odbc_field_name().
solid_fieldnumsolid_fieldnum -- возвращает номер столбца из Solid-запроса
Описание
См. odbc_field_num().
solid_freeresultsolid_freeresult -- освобождает память результата Solid-запроса
Описание
См. odbc_free_result().
solid_numfieldssolid_numfields -- возвращат число полей в Solid-результате
Описание
См. odbc_num_fields().
solid_numrowssolid_numrows -- возвращает число записей в Solid-результате
Описание
См. odbc_num_rows().
solid_resultsolid_result -- возвращает данные из Solid-результата
Описание
См. odbc_result().
Назад, к содержанию
Функции SNMP
Содержание
snmpget
snmpwalk
Для использование функций SNMP в системе UNIX вам необходимо установить набор ucd-snmp.
Ссылка на последнюю версию есть в PHP FAQ. В системе Windows эти функции доступны только
в NT и не доступны в Win95/98.
snmpget
snmpget -- получает объект SNMP
Описание
int snmpget
(string hostname, string community, string object_id);
Возвращает значание SNMP объекта при успехе и false при ошибке.
Функция snmpget() используется для чтения значения SNMP объекта, указанного в object_id.
SNMP агент определяется именем хоста hostname и группа чтения определяется параметром community.
snmpget("127.0.0.1", "public", "system.SysContact.0")
snmpwalk
snmpwalk -- Получает все SNMP объекты у агента
Описание
array snmpwalk
(string hostname, string community, string object_id);
Возвращает массив значений SNMP объектов начиная с object_id и false при ошибке.
Функция snmpwalk() используется для чтения всех значений у SNMP агента, определяемого
параметром hostname. Community определяет группу чтения для агента. Нулевой object_id
берется как корень дерева SNMP объектов и все объекты под этим деревом возвращаются
как массив. Если object_id указан, то возвращаются все SNMP объекты ниже этого объекта.
$a = snmpwalk("127.0.0.1", "public", "");
Указанный выше вызов функции вернет все SNMP объекты из SNMP агента, напущенного на
локальном хосте. По всем значениям можно пройти с помощью цикла
for($i=0; $i<count($a); $i++) {
echo $a[$i];
}
Назад, к содержанию
Функции Vmailmgr
Содержание
vm_adduser
vm_addalias
vm_passwd
vm_delalias
vm_deluser
Эти функции требуют пакетов QMAIL (www.qmail.org) и vmailmgr Bruce Guenter
http://www.qcc.sk.ca/~bguenter/distrib/vmailmgr/
Для всех функций следующие две переменные определяются как:
строка vdomain - имя домена вашего виртуального домена (vdomain.com)
, строка basepwd - пароль для 'real' пользователя, который поддерживает виртуальных пользователей.
Только до 8 символов распознаются в пароле для виртуальных пользователей
Возвращается статус для всех функциональных значений ответа в response.h
O ok |
1 плохой |
2 ошибка |
3 ошибка соединения |
Известные проблемы:
vm_deluser()
не удаляет директорию пользователя, хотя должена это делать.
vm_addalias()
в настоящее время не работает правильно.
<?php
dl("php3_vmailmgr.so"); //load the shared library
$vdomain="vdomain.com";
$basepwd="password";
?>
vm_adduser
vm_adduser -- Добавляет нового виртуального пользователя с паролем
Описание
int vm_adduser
(string vdomain, string basepwd, string newusername, string newuserpassword);
Добавляет нового виртуального пользователя с паролем.
newusername
- это имя почтового login-а и
newuserpassword
- это пароль для это пользователя.
vm_addalias
vm_addalias -- Добавляет новый псевдоним для виртуального пользователя
Описание
int vm_addalias
(string vdomain, string basepwd, string username, string alias);
Добавляет псевдоним виртуальному пользователю.
username
- это имя почтового login-а и
alias
- это псевдоним для этого пользователя.
vm_passwd
vm_passwd -- Изменяет пароль виртуальных пользователей
Описание
int vm_passwd
(string vdomain, string username, string password, string newpassword);
Изменяет пароль виртуальных пользователей.
username
- это имя почтового login-а,
password
- старый пароль пользователя, и
newpassword
- новый пароль.
vm_delalias
vm_delalias -- Удаляет всевдоним
Описание
int vm_delalias
(string vdomain, string basepwd, string alias);
Удаляет псевдоним.
vm_deluser
vm_deluser -- Удаляет псевдоним виртуального пользователя
Описание
int vm_deluser
(string vdomain, string username);
Удаляет виртуального пользователя.
Назад, к содержанию
Функции Gz-файлов
Содержание
gzclose
gzeof
gzfile
gzgetc
gzgets
gzgetss
gzopen
gzpassthru
gzputs
gzread
gzrewind
gzseek
gztell
readgzfile
gzwrite
Этот модуль использует функции библиотеки zlib >= 1.0.9 (http://www.cdrom.com/pub/infozip/zlib/) авторов Jean-loup Gailly и Mark Adler для прозрачного чтения и записи в gzip (.gz) сжатые файлы.
gzclose
gzclose -- закрывает открытый указатель gz-файла
Описание
int gzclose(int zp);
Закрывает gz-файл, указанный в переменной gz.
Возвращает true при успехе и false при ошибке.
Указатель gz-файла должен быть правильным, и должен указывать на файл, успешно открытый
функцией
gzopen().
gzeofgzeof -- проверяет достигнут ли конец файла указателя gz-файла
Описание
int gzeof(int zp);
Возвращает true, если указатель gz-файла на метке EOF или произошла ошибка,
в обратном случае возвращает false.
Указатель gz-файла должен быть правильным, и должен указывать на файл, успешно открытый функцией
gzopen().
gzfilegzfile -- читает весь gz-файл в массив
Описание
array gzfile(string filename); Функция идентична readgzfile(), кроме того, что gzfile() возвращает файл в массив.
См. также readgzfile(), и
gzopen().
gzgetcgzgetc -- возвращает символ из указателя gz-файла
Описание
string gzgetc(int zp); Возвращает строку, содержащую один (несжатый) символ, читаемый из файла, определяемого переменной zp.
Возвращает FALSE при достижении EOF (как это делает gzeof()).
Указатель gz-файла должен быть правильным, и должен указывать на файл, успешно
открытый функцией gzopen().
См. также
gzopen(), и
gzgets().
gzgetsgzgets -- Считывает строку из указателя файла
Описание
string gzgets(int zp, int length); Возвращает строку (не сжатую) длиной от начала файла до length-1 из файла
, определяемого zp. Чтение заканчивается при достижении длины length-1, при
начале новой строки или при EOF (что произойдет раньше).
При ошибке возвращает false.
Указатель gz-файла должен быть правильным, и должен указывать на файл, успешно
открытый функцией gzopen().
См. также
gzopen(), и gzgetc().
gzgetssgzgetss -- Считывает строку из указателя файла и обрезает HTML-теги
Описание
string gzgetss(int zp, int length); Идентична gzgets(), кроме того, что gzgetss пытается обрезать любые HTML и PHP теги из считываемого текста.
См. также gzgets(), и gzopen().
gzopengzopen -- открывает gz-файл
Описание
int gzopen(string filename, string mode); Открывает gzip (.gz) файл для чтения или записи. Параметр режима такой же как и у fopen() ("rb" или "wb"), но также может включать степень сжатия ("wb9"), или
стратегию: 'f' для фильтрованных данных как в "wb6f", 'h' для компрессии только
по Хаффману как в "wb1h" (См. описание deflateInit2 в zlib.h для более подробной
информации и параметрах стратегии).
Gzopen может использоваться для чтения файла, который не в gzip формате.
В этом случае gzread() будет напрямую читать из файла без декомпрессии.
Gzopen возвращает указатель на открытый файл, после чего все, что вы читаете из этого дескриптора
файла будет декомпрессироваться, и все что вы записываете - сжиматься.
При ошибке в открытии файла функция вернет false.
Пример 1. gzopen()
$fp = gzopen("/tmp/file.gz", "r"); |
См. также gzclose().
gzpassthrugzpassthru -- Выводит все оставшиеся данные в указателе gz-файла
Описание
int gzpassthru(int zp); Считывает все до EOF указателя gz-файла и выводит прочитанные данные (несжатые)
в стандартный вывод.
Если произойдет ошибка, то функция вернет false.
Указатель gz-файла должен быть правильным, и должен указывать на файл, успешно
открытый функцией gzopen().
gz-файл будет закрыт, когда gzpassthru() закончит его считывать (оставляя zp возможным для использования).
gzputsgzputs -- записывает в указатель gz-файла
Описание
int gzputs(int zp, string str, int [length]); gzputs() является псевдонимом для функции
gzwrite(), и полностью ей идентична.
gzreadgzread -- Двоично-безопасное чтение из gz-файла
Описание
string gzread(int zp, int length); gzread() читает
length байтов из указателя gz-файла, определяемого zp. Чтение прекращается когда
length байтов (несжатых) считываются или достигается EOF (что произойдет раньше).
// считывание содержимого gz-файла в строку
$filename = "/usr/local/something.txt.gz";
$zd = gzopen( $filename, "r" );
$contents = gzread( $zd, 10000 );
gzclose( $zd );
См. также gzwrite(), gzopen(),
gzgets(), gzgetss(),
gzfile(), и gzpassthru().
gzrewindgzrewind -- перемешает позицию указателя gz-файла
Описание
int gzrewind(int zp); Устанавливает индикатор позиции файла для zp на начало файлового потока.
При ошибке функция вернет 0.
Указатель gz-файла должен быть правильным, и должен указывать на файл, успешно
открытый функцией gzopen().
См. также gzseek() and gztell().
gzseekgzseek -- Сдвигает указатель gz-файла
Описание
int gzseek(int zp, int offset); Сдвигает индикатор позиции файла, определяемого параметром zp, на
offset в файловом потоке. Еквивалентна вызову (в С) функции
gzseek( zp, offset, SEEK_SET ).
Если файл открыт для чтения, то эта функция эмулируется, но может быть очень медленной.
Если файл открыт для записи, то поддерживается только сдвиг вперед; gzseek затем сжимает
последовательность нулей до новой начальной позиции.
В случае успеха функция возвращает 0, в обратном случае - 1.
Следует отметить, что достижение EOF не рассматривается как ошибка.
См. также gztell() and
gzrewind().
gztellgztell -- Возвращает позицию чтения/записи указателя gz-файла
Описание
int gztell(int zp); Возвращает позицию указателя файла, определяемого параметром zp, т.е.
его положение в файловом потоке.
При ошибке возвращается false.
Указатель gz-файла должен быть правильным, и должен указывать на файл, успешно
открытый функцией gzopen().
См. также gzopen(),
gzseek() and gzrewind().
readgzfilereadgzfile -- выводит gz-файл
Описание
int readgzfile(string filename); Считывает файл, распаковывает его и выводит в стандартный поток вывода.
Readgzfile() может использоваться для чтения файла, который не в формате gzip.
В этом случае readgzfile() будет сразу считывать файл, без докомпрессии.
Функция возвращает число байтов (несжатых), считанных из файла.
При ошибке возвращается false и, если функция не вызывалась как @readgzfile, будет
выведено сообщение об ошибке.
Файл с именем filename будет открыт в файловой системе и его содержимое будет выведено в стандартный поток вывода.
См. также gzpassthru(),
gzfile(), и gzopen().
gzwritegzwrite -- Двоично-безопасная запись gz-файла
Описание
int gzwrite(int zp, string string, int [length]); gzwrite() записывает содержимое строки
string в поток gz-файла, определяемый параметром
zp. Если параметр length указан, то запись будет прекращена после того, как
length байтов (несжатых) будет записано или будет достигнут конец строки string, что раньше произойдет.
Следует отметить, что если параметр length указан, то параметр настройки
magic_quotes_runtime будет игнорирован и пробелы не будут урезаны в строке string.
См. также gzread(), gzopen(),
and gzputs().
Назад, к содержанию