PHP Версии 3.0 - язык написания
сценариев, внедренный в HTML. Многое из
синтаксиса заимствовано из C, Java и Perl, с
добавлением специфичных для PHP
возможностей. Задача языка состоит в том,
чтобы дать возможность Web-разработчикам
легко и быстро создавать динамично
изменяемые html-страницы.
Об этом руководстве
Это руководство написано в SGML при помощи DocBook DTD, с использованием DSSSL (Стиль Документа и Язык Спецификаций Семантики) при форматировании. Инструментальные средства, используемые для форматирования HTML, TeX и RTF версий - Jade, написанный Джеймсом Кларком и The Modular DocBook Stylesheets, созданные Норманом Валшом. Структура документации PHP3 была разработана Стигом СЈзером Баккеном.
PHP версии 3.0 - язык описания сценариев, выполняемых на сервере, встроенный в HTML.
Возможно самая сильная и значимая возможность в PHP3 - уровень интеграции с базами данных. Написание веб-страницы работающей с базой данных невероятно проста. В настоящее временя поддерживаются следующие базы данных:
Oracle Adabas D Sybase FilePro mSQL Velocis MySQL Informix Solid dBase ODBC Unix dbm PostgreSQL
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 в
Интернете.
Содержание:
HTTP аутификация в PHP доступна только при использовании модуля Apache. В модуле Apache PHP-скрипт, может использовать функцию Header() для отправки сообщения "Authentication Required" браузеру клиента, вызвав тем самым окно диалога Username/Password. Как только пользователь заполняет поля username и password, URL содержащий PHP-скрипт будет вызван заново с переменными $PHP_AUTH_USER, $PHP_AUTH_PW и $PHP_AUTH_TYPE содержащими введенную информацию. В данном случае обеспечивается только "Основная" аутификация.
Фрагмент примера сценария, который производит аутентификацию клиента на странице, должен быть следующим:
Пример 2-1. Пример HTTP аутификации
<?php if(!isset($PHP_AUTH_USER)) { Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "Text to send if user hits Cancel button\n"; exit; } else { echo "Hello $PHP_AUTH_USER.<P>"; echo "You entered $PHP_AUTH_PW as your password.<P>"; } ?>
Вместо просто распечатывания $PHP_AUTH_USER и $PHP_AUTH_PW, Вы вероятно хотели бы проверить имя_пользователя и пароль для проверки правильности. Возможно, посылая запрос к базе данных, или, ища пользователя в dbm файле.
Будьте внимательны при использовании браузера Internet Explorer. Он весьма придирчив к порядку заголовков. Отправка заголовка WWW-Authenticate перед заголовком HTTP/1.0 401 возможно даст аутификацию в любом случае.
Чтобы предотвратить от записи кем - то сценарий , который определяет пароль для страницы, которая была опознана через традиционный внешний механизм, PHP_AUTH переменные не будут установлены, если допускается внешнее установление подлинности для той специфической страницы. В этом случае может быть использована переменная $REMOTE_USER чтобы идентифицировать внешне-опознанного пользователя.
Обратите внимание, однако, что вышеупомянутое не защищает от кого - то, кто может управлять не-аутифицированным URL используя перехваченный пароль из аутифицированных URL на том же самом сервере.
И Netscape и Internet Explorer очистит локальный кэш окна аутификации после получения ответа сервера 401. Это эффективно как мера отключения пользователей("log out"), вынуждающая их повторно ввести их username и пароль. Некоторые используют это для отключения пользователя по истечении интервала времени("time out"), или обеспечивают кнопку "Log Out". Эти методы не требуются в соответствии с Основным стандартом аутификации HTTP , так что Вы никогда не должны зависеть от этого. Тестирование с Lynx показало, что Lynx не очищает информацию аутификации с 401 ответом сервера, так что переход обратно и затем вперед снова откроет ресурс (пока требования удостоверения личности не изменились).
Также обратите внимание, что это не работает при использовании сервера Microsoft's IIS и CGI версии PHP из-за ограничений IIS.
PHP не ограничен созданием только HTML вывода. Он может также использоваться для создания файлов GIF, или даже более удобные потоки изображений GIF. Для этого вам надо скомпилировать PHP с библиотекой функций изображения - GD .
Пример 2-2. Создание GIF-файлов с помощью PHP
<?php Header("Content-type: image/gif"); $string=implode($argv," "); $im = imagecreatefromgif("images/button1.gif"); $orange = ImageColorAllocate($im, 220, 210, 60); $px = (imagesx($im)-7.5*strlen($string))/2; ImageString($im,3,$px,9,$string,$orange); ImageGif($im); ImageDestroy($im); ?>
Этот пример вызывается со страницы тегом: <img src="button.php3?text"> Вышеупомянутый скрипт button.php3 берет строку "text", накладывает сверху на основное изображение, которым в этом случае является " images/button1.gif " и выводит возникающее в результате изображение. Это - очень удобный способ не рисовать новые изображения кнопки, каждый раз, когда вы хотите изменить текст кнопки. Этим методом они будут динамически сгенерированы.
Экран загрузки файла может быть организован созданием специальной формы, которая выглядит примерно так:
Пример 2-3. Форма загрузки файла
<FORM ENCTYPE="multipart/form-data" ACTION="_URL_" METHOD=POST> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000"> Send this file: <INPUT NAME="userfile" TYPE="file"> <INPUT TYPE="submit" VALUE="Send File"> </FORM>_URL_ должен указать на php html файл. Cкрытое поле MAX_FILE_SIZE должно предшествовать полю ввода файла и означает максимально допустимый размер файла. Значение определяется в байтах. Для этого файла при успешной загрузке будут определены следующие переменные :
$userfile - Временное имя файла под
которым загруженный файл загружается в
машину сервера.
$userfile_name - Исходное имя файла в системе
отправителя.
$userfile_size - Размер загруженного файла в
байтах.
$userfile_type - Тип MIME файла, если броузер
предоставил эту информацию. Например
может быть "image/gif". Обратите
внимание, что компонент вышеупомянутых
переменных "$userfile" - это любое
значение поля Name тега INPUT c TYPE=file
обозначенное в форме загрузки. В
приведенном выше примере формы загрузки
мы назвали его "userfile".
По умолчанию файлы будут сохранены в заданном по умолчанию временном каталоге сервера. Его можно изменить, установкой переменной среды TMPDIR в среде, в которой PHP выполняется. Хотя, использование при ее установке обращения PutEnv () изнутри сценария PHP не будет работать.
Скрипт PHP, который получает
загруженный файл, должен определить, что
должно быть выполнено с загруженным
файлом. Вы можете, например, использовать
переменную $file_size, чтобы отбросить любые
файлы, которые являются или слишком
маленькими или слишком большими. Вы могли
бы использовать переменную $file_type, чтобы
отбросить любые файлы, которые не
соответствуют некоторым критериям типа.
В любом случае, вы должны или удалить файл
из временного каталога или переместить
эго в другое место.
Файл будет удален из временного каталога
в конце запроса, если он не перемещен или
переименован.
Пожалуйста обратите внимание, что вебсервер CERN httpd, кажется, удаляет все начинающееся с первого пробела в заголовке content-type mime, полученном от клиента. Пока дело обстоит так, CERN httpd не будет поддерживать возможность загрузки файла.
PHP поддерживает HTTP cookies. Cookies -
механизм для сохранения данных в
удаленном браузере и, таким образом, -
трэкинг или идентификация пользователей.
Вы можете устанавливать файлы cookie
используя функцию setcookie(). Cookies - часть HTTP
заголовка, так что функция SetCookie() должна
вызваться прежде чем браузеру послан
какая-нибудь информация для вывода. Это -
то же самое ограничение, которое касается
и функции Header().
Любой cookie, посланный Вам от клиента будет
автоматически превращен в переменную PHP
точно так же как данные методов GET и POST.
Если вы желаете назначить множественные
значения одиночному cookie - просто добавьте
[] к имени cookie. Для более подробной
информации см. функцию setcookie ().
PHP поддерживает ряд различных баз данных, и в режиме работы в собственной системе команд и через ODBC, включая:
Adabas D MySQL dBase Oracle Empress PostgreSQL FilePro Solid Informix Sybase InterBase Velocis mSQL Unix dbm
ereg() ereg_replace() eregi() eregi_replace() split()
Все эти функции принимают строку регулярного выражения как их первый параметр. PHP использует расширенные регулярные выражения POSIX как определено в POSIX 1003.2. Для полного описания регулярных выражений POSIX см. соответствующие разделы руководства (regex), в каталоге regex дистрибутива PHP.
Example 2-4. Пример регулярных выражений
ereg("abc",$string); /* Возвращает 'истина', если "abc" найдено в строке $string. */ ereg("^abc",$string); /* Возвращает 'истина', если "abc" найдено в начале строки $string. */ ereg("abc$",$string); /* Возвращает 'истина', если "abc" найдено в конце строки $string. */ eregi("(ozilla.[23]|MSIE.3)",$HTTP_USER_AGENT); /* Возвращает 'истина', если браузер клиента - Netscape 2, 3 или MSIE 3. */ ereg("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $string,$regs); /* Помещает три слова - $regs[1], $regs[2] и $regs[3], разделенные пробелом. */ ereg_replace("^","<BR>",$string); /* Устанавливает тег <BR> в начало строки $string. */ ereg_replace("$","<BR>",$string); /* Устанавливает тег <BR> в конец строки $string. */ ereg_replace("\n","",$string); /* Отсекает символ "возврат каретки" в строке $string. */
1 - Нормальные Ошибки Функции(Normal Function Errors)
2 - Нормальные Предупреждения(Normal Warnings)
4 - Ошибки Синтаксического Анализатора(Parser Errors)
8 - Уведомления(Notices) : предупреждения, которые Вы можете проигнорировать но, которые могут подразумевать баги в вашем коде
Эти 4 типа комбинируются при определении ошибки, сообщая уровень. Ошибка по умолчанию, возвращает уровень 7, который является комбинацией 1 + 2 + 4, или все ошибки за исключением примечаний. Этот уровень может быть изменен в файле php3. ini директивой error_reporting. Он также может быть установлен в вашем файле Apache httpd.conf директивой php3_error_reporting, или же это может быть произведено во времени выполнения сценария, с использованием функции error_reporting ().
Все выражения PHP могут также вызываться с префиксом "@", который выключает сообщение об ошибке, специфичное для этого выражения. Если ошибка произошла во время выполнения такого выражения, и допускается возможность track_errors, Вы можете найти сообщения об ошибках в глобальной переменной $php_errormsg.
Эта глава является руководством по конфигурации и установке PHP3. Требуемые знания и программное обеспечение:
базовые навыки работы с UNIX (на уровне выполнения команды "make" и компилятора С);
компилятор ANSI C;
web server (очевидно);
Исходные коды последней версии можно найти по адресу: http://www.php.net.
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):
--with-adabas =DIR
Компиляция с поддержкой Adabas D. Параметр - установочная директория Adabas D, по умолчанию /usr/local/adabasd.
--with-dbase
Включает условный атрибут поддержки Dbase. Не требует внешних библиотек.
--with-filepro
Включает условный атрибут поддержки filePro только для чтения. Не требует внешних библиотек.
--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.
--with-mysql=DIR
Включает поддержку MySQL. Параметр в этой опции - установочная директория MySQL, по умолчанию /usr/local. Она является директорией по умолчанию в дистрибутиве MySQL.
Посмотрите также директивы MySQL Configuration в configuration file.
--with-iodbc=DIR
Включает поддержку iODBC. Этот признак был разработан сначала для iODBC Driver Manager, перераспределяемого ODBC driver manager, который выполняется под множеством разновидностей UNIX. Параметром этой опции является установочная директория iODBC, по умолчанию /usr/local.
--with-openlink=DIR
Включает поддержку OpenLink ODBC. Параметром этой опции является установочная директория OpenLink ODBC, по умолчанию /usr/local/openlink.
--with-oracle=DIR
Включает поддержку Oracle. Протестирован и должен работать на версиях Oracle от 7.0 до 7.3. Параметром является директория ORACLE_HOME Вы не должны определять этот параметр, если была установлена среда окружения Oracle.
--with-pgsql=DIR
Включает поддержку PostgreSQL. Параметром является базовая установочная директория PostgreSQL, по умолчанию /usr/local/pgsql.
Посмотрите также директивы Postgres Configuration в configuration file.
--with-solid=DIR
Включает поддержку Solid. Параметром является установочная директория Solid, по умолчанию /usr/local/solid.
--with-sybase=DIR
Включает поддержку Sybase. Параметром является установочная директория Sybase, по умолчанию /home/sybase.
Посмотрите также директивы Sybase Configuration в configuration file.
--with-sybase-ct=DIR
Включает поддержку Sybase-CT. Параметром является установочная директория Sybase, по умолчанию /home/sybase.
Посмотрите также директивы Sybase-CT Configuration в configuration file.
--with-velocis=DIR
Включает поддержку Velocis. Параметром этой опции является установочная директория OpenLink ODBC, по умолчанию /usr/local/velocis.
--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
--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.
--with-ldap=DIR
Включает поддержку LDAP (Lightweight Directory Access Protocol). ). Параметром является базовая установочная директория LDAP, по умолчанию /usr/local/ldap.
Более подробную информацию по LDAP можно найти в RFC1777 и RFC1778. Другие параметры конфигурации:
--enable-sysvsem
Включает поддержку для семафоров Sys V (поддерживается большинством разновидностей UNIX). Для получения подробной информации смотрим Semaphore and Shared Memory documentation.
--enable-sysvshm
Включает поддержку разделяемой памяти для Sys V (поддерживается большинством разновидностей UNIX). Для получения подробной информации смотрим Semaphore and Shared Memory documentation.
--with-xml
Включает поддержку для непроверенных синтаксических анализаторов XML, используя библиотеку от James Clark's expat library. Для больших подробностей обратитесь к XML function reference .
--enable-maintainer-mode
Включает дополнительные зависимости и предупреждения компилятора, используемые некоторыми разработчиками PHP3.
--with-system-regex
Использует библиотеку регулярных выражений прежде, чем собственные условия. Если Вы построили PHP3 в качестве модуля сервера, Вы должны использовать одинаковую библиотеку - и когда собираете PHP3 и когда собираете сервер. Включите эту опцию, если системные библиотеки обеспечивают специальные свойства, которые Вам требуются. Рекомендуется при возможности использовать собственные библиотеки.
--with-config-file-path=DIR
Маршрут, используемый для просмотра the php3.ini file при старте PHP.
--with-exec-dir=DIR
Разрешить только запуск исполнимых файлов в DIR при нахождении в защищенном режиме. По умолчанию это /usr/local/bin. Эта опция только устанавливает значение по умолчанию, которое потом можно изменить при помощи директивы safe_mode_exec_dir в configuration file.
--disable-debug
Не включает информацию об отладке в библиотеке или исполнимой программе. Отладочная информация просто точно указывает на ошибки, поэтому можно выключить отладку, пока PHP3 находится в стадии бета или альфа версий.
--enable-safe-mode
Включает защищенный режим (safe mode) по умолчанию. Это накладывает некоторые ограничения на действия PHP, таких как открытие файлов только внутри корня документа. Для более подробной информации смотрите Security chapter Пользователи CGI всегда должны включать безопасный режим. Эта опция только устанавливает значение по умолчанию, которое потом можно включить или выключить при помощи директивы safe_mode configuration file.
--enable-track-vars
Указывает PHP3 отслеживать пришедшие переменные GET/POST/cookie в массивах HTTP_GET_VARS, HTTP_POST_VARS и HTTP_COOKIE_VARS. Эта опция только устанавливает значение по умолчанию, которое потом можно включить или выключить при помощи директивы track_vars в configuration file.
--enable-magic-quotes
Включает по умолчанию системные квоты. Эта опция только устанавливает значение по умолчанию, которое потом можно включить или выключить при помощи директивы magic_quotes_runtime в configuration file. Смотрим также директивы magic_quotes_gpc и magic_quotes_sybase.
--enable-debugger
Включает внутреннюю поддержку PHP3 debugger. Это свойство находится в стадии испытания. Смотрим также директивы Debugger Configuration в configuration file.
--enable-discard-path
Если это включено, то бинарный PHP CGI может быть безопасно помещен вне дерева web и пользователи не смогут обойти защиту .htaccess. Читайте об этой опции section in the security chapter.
--enable-bcmath
Включает стиль bc произвольной точности математических функций. Смотрим также опцию bcmath.scale в configuration file.
--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
Отключает краткую форму <? ?>тегов PHP3. Вы должны отключить краткую форму, если хотите использовать PHP3 c XML. При отключенной краткой форме принимается только тег PHP3 <?php ?>. Эта опция только устанавливает значение по умолчанию, которое потом можно включить или выключить при помощи директивы short_open_tag в configuration file.
--enable-url-includes
Дает возможность выполнять код на других HTTP и FTP серверах непосредственно из PHP3 с include(). Смотрим также опцию include_path в configuration file.
--disable-syntax-hl
Выключает синтаксическое выделение.
При сборке PHP3 установщик просматривает заголовочные и библиотечные файлы в различных директориях, измените соответственно переменные окружения CPPFLAGS и LDFLAGS. Если Вы используете нормальный shell, то вы должны написать LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure Построение:
Когда PHP3 сконфигурирован, Вы готовы к построению исполнимых CGI или библиотеку PHP3. Об этом заботится команда make. Если Вы потерпели неудачу и не можете понять почему, то смотрите раздел Problems section.
Если Вы собрали PHP3 в качестве программы CGI, Вы можете проверить результат, выполнив команду make test. Это хорошая идея - проверить результат сборки. Этим способом Вы можете обнаружить проблему с Вашим PHP3 на ранней стадии, вместо того, чтобы бороться с этим позже. Контрольное тестирование:
Если Вы собрали PHP3 в качестве программы CGI,
Вы можете протестировать свою версию при
помощи команды make bench. Обратите
внимание, что если используется защищенный
режим по умолчанию, то тест может не
завершиться, если он требует больше, чем 30
секунд. Это происходит потому, что set_time_limit()
() не может быть использована в защищенном
режиме. Используйте max_execution_time
для контроля этого времени в Ваших
собственных сценариях. make bench
игнорирует configuration
file.
Это руководство по установке поможет Вам установить и сконфигурировать PHP3 на Ваших web серверах под Windows 9x/NT. Данное руководство составил Bob Silva. Последнюю версию можно найти по адресу http://www.umesd.k12.or.us/php/win32install.html.
Данное руководство обеспечивает поддержку установки на:
Personal Web Server (рекомендуется новейшая версия) |
Internet Information Server 3 or 4 |
Apache 1.3.x |
Omni HTTPd 2.0b1 |
Все модули теперь начинаются с префикса 'php3_'. Вы должны изменить свой файл php3.ini и/или все сценарии загрузки расширений с функцией dl() (либо везде удалите префикс 'php3_'). Это предотвратит путаницу между модулями PHP и их библиотеками обеспечения.
ChangeLog, FAQ и обновленную документацию всегда можно найти на официальном сайте PHP или любом из его зеркал.
Данные шаги должны быть выполнены при любой установке перед специфическими инструкциями сервера:
Распакуйте дистрибутивный файл в директорию по Вашему выбору. Неплохим вариантом будет "C:\PHP3\".
Скопируйте файл 'php3-dist.ini' в Вашу директорию '%WINDOWS%' и переименуйте его в 'php3.ini'. Ваша директория '%WINDOWS%' обычно:
c:\windows for Windows 95/98 |
c:\winnt or c:\winnt40 for NT servers |
Отредактируйте Ваш файл 'php3.ini':
вам потребуется изменить 'extension_dir' на путь к Вашей установочной директории PHP, либо куда Вы поместили файлы 'php3_*.dll' (например c:\php3);
установите 'doc_root' в путь, где располагается document_root web сервера (например c:\apache\htdocs или c:\webroot);
выберите, какие модули Вы желаете загружать при старте PHP. Вы можете раскомментировать линии 'extension=php3_*.dll' для загрузки соответствующих модулей. Некоторые модули требуют дополнительной установки некоторых библиотек в систему для корректной работы. В FAQ PHP можно получить больше информации о том, где получить библиотеки поддержки. Вы можете также загружать модули динамически, используя в сценарии dl("php_*.dll");
на PWS и IIS Вы можете установить browscap.ini в директории 'c:\windows\system\inetsrv\browscap.ini' для Windows 95/98 и 'c:\winnt\system32\inetsrv\browscap.ini' для Windows NT. Дополнительную информацию по использованию browscap в PHP можно на зеркале mirror, выберите кнопку "source", чтобы увидеть это в действии;
Рекомендуемый метод конфигурирования этих серверов состоит в использовании INF файлов, поставляемых с дистрибутивом (php_iis_reg.inf). Вы можете отредактировать этот файл и убедитесь, что расширения и установочная директория PHP соответствует Вашим параметрам. Или Вы можете следовать перечисленным ниже шагам, чтобы сделать это вручную.
ПРЕДУПРЕЖДЕНИЕ: Эти шаги включают в себя непосредственную работу с windows registry. Мы настоятельно рекомендуем вам сначала сделать резервную копию registry. Группа разработчиков PHP не несет ответственности, если Вы повредите Ваш registry.
Запустите Regedit;
Перейдите к: HKEY_LOCAL_MACHINE
/System/CurrentControlSet/Services
/W3Svc /Parameters/ScriptMap.
В меню редактирования выберите New->String Value.
Определите расширение, которое Вы хотите использовать для ваших сценариев PHP (например .php3).
Дважды щелкните на значении новой строки и введите путь к php.exe exe в поле данных (например c:\php3\php.exe %s %s). '%s %s' ОЧЕНЬ важны, PHP не будет работать без этого должным образом;
Повторите эти шаги для каждого расширения, которое Вы хотите ассоциировать со сценариями PHP;
Теперь перейдите к HKEY_CLASSES_ROOT;
В меню редактирования выберите New->Key;
Определите ключ к расширению, которое Вы установили в предыдущем разделе (например .php3
Выделите новый ключ, в правой части окна дважды щелкните "default value" и введите phpfile.
Повторите последний шаг для каждого расширения, которое Вы установили в предыдущей секции;
Теперь создайте другой New->Key под HKEY_CLASSES_ROOT и это имя phpfile.
Выделите новый ключ phpfile phpfile и в правой части окна, дважды щелкните "default value" и введите PHP Script.
Щелкните правой клавишей на phpfile и выберите New->Key, это имя Shell.
Щелкните правой клавишей на Shell и выберите New->Key, это имя open.
Щелкните правой клавишей на open и выберите New->Key, это имя command.
Выделите новый ключ command и в правой части окна дважды щелкните на "default value" и введите путь к php.exe. Например: c:\php3\php.exe -q %1. (не забудьте %1).
Выйдите из Regedit;
Пользователи PWS и IIS 3 теперь имеют полностью работающую систему. Пользователи IIS 3 могут использовать tool от Steven Genusa для конфигурирования своих карт сценариев.
Для установки PHP3 на NT Server с запущенным IIS4 следуйте следующим инструкциям:
В Internet Service Manager (MMC) выберите Web site или отправной каталог приложения;
Откройте меню свойства каталога (щелкните правой клавишей мыши и выберите свойства) и тогда щелкните Home Directory, Virtual Directory или Directory tab;
Щелкните кнопку Configuration и тогда выберите App Mappings tab;
Щелкните Add, в рамке Executable наберите c:\path-to-php-dir\php.exe %s %s. Вы ДОЛЖНЫ подставить в конце %s %s , PHP не будет функционировать правильно, если Вы этого не сделаете;
В рамке Extension определите расширение файла, которое Вы желаете ассоциировать со сценариями PHP (обычно (.php3 и .phtml);
Установите требуемую безопасность (это делается в Internet Service Manager) и, если Ваш NT Server использует файловую систему NTFS, добавьте права на исполнение для директории I_USR_, которая содержит php.exe.
Вы должны редактировать Ваш файл srm.conf или httpd.conf , чтобы сконфигурировать Apache для работы с исполняемыми PHP CGI.
Хотя может быть несколько вариантов конфигурирования PHP под Apache, это делается достаточно просто даже для новичка. Пожалуйста, обратитесь к документации по Apache для получения информации о директивах конфигурации.
ScriptAlias /php3/"c:/path-to-php-dir/php.exe"
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3 .phtml
Action application/x-httpd-php3 "php3/php.exe"
Для обеспечения возможности использования исходного текста, просто создайте файл сценария PHP и вставьте этот код в: . Substitute original_php_script.php3php3 с именем желательного файла источника (это только один из путей). Обратите внимание, что на Win-Apache все обратные слеши в пути предложения, такого как "c:\directory\file.ext" должны быть заменены на прямые.
Данная конфигурация должно быть самая простая:
Шаг 1: Установите Omni server; |
Щелкните правой клавишей на голубой иконке OmniHTTPd в system tray и выберите Properties |
Шаг 3: Щелкните на Web Server Global Settings |
Шаг 4: На 'External' tab введите: virtual = .php3 | actual = c:\path-to-php-dir\php.exe |
Шаг 5: На Mime tab, введите: virtual = wwwserver/stdcgi | actual = .php3 |
Шаг 6: Щелкните OK |
Повторите шаги 2 - 6 для каждого расширения, которое Вы желаете ассоциировать с PHP.
Таблица 3-1. Модули PHP
php3_calendar.dll | Функции преобразования календаря |
php3_crypt.dll | Функции шифрования |
php3_dbase.dll | Функции баз данных |
php3_dbm.dll | Эмуляция GDBM посредством Berkely DB2 library |
php3_filepro.dll | Доступ READ ONLY к базам данных filepro |
php3_gd.dll | Библиотека функций GD для манипуляций с gif |
php3_hyperwave.dll | Функции HyperWave |
php3_imap4r2.dll | Функции IMAP 4 |
php3_ldap.dll | Функции LDAP |
php3_msql1.dll | Клиент mSQL 1 |
php3_msql2.dll | Клиент mSQL 2 |
php3_mssql.dll | Клиент MSSQL (требует MSSQL DB-Libraries) |
php3_mysql.dll | Функции MySQL |
php3_nsmail.dll | Функции Netscape mail |
php3_oci73.dll | Функции Oracle |
php3_snmp.dll | Функции SNMP (только для NT!) |
php3_zlib.dll | Функции ZLib |
Некоторые проблемы встречаются чаще других. Наиболее распространенные описаны в PHP3 FAQ, который можно найти по адресу: http://www.php.net/FAQ.php3
Если Вы считаете, что нашли ошибку в PHP3, то сообщите о ней. Разработчики PHP3 вероятно не знают об этом и если Вы о ней не сообщите, то она так и не будет исправлена. Формы для сообщений об ошибках доступны на сети сайтов PHP3, главная форма находится по адресу: http://ca.php.net/bugs.php3.
Если Вы все еще не можете решить проблему, то возможно кто-нибудь из списка рассылки PHP3 способен Вам помочь. Вы прежде всего должны проверить архив на тот случай, если кто-нибудь уже ответил людям с подобными проблемами. Архив можно найти по адресу http://www.tryc.on.ca/php3.html. Для того, чтобы подписаться на список рассылки PHP3 пошлите пустое письмо по адресу php3-subscribe@lists.php.net. Адрес списка рассылки php3@lists.php.net.
Если Вы хотите получить помощь через
список рассылки, пожалуйста, попробуйте
быть точным и дать необходимые детали о
Вашем окружении (операционная система,
версия PHP, какой используется web server,
запускаете Вы PHP как CGI или в качестве модуля
и т.д.) и желательно было бы предоставить код,
чтобы другие могли воспроизвести и
протестировать Вашу проблему.
PHP является мощным инструментом. Как и в случае с другими мощными средствами, Вы можете навредить сами себе. PHP функционирует таким образом, что если его небрежно использовать, то могут возникнуть проблемы с безопасностью на Вашей системе. Лучший путь для предотвращения такой ситуации - всегда знать, что Вы делаете.
Файл php3.ini читается при запуске синтаксического анализатора PHP. Для версий серверного модуля PHP, это случается только один раз, когда запускается веб-сервер. Для версии CGI это случается на каждом вызове.
Только для каждой директивы указанной
здесь, имеется соответствующая директива
Apache в httpd.conf. Просто добавьте Вы можете посмотреть установочные
параметры большинства значений
конфигурации вызвав функцию phpinfo().
Определяет имя файла, который
автоматически проверяется после
основного файла. Файл включается так же,
как если бы была вызвана функция include(),
с использованием include_path.
Специальное значение none
запрещает авто-добавление.
Примечание: Если сценарий
обрывается функцией exit(),
авто-добавление не
произойдет. Определяет имя файла, который
автоматически проверяется перед
основным файлом. Файл включается так же,
как если бы была вызвана функция include(),
с использованием include_path.
Специальное значение none
запрещает авто-добавление. Это определяет, должны ли ошибки
печататься на экране как часть HTML вывода
или нет. Главный каталог("root directory") PHP на
сервере. Используется только когда он не
пустой. Если PHP сконфигурирован при
помощи safe mode, то никакие
другие файлы за пределами этого каталога
не обслуживаются. Эта директива действительно полезна
только в модуле PHP под Apache. Это
используется на сайтах, где необходимо
включать и выключать синтаксический
анализ PHP на определенные каталоги и
виртуальные серверы. Установкой php3_engine
off в допустимом месте файла httpd.conf,
PHP можно запрещать и разрешать. Имя файла, куда сохраняется журнал
ошибок(log file) сценариев. Если используется
специальное значение syslog,
ошибки отправляются в системный журнал(system
logger). В UNIX'е это syslog(3), а в Windows NT это журнал
событий (event log). Системный журнал не
поддерживается в Windows 95. Устанавливает уровень сообщений об
ошибках. Параметр является целым,
представляющим битовую область. Добавьте
те значения уровней сообщений об ошибках,
которые Вы хотите.
Таблица 4-1. Уровни сообщений об
ошибках Ограничивает файлы, которые могут
открываться PHP в определенном директории-дереве.
Когда сценарий пытается открыть файл с
помощью, например, fopen или gzopen, наличие/расположение
файла проверяется. Когда файл находится
за пределами определенного директория-дерева,
PHP откажется открыть его. Все символьные
ссылки определены, так что нет
возможности избежать этого ограничения с
помощью symlink.
Специальное значение . показывает
что каталог, в котором находится сценарий,
используется как основной каталог.
По умолчанию допускается открытие всех
файлов. Устанавливает допустимость GET/POST/COOKIE в
анализе. Установка по умолчанию этой
директивы - "GPC". Установка ее в
"GP", например, вынудит PHP полностью
игнорировать cookies и перезапишет любые
переменные метода GET переменными метода
POST с одинаковыми именами. Определяет список каталогов где будут
располагаться файлы для функций require()
, include() и fopen_with_path()
. Формат подобен формату системной
переменной окружения PATH :
список каталогов разделяется двоеточием
в UNIX или точкой с запятой в Windows. Пример 4-1. UNIX include_path
Пример 4-2. Windows include_path
Сообщает, что независимые сообщения об
ошибке сценария должны регистрироваться
в журнале ошибок сервера. Этот выбор
таким образом является специфичным для
сервера. Устанавливает magic_quotes состояние для GPC
(Get/Post/Cookie) операций. Когда magic_quotes включено
(on), все ' (одиночные кавычки), " (двойные
кавычки), \ (обратные слэши) и нулевые
значения (NUL's) записываются с обратной
косой чертой автоматически. Если также
включено magic_quotes_sybase, одиночная кавычка
записывается с дополнительной одиночной
кавычкой вместо обратной косой черты. Если magic_quotes_runtime разрешено,
большинство функций, которые возвращают
данные из любого внешнего источника
разной природы, включая базы данных и
текстовые файлы, будут иметь кавычки,
записанные с обратной косой чертой. Если magic_quotes_sybase
также включены, одиночная кавычка
записывается с дополнительной одиночной
кавычкой вместо обратной косой черты. Если magic_quotes_sybase также
разрешено, одиночная кавычка
записывается с дополнительной одиночной
кавычкой вместо обратной косой черты,
если magic_quotes_gpc или magic_quotes_runtime
разрешены. Эта установка определяет максимальное
время в секундах допустимое для сценария,
прежде чем он будет прекращен
анализатором. Это помогает
предохраниться от плохо/некорректно
написанных сценариев. Эта установка определяет максимальный
размер памяти в байтах, допустимый для
этого сценария. Это помогает запретить
плохо/некорректно написанным сценариям
использовать всю доступную память на
сервере. Задает допустимость короткой формы (
<? ?> тегов PHP . Если вы хотите
использовать PHP совместно с XML, эту опцию
необходимо отключить. Если опция
отключена, вы должны использовать
длинную форму тегов ( <?php
?> ). Если опция разрешена, последнее
сообщение об ошибке всегда будет
представлена в глобальной переменной $php_errormsg. Если опция разрешена, входящая
информация GET, POST и cookie может быть найдена
в глобальных ассоциативных массивах $HTTP_GET_VARS
, $HTTP_POST_VARS и $HTTP_COOKIE_VARS
, соответственно. Временный каталог, используемый для
хранения файлов при их загрузке на сервер.
Должен допускать запись, независимо от
того, каким пользователем PHP используется. Основное имя каталога, используемого в
домашнем каталоге пользователей для
файлов PHP, например public_html . Если разрешено, эта опция выдает при
выводе PHP сообщение когда оператор плюс(
+ ) используется в строке. Это должно
облегчить поиск сценариев, которые
должны быть перезаписаны с заменой на (
. ) - string concatenator.
Имя DNS или IP адрес сервера SMTP, который
должен использоваться PHP под Windows для
отправки сообщения функцией mail()
. Определяет "From:" - почтовый адрес,
который используется в сообщении,
отправленном PHP под Windows. Указывает где может быть найдена
программа sendmail , обычно это /usr/sbin/sendmail
или /usr/lib/sendmail Системы не использующие sendmail должны
установить оболочку/замену sendmail их
предлагаемой системой почты, если
имеется. Например, Qmail
пользователи могут указать /var/qmail/bin/sendmail
.
Устанавливает допустимость PHP safe mode.
Читайте главу
Безопасность (Security) для большей
информации Если PHP используется в safe mode, system()
и другие функции, выполняющие
системные программы, отказываются
запускать программы, которые находятся
не в этом каталоге.
DNS-имя или IP-адрес хоста используемого
отладчиком. Номер порта используемого отладчиком. Задает допустимость использования
отладчика.
Эта директива действительно полезна
только в модуле PHP под Apache. Вы можете
разрешать/запрещать динамическую
загрузку расширений PHP функцией dl()
раздельно по каталогам и/или по
виртуальным серверам.
Основная причина для выключения
динамической загрузки - безопасность. С
динамической загрузкой, можно
игнорировать все ограничения safe_mode и
open_basedir.
По умолчанию динамическая загрузка
должна допускаться, за исключением
случаев, когда используется safe-mode. В safe-mode
всегда недопустимо использование dl()
. В каком каталоге PHP должен искать
динамически загружаемые расширения. Какие динамически загружаемые
расширения загрузить, при запуске PHP.
Допустить постоянные/устойчивые MySQL
соединения. Максимальное число постоянных MySQL
соединений за один процесс. Максимальное число MySQL соединений за
процесс, включая постоянные соединения.
Допустить постоянные mSQL соединения. The maximum number of persistent mSQL connections per process. Максимальное число постоянных mSQL
соединений за один процесс.
Допустить постоянные/устойчивые
соединения Postgres. Максимальное число постоянных
соединений Postgres за процесс. Максимальное число Postgres соединений за
процесс, включая постоянные соединения.
Допустить постоянные Sybase соединения. Максимальное число постоянных Sybase
соединений за процесс. Максимальное число Sybase соединений за
процесс, включая постоянные соединения.
Допустить постоянные Sybase-CT соединения.
По умолчанию включено. Максимальное число постоянных Sybase-CT
соединений за процесс. По умолчанию
значение -1 означающее неограниченное
количество. Максимальное число Sybase-CT соединений за
процесс, включая постоянные соединения.
По умолчанию значение -1 означающее
неограниченное количество. Сообщения Сервера со степенью более чем
или равной sybct.min_server_severity будут сообщены
как предупреждения. Эта величина может
также устанавливаться из сценария
вызовом sybase_min_server_severity() .
Значение по умолчанию - 10 , которое
сообщает ошибки строгости информации,
или выше. Сообщения библиотеки Клиента со
строгостью более чем или равной
sybct.min_client_severity будут сообщены как
предупреждениях. Эта величина может
также устанавливаться из сценария
вызовом sybase_min_client_severity() . По
умолчанию - 10, что эффективно запрещает
вывод. Максимальное время (в секундах)
ожидания повторной попытки соединения,
прежде чем будет отказ. Имейте в виду, что
если max_execution_time превышен когда время
попытки соединения закончится, ваш
сценарий будет расторгнут прежде, чем
будут предприняты какие-либо действия на
случай отказа. По умолчанию - одна минута. Максимальное время(в секундах)ожидания
окончания select_db или выполнения запроса.
Имейте в виду, что если max_execution_time
превышен, когда время функционирования
истекает, ваш сценарий будет расторгнут
прежде, чем будут предприняты какие-либо
действия на случай отказа. По умолчанию
не ограничено. Имя хоста, с которым вы хотите
соединиться, для показа sp_who. По умолчанию
- none.
Количество десятичных цифр для всех
функций bcmath.
имя файла возможностей браузера.
ИСТОЧНИК ДАННЫХ ODBC, для использования,
если ничего не определено в odbc_connect()
или odbc_pconnect()
. Имя пользователя, используемое если нет
определений в odbc_connect()
или odbc_pconnect()
. Пароль, используемый, если не
определено в odbc_connect()
или odbc_pconnect()
. Допустить постоянные/устойчивые ODBC
соединения. Максимальное число постоянных ODBC
соединений за процесс. Максимальное число ODBC соединений за
процесс, включая постоянные соединения.
PHP - мощный язык и интерпретатор,
независимо от того, включен ли он в веб-сервер
как модуль или выполняется как разделение
исполнимых файлов(binary) CGI, он
может иметь доступ к файлам, выполнять
команды и открывать сетевые соединения на
сервере. Эти свойства дают возможность
выполнять что-нибудь на веб-сервере
небезопасное по умолчанию. PHP разработан
специально для того чтобы быть более
безопасным языком для написания программ
CGI, чем Perl или C. Как есть много разных путей использования
PHP, есть и большой выбор конфигураций,
управляющих поведением PHP. Большой выбор
опций гарантирует, что вы можете
использовать PHP для многих целей, но это
также означает что есть комбинации этих
опций и, также, конфигураций сервера,
которые заканчиваются небезопасной
установкой. Эта глава объясняет различные
комбинации опций конфигурации и ситуации, в
которых они могут быть удачно использованы.
Использование 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 может
использоваться для того чтобы отразить
эту атаку, если дерево документов сервера
имеет любые директории с ограничениями
доступа. Смотрите ниже для полного
объяснения других комбинаций. Если ваш сервер не имеет какой-либо
информации, которая не ограничивается
паролем или управлением доступом на основе
ip, нет потребности в этих опциях
конфигурации. Если ваш веб-сервер не
позволяет вам производить перенаправление,
или сервер не имеет пути, чтобы связаться с
исполнимым PHP, который запрашивает
благополучно перенаправленный запрос, вы
можете указать опцию --disable-force-cgi-redirect
для конфигурирования сценария. Перенаправление может быть
сконфигурировано, например в Apache,
директивами AddHandler и Action (см. ниже).
Эта compile-time опция предохраняет от вызова PHP
напрямую с URL подобно http://my.host/cgi-bin/php/secretdir/script.php3.
Вместо того чтобы выполнить запрос, PHP
выполняет только грамматический разбор в
этом способе если он выполнил правила
перенаправления вебсервера.
Обычно переадресация в конфигурации Apache
сделана со следующими директивами:
Эта опция была протестирована только с
веб-сервером Apache, и полагается на Apache чтобы
установить не-стандартную внешнюю
переменную CGI REDIRECT_STATUS для
перенаправленных запросов. Если ваш сервер
паутины не поддерживает какого-либо
способа сообщать что запрос прямой или
перенаправленный, Вы не можете
использовать эту опцию и Вы должны
использовать один из других путей запуска
версии CGI, документированной здесь.
Размещение активного содержания, такого
как скрипты и модули, в каталогах
документов веб-сервера иногда является
небезопасной практикой. Если при некоторой
ошибке конфигурации сценарии не
выполняются, они отображаются как обычные
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 отдельно.
Очень безопасная опция должна установить
синтаксический анализатор PHP где-нибудь вне
дерева файлов web. В /usr/local/bin,
например. Обратная сторона этой опции
заключается в том что вы должны вставлять
строку подобно:
Чтобы PHP получил возможность корректно
оперировать с PATH_INFO и PATH_TRANSLATEDпри
такой установке, php анализатордолжен быть
скомпилирован с опцией конфигурации --enable-discard-path
Когда PHP используется как Apache модуль, не
наследуются права пользователя Apache (обычно
таковые - "nobody"). Синтаксис PHP заимствован непосредствено
из C. Java и Perl также повлияли на синтаксис
данного языка.
Есть три способа выхода из HTML и перехода в
"режим PHP кода": Пример 5-1. Способы перехода из HTML
Инструкции (утверждения) разделяются также как
в C или Perl - точкой с запятой.
Закрывающий тэг (?>) тоже подразумевает конец
утверждения, поэтому следующие записи
эквивалентны:
PHP поддерживает переменные следующих
типов:
Тип переменной обычно не устанавливается
программистом; вместо этого, он
определяется PHP во время выполнения
программы, в зависимости от контекста в
котором данная переменная используется.
Если вам нравится указывать тип
переменной непосредственно, вы можете
использовать для этого инструкцию cast
либо функцию settype().
Учтите, что переменная может вести себя по
разному в определенных ситуациях, в
зависимости от того, какой тип определен
для нее в данное время. Более подробно это
описано в разделе Изменение
типа.
Для инициализации переменной в PHP вы
просто присваиваите ей значение. Для
большинства переменных это именно так; для
массивов и объектных переменных, однако,
может использоваться несколько иной
механизм.
Массив может инициализироваться одним из
двух способов: последовательным
присвоением значений, или посредством
конструкции array()
(которая описана в разделе Функции
Массивов).
При последовательном добавлении значений
в массив вы просто записываете значения
элементов массива, используя пустой индекс.
Каждое последующее значение будет
добавляться в качестве последнего элемента
массива.
Как в C и Perl, элементы массива нумеруются
начиная с 0, а не с 1.
Для инициализации объектной переменной
используйте новое предписание для
сопоставления данного объекта объектной
переменной.
Областью переменной является контекст,
внутри которого она определена. Главным
образом, все переменные PHP имеют одну
область. Однако, внутри функций
определенных пользователем, представлена
локальная область функции. Любая
переменная, определенная внутри функции, по
умолчанию ограничена локальной областью
функции. Например:
Этот скрипт не выдаст что-либо на выходе,
поскольку инструкция echo относится к
локальной версии переменной $a, значение
которой присваивается не внутри этой
области. Вы можете заметить, что здесь
имеется некоторое отличие от языка C, в том
что глобальные переменные в C автоматически
действуют и внутри функций, если только
они не переписываются локальными
определениями. Это может вызвать некоторые
проблемы, т.к. по неосторожности можно
изменить глобальную переменную. В PHP
глобальные переменные должны быть
продекларированы глобально внутри функции,
если предполагается их использование в
данной функции. Например:
Вышеописанный скрипт выдаст значение
"3". Поскольку $a и $b декларируются
глобально внутри функции, ссылки на данные
переменные трактуются как ссылки на их
глобальные версии. Нет ограничений на
количество глобальных переменных, которыми
можно манипулировать внутри функции.
Вторым способом доступа к переменным из
глобальной области является использование
специального опеределяемого PHP массива
$GLOBALS. При этом предыдущий пример может быть
записан как:
Массив $GLOBALS является ассоциативным
массивом, в котором имя глобальной
переменной является ключом, а значение этой
переменной является значением элемента
массива.
Другой важной характеристикой от области
определения переменной является статическая
переменная. Статическая переменная
существует только в локальной области
функции, но она не теряет своего значения
когда программа, при исполнении, покидает
эту область. Рассмотрим следующий пример:
Эта функция совершенно бесполезна
практически, поскольку каждый раз при ее
вызове она устанавливает $a в 0 и выводит
"0". Выражение $a++ , которое
увеличивает значение переменной, так же
бесполезно, поскольку при выходе из функции
переменная $a исчезает. Для придания
дееспособности функции подсчета, которая
не теряла бы нить текущего счета,
переменная $a декларируется как статическая:
Теперь, каждый раз при вызове функции Test()
она будет выводить значение $a и увеличивать
его.
Статические переменные также весьма
существенны, когда функции вызываются
рекурсивно. Рекурсивные функции - это те,
которые вызывают сами себя. Составлять
рекурсивную функцию нужно внимательно, т.к.
при неправильном написании можно сделать
рекурсию неопределенной. Вы должны быть
уверены в адекватности способа прекращения
рекурсии. Следующая простая функция
рекурсивно считает до 10:
Иногда бывает удобно давать переменным
изменяемые имена. Такие имена могут
изменяться динамически. Обычная переменая
устанавливается так:
Изменяемая переменная берет некое
значение и обрабатывает его как имя
переменной. В приведенном выше примере
значение hello может быть
использовано как имя переменной,
посредством применения двух записанных
подряд знаков доллара, т.е.:
С этой точки зрения, две переменных
определены и сохранены в символьном дереве
PHP: $a с содержимым "hello" и $hello с
содержимым "world". Так, инструкция:
осуществляет то же самое, что и инструкция:
а именно, обе они выводят: hello
world.
Чтобы использовать изменяемые переменные
с массивами, необходимо решить проблему
неоднозначности. Это означает, что если вы
пишете $$a[1], то синтаксическому анализатору
необходимо знать, имеете ли вы в виду
использовать $a[1] как переменую, или вы
предполагаете $$a как переменную а [1] как
индекс этой переменной. Синтаксис для
разрешения подобной неоднозначности такой:
${$a[1]} для первого случая и ${$a}[1] для второго.
Когда программой-обработчиком формы
является PHP-скрипт, переменные этой формы
автоматически доступны для данного скрипта
PHP. Например, рассмотрим следующую форму: Пример 5-2. Простая переменная формы
При активизации формы PHP создаст
переменную $name, значением
которой будет то содержимое, которое было
введено в поле Name: данной формы.
PHP также воспринимает массивы в контексте
переменных формы, но только одномерные. Вы
можете, например, группировать
взаимосвязанные переменные вместе или
использовать это свойство для определения
значений переменных при множественном
выборе на входе: Пример 5-3. Более сложные переменные
формы
Если PHP-атрибут track_vars включен, через
установку конфигурации track_vars
или директивой <?php_track_vars?>,
тогда переменные, активизированные
посредством методов POST или GET, будут также
находиться в глобальных ассоциативных
массивах $HTTP_POST_VARS и $HTTP_GET_VARS соответственно.
При активизации (запуске) формы можно
использовать рисунок (изображение) вместо
стандартной кнопки запуска, в тэге подобном
этому:
Когда пользователь нажимает кнопку мыши
где-либо над таким рисунком, сопровождающая
форма передается на сервер с двумя
дополнительными переменными, sub_x и sub_y. Они
содержат координаты места нажатия кнопки
мыши пользователем внутри данного рисунка.
Можно отметить, что практически, реальные
имена переменных передаваемые браузером,
содержат точку вместо символа
подчеркивания, но PHP конвертирует точку в
элемент подчеркивания (underscore)
автоматически.
PHP очевидным образом поддерживает HTTP
кукисы, как это определено в Netscape's
Spec. Кукисы являются механизмом хранения
данных в удаленном браузере, используемым
для поддержки процедуры обмена или
идентификации ответа пользователя.
Кукисы можно устанавливать используя
функцию SetCookie().
Кукисы являются частью заголовка HTTP,
поэтому функция SetCookie()
должна вызываться прежде чем какие-либо
передаваемые данные посылаются браузеру.
Это такое же ограничение, как и для функции Header().
Любые кукисы, посылаемые вам клиентом,
автоматически преобразовываются в
переменные PHP, также как данные методов GET и
POST.
Если необходимо назначить множественные
значения одному кукису, просто добавьте
квадратные скобки [ ] к имени кукиса.
Например:
Учтите, что текущий кукис заменит
предыдущий с тем же именем в вашем браузере,
если только путь или домен не являются
различными. Поэтому, при работе с
программами обслуживания карт вы можете
использовать для сохранения данных счетчик
и посылать его значения дальше и т.п. Пример 5-4. Пример функции SetCookie
PHP автоматически создает переменные
окружения, как и обычные переменные.
Хотя при поступлении информации
механизмы GET, POST и Cookie также атоматически
создают переменные PHP, иногда лучше явным
образом прочитать переменную окружения,
для того чтобы быть уверенным в получении
ее правильной версии. Для этого может
использоваться функция getenv().
Для установки значения переменной
окружения пользуйтесь функцией putenv().
PHP не требует явного определения типа при
объявлении переменной, тип переменной
определяется по контексту в котором она
используется. То есть, если вы присваиваете
строковое значение переменной var,
var становится строкой.
Если затем присвоить переменной var
значение целого (числа), то она станет
целым.
Примером автоматического преобразования
типа в PHP может служить оператор сложения '+'.
Если какой-либо из оперендов является
числом с дробной частью (тип double), то затем
все операнды оцениваются как double и
результат будет иметь тип double. Иначе, эти
операнды будут интерпретированы как целые
(integers) и результат будет так же иметь тип
integer. Отметим, что при этом НЕ меняются типы
самих операндов, меняется только оценка
этих операндов.
Если последние два примера выше кажутся
неясными, смотрите Преобразование
строк.
Если вы хотите чтобы переменная
принудительно оценивалась как имеющая
определенный тип, смотрите раздел Приведение
типа. Если вы желаете изменить тип
переменной, смотрите settype().
Поскольку PHP определяет типы переменных и
преобразует их (в общем) по мере
необходимости, не всегда очевидно какой тип
данная переменная имеет в какой-то
отдельный момент. Поэтому PHP включает
несколько функций, которые позволяют
определить текущий тип переменной. Это
функции gettype(),
is_long(), is_double(),
is_string(), is_array(),
и is_object().
Приведение типа работает в PHP во многом
так же как в C: название требуемого типа
записывается в круглых скобках перед
переменной, которая должна быть приведена к
данному типу.
Допускается следующее приведение типов:
Заметим, что табуляция и пробелы
допускаются внутри круглых скобок, поэтому
следующее функционально эквивалентно:
Когда строковая переменная оценивается
как числовая, результирующее значение и тип
переменной определяются следующим образом.
Переменная string будет оценена как double, если
она содержит любой из символов '.', 'e', или 'E'.
Иначе она будет оценена как integer.
Данное значение задается начальной
частью строковой переменной. Если строка
начинается с допустимых цифровых данных, то
это значение и будет использоваться. Иначе,
будет значение 0 (ноль). Допустимые цифровые
данные - это конструкция из факультативного
символа, следующего за одной или
несколькими цифрами (содержащими
факультативно десятичную точку),
обозначающего экспоненту. Экспонента может
обозначаться символом 'e' или 'E', который
может следовать за одной или несколькими
цифрами.
Дополнительную информацию смотрите в
руководстве Unix страница для strtod(3).
PHP поддерживает как скалярные так и
ассоциативные массивы. Фактически, между
ними нет разницы. Вы можете создать массив
используя функции list()
или array(), или
можно явно задать значение каждого
элемента массива.
Можно также создать массив просто
добавляя в него значения.
Массив может сортироваться функциями asort(),
arsort(), ksort(),
rsort(), sort(),
uasort(), usort(),
и uksort() в
зависимости от типа желаемой сортировки.
Подсчет количества элементов массива
осуществляется функцией count().
Перемещаться по массиву позволяют
функции next() и prev().
Другим типовым способом перемещения по
массиву является использование функции each(). Любой скрипт PHP состоит из
последовательности операторов. Оператор
может быть присваиванием, вызовом функции,
циклом, условным выражением или пустым
выражением (ничего не делающим). Операторы
обычно заканчиваются точкой с запятой.
Также операторы могут быть объединены в
группу заключением группы операторов в
фигурные скобки. Группа операторов также
является оператором. В этой части описаны
различные типы операторов.
PHP определяет несколько констант и
предоставляет механизм для определения
Ваших констант. Константы похожи на
переменные, но они имеют слегка изменЈнный
синтаксис.
ПредопределЈнные константы - это __FILE__ and
__LINE__, которые соответствуют имени файла и
номеру строки, которая выполняется в
настоящий момент. Вы можете определить дополнительные
константы с помощью функций define() и undefine()
. Выражения - это краеугольный камень PHP. В PHP
почти всЈ является выражениями. Простейший
и наиболее точный способ определить
выражение - это "что-то, имеющее значение".
Простейший пример, приходящий на ум это
константы и переменные. Когда вы печатаете
"$a = 5", вы присваиваете значение '5'
переменной $a. '5', очевидно, имеет значение 5,
иными словами'5' это выражение со значением5
(в данном случае'5' это целочисленная
константа).
После этого присваивания вы считаете
значением $a 5, также, если вы напишете $b = $a,
вы будете ожидать того же как, если бы вы
написали $b = 5. Другими словами, $a это также
выражение со значением 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) /* функция удваивания
переменной */ В начале главы мы сказали, что объясним
различные типы операторов и, как и было
обещано выражения могут быть операторами.
Впрочем, не каждое выражения является
оператором. В данном случае оператор имеет
форму 'выражение' ';', то есть выражение, за
которым следует точка с запятой. В '$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 это одна из важнейших
возможностей многих языков, включая PHP. Она
позволяет организовать выполнение
фрагментов кода по условию. Возможности PHP
по использованию выражения IF похожи на C:
if (expr) statement
Как объяснялось в части про выражения,
вычисляется логический результат "expr"
. Если expr равно TRUE, то PHP выполнит
"statement", а если FALSE - проигнорирует.
Следующий пример выведет фразу 'a is bigger than
b' если $a больше $b:
Зачастую Вам требуется исполнить больше
чем одно выражение по условию. Конечно, не
надо окружать каждое выражение
конструкцией IF. Вместо этого вы можете
сгруппировать несколько выражений в блок
выражений. К примеру, слежующий код не
только выведет фразу, но и присвоит
значение $a переменной $b:
if ($a > $b) { print "a is bigger than b"; $b = $a; }
Выражение IF может иметь неограниченную
степень вложенности в другие выражения IF,
что позволяет Вам эффективно использовать
выполнение по условию различных частей
программы.
Зачастую Вам требуется исполнить одно
выражение, если соблюдается какое-либо
условие и другое выражение в противном
случае. Вот для этого применияется ELSE. ELSE
расширяет возможности IF по части обработки
вариантов выражения, когда оно равно FALSE.
Данный пример выведет фразу 'a is bigger than b'
если $a больше $b, и 'a is NOT bigger than b' в противном
случае:
Выражение ELSE выполняется только если
выражение IF равно FALSE, а если есть
конструкции ELSEIF - то если и они также равны
FALSE (см. ниже).
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 может быть
несколько ELSEIF. Первое выражение ELSEIF (если
таковые есть), которое будет равно TRUE, будет
выполнено. В PHP3 вы можете написать 'else if' (два
слова), что будет значить то же самое, что и
'elseif' (одно слово).
Выражение ELSEIF будет выполнено только если
выражение IF и все предыдущие ELSEIF равно FALSE, а
данный ELSEIF равен TRUE.
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) .Вот пример подобной
структуры :
Цикл WHILE - простейший тип цикла в PHP3. Он
действует как и его аналог в C. Основная
форма оператора WHILE :
WHILE(expr) statement
Смысл оператора WHILE прост. Он предписывает
PHP выполнять вложенный(е) оператор(ы) до тех
пор пока expr равно TRUE. Значение выражения
проверяется каждый раз при начале цикла,
так что если значение выражения изменится
внутри цикла, то он не прервЈтся до конца
текущей итерации (выполнение всего блока
вложенных операторов - это одна итерация).
Иногда, если значение expr равно FALSE с самого
начала, цикл не выполняется ни разу.
Как и в IF, вы можете сгруппировать
несколько операторов внутри фигурных
скобок или использовать альтернативный
синтаксис :
WHILE(expr): выражения ... ENDWHILE;
Следующие примеры идентичны - оба выводят
номера с 1 по 10:
Цикл DO..WHILE очень похож на WHILE за
исключением того, что значение логического
выражения проверяется не до, а после
окончания итерации. Основное отличие в том,
что DO..WHILE гарантировано выполнится хотя бы
один раз, что в случае WHILE не обязательно.
Для циклов DO..WHILE существует только один
вид синтаксиса:
Этот цикл выполнится один раз, так как
после окончания итерации будет проверено
значение логического выражения, а оно равно
FALSE ($i не больше 0), и выполнение цикла
завершится.
Опытные программисты на C может быть
знакомы с иным использованием DO..WHILE,
позволяющем прекратить исполнение блока
операторов в середине путЈм внедрения его в
цикл DO..WHILE(0) и использования оператора BREAK.
Следующий код демонстрирует такую
возможность :
Не беспокойтесь, если вы не совсем поняли
это. Вы можете программировать весьма
мощные скрипты и без этой возможности.
Циклы FOR - наиболее мощные циклы в PHP. Они
работают подобно их аналогам в C. Синтаксис
цикла FOR :
FOR (expr1; expr2; expr3) statement
Первое выражение (expr1) безусловно
вычисляется(выполняется) в начале цикла.
В начале каждой итерации вычисляется expr2.
Если оно равно TRUE, то цикл продолжается и
выполняются вложенный(е) оператор(ы). Если
оно равно FALSE, то цикл заканчивается.
В конце каждой итерации вычисляется(исполняется)
expr3.
Каждое из этих выражений может быть
пустым. Если expr2 пусто, то цикл продолжается
бесконечно (PHP по умолчанию считает его
равным TRUE, как и С). Это не так бесполезно,
как могло бы показаться, так как зачастую
вам требуется закончить выполнение цикла
используя оператор BREAK в сочетании с
логическим условием вместо использования
логического выражения в FOR.
Рассмотрим следующие примеры. Все они
выводят номера с 1 по 10 :
Конечно, первый вариант кажется лучшим (или
четвЈртый), но оказывавется возможность
использования пустых выражений в цикле FOR
зачастую оказывается полезной.
PHP также поддерживает альтернативный
синтаксис FOR :
FOR (expr1; expr2; expr3): выражение; ...; endfor;
Другие языки используют оператор foreach для
того, чтобы обрабатывает массивы или списки.
PHP использует для этого оператор while и
функции list() и
each() . Для примера смотрите документацию
по этим функциям.
VREAK прерывает выполнение текущего цикла.
CONTINUE переходит на начало ближайшего цикла.
Оператор SWITCH похож на группу операторов IF
с одинаковым выражением. Во многих случаях
вам нужно сравнить переменную (или
выражение) со многими различными
значениями и выполнить различные фрагменты
кода в зависимости от того, чему будет равно
значение выражения. Это как раз то, для чего
предназначается оператор SWITCH.
Следующие 2 примера это 2 разлчиных пути
для достижения одной вещи, но один
использует серию операторов IF, а другой -
оператор SWITCH.
Важно понять как работает оператор SWITCH
чтобы избежать ошибок. SWITCH выполняет
последовательно оператор за оператором. В
начале код не исполняется. Только когда
встречается оператор CASE с подходящим
значением, PHP начинает выполнять программу.
PHP продолжает выполнять операторы до конца
блока SWITCH или пока не встретит оператор BREAK.
Если вы не напишете BREAK в конце цикла
операторов, то PHP продолжит выполнять
операторы и следующего SWITCH'а. К примеру :
В этом случае, если $i равно 0, то PHP выполнит
все операторы print! Если $i равно 1, то PHP
выполнит последние два print. И только если $i
равно 2, вы получите ожидаемый результат и
выведено будет только 'i equals 2'. Так что важно
не забывать ставить BREAK (разве что в
некоторых случаях вы специально не
захотите их ставить для достижения
определЈнной цели).
Специальный случай - это 'default case'. Этот
оператор соответствует всем значениям,
которые не удовлетворяют другим case'ам. К
примеру :
Другой заслуживающий упоминания факт -
это то, что выражения в CASE могут быть любого
скалярного типа, то есть целые числа или
числа с плавающей запятой, а так же строки.
Массивы и объекты не будут ошибкой, но в
данном случае они не имеют значимости.
Оператор REQUIRE заменяет себя содержимым
указанного файла, похоже на то,как в
препроцессоре C работает #include.
Это означает, что вы не можете поместить
require() внутрь цикла и ожидать, что он включит
содержимое дугого файла несколько раз в
процессе каждой итерации. Для это
используйте INCLUDE.
require ('header.inc');
Оператор INCLUDE вставляет и выполняет
содержимое указанного файла.
Это случается каждый раз, когда
встречается оператор INCLUDE, так что вы можете
включить этот оператор внутрь цикла, чтобы
включить несколько файлов :
include() отличается от require()
тем, что оператор include выполняется каждый
раз при его встрече, а require()
заменяется на содержимое указанного файла
безотносительно будет ли выполнено его
содержимое или нет
Так как include() это
специальный оператор, требуется заключать
его в фигурные скобки при использовании
внутри условного оператора.
Когда файл исполняется, парсер пребывает
в "режиме HTML", то есть будет выводить
содержимое файла, пока не встретит первый
стартовый тег PHP (<?).
Также смотрите readfile(),
virtual().
Функция может быть объявлена следующим
образом:
Внутри функции может быть любой верный
код PHP3, даже объявление другой функции или класса
.
Функции должны быть определены перед тем,
как на них ссылаться.
Результаты возвращаются через
необязательный оператор return. Возвращаемый
результат может быть любого типа, включая
списки и объекты.
Множественные результаты не могут быть
возврашены в качестве результата, но вы
можете реализовать это путЈм возврата
списка :
Информация может быть передана функции
через список аргументов, которые являются
разделЈнным запятыми списком переменных и/или
констант.
PHP3 поддерживает передачу аргументов по
значению (по умолчанию), по
ссылке, и
значения по умолчанию. Списки аргументов
переменной длины не поддерживаются, но того
же можно достичь, передавая массивы.
По умолчанию, аргменты функции передаются
по значению. Если вы хотите в функции
модифицировать аргументы, то можете
передать их по ссылке.
Если вы хотите, чтобы аргумент всегда
передавался по ссылке, то следует поставить
амперсенд (&) перед именем аргумента в
объявлении функции :
Если вы хотите передать аргумент по
ссылке в случае, когда по умолчанию такого
не делается, то добавьте амперсенд перед
именем аргумента в вызове функции :
Функции могут определять значения по
умолчанию для скалярных аргументов в стиле
C++ как показано :
Этот пример выведет следующее :
Значение по умолчанию должно быть
константой, а не переменной или, к примеру,
членом класса.
Учтите, что когда вы объявляете аргументы
по умолчанию, они должны быть справа от всех
"неумолчальных" аргументов, в
противном случае это не будет работать, как
задумано. К примеру :
Этот пример выведет следующее :
А теперь сравните с этим :
И выводит следующее :
Оператор OLD_FUNCTION позволяет вам
определяить функцию использую синтаксис
PHP/FI2 (за исключением того, что вы должны
заменить 'function' на 'old_function').
Это свойство только для совместимости и
должно использоваться лишь конверторами
PHP/FI2 -> PHP3.
Описанные таким образом функции не могут
быть вызваны из служебного кода PHP. Это к
тому же значит, что вы не можете
использовать их в функциях типа usort(),
array_walk() и register_shutdown_function().
Вы можете обойти это путЈм введения
специальной функции в терминах PHP3, которая
будет вызывать OLD_FUNCTION. CLASS
Класс - это набор переменных и функций,
работающих с этими переменными. Класс
определяется следующим образом :
Это определения класса Cart, который
состоит связного списка наименований
товаров в корзине и двух функций для
добавления и удаления вещей из корзины.
Классы это типы, то есть, заготовки для
реальных переменных. Вы должны создавать
переменные желаемого типа, используя
оператор new :
Таким образом, мы создали объект $cart
класса Cart. Функция add_item() этого объекта
вызывается для добавления 1 товара номер 10 к
корзине.
Классы могут быть расширениями других
классов. Расширенный класс обладает всеми
переменными и функциями базового класса и
тем, что вы определите при расширении
класса. Это делается используя ключевое
слово extends :
Это определяет класс Named_Cart, который имеет
все переменные и функции класса Cart плюс
дополнительную переменную $owner и
дополнительную функцию set_owner(). Вы можете
создать поименованую корзину обычным
образом и установить или получить
владельца корзины. Также вы можете
использовать и нормальные функции корзины
в поименованой корзине :
Внутри функций класса переменная $this
означает сам объект. Вы должны использовать
$this->нечто для доступа к переменной или
функции с именем 'нечто' внутри объекта.
Конструкторы это функции в классе,
которые автоматически вызываются, когда вы
создаЈте новую переменную данного класса.
Функция становится классом, когда она имеет
такое же имя, как и сам класс.
Мы определили класс Auto_Cart который
является тем же классом Cart плюс имеет
конструктор, который инициализирует
корзину при создании, наполняя еЈ одним
товаром типа "10". Конструкторы также
могут иметь аргументы, и эти аргументы
могут быть необязательными, что делает
конструктор более полезным :
Помните основную арифметику из школы? Эти
операторы работают подобным образом
Таблица 7-1. Арифметические операторы Оператор деления("/") возвращает
целую величину(результат целочисленного
деления) если оба оператора - целые (или
строка преобразованная в целое). Если
каждый операнд является величиной с
плавающей запятой, выполнится деление с
плавающей запятой.
B действительности есть только один
оператор -- оператор конкатенации (".").
Основным оператором присваивания
является "=". Вы могли подумать что это
"равно"("equal to"). Но это не так. В
действительности это означает что левый
операнд получает значение выражения в
правых (собирательное присваивание).
Значением выражения присваивания
является присваиваемая величина. Так что
если "$a = 3", то это 3. Это позволит Вам
делать некоторые мудреные вещи:
В дополнение к основным операторам
присваивания есть дополнительные "комбинационные
операторы",для всех арифметических и
строковых операторов, что позволяет Вам
использовать значение в выражении и затем
устанавливать свое значение в результате
этого выражения. Например:
$a = 3; $a += 5; // теперь $a равно 8, как если бы
мы сказали: $a = $a + 5; Бинарные Операторы позволяют вам
изменять биты в целых числах.
Table 7-2.Бинарные Операторы Таблица 7-3. Логические операторы Разница в двух различных вариантах
операторов "and" и "or" - в различии
приоритетов операций. (см. ниже)
Операторы Сравнения, как и
подразумевается в их имени, позволяют Вам
сравнивать две величины.
Таблица 7-4. Операторы Сравнения ada_afetch -- загрузка строки результата
исполнения скрипта в массив ada_autocommit -- чтение и переключение флага
режима автоисполнения соединения See odbc_autocommit(). ada_close -- завершение соединения с сервером See odbc_close(). ada_commit -- совершение Adabas D транзакции See odbc_commit() ada_connect -- соединение с источником данных
Adabas D See odbc_connect(). ada_exec -- подготовка и исполнение SQL
инструкции See odbc_exec()
or odbc_do(). ada_fetchrow -- выборка строки из результата
исполнения скрипта See odbc_fetch_row(). ada_fieldname -- получение имени поля (столбца) See odbc_field_name(). ada_fieldnum -- получение номера поля See odbc_field_num(). ada_fieldtype -- получение типа данных поля See odbc_field_type(). ada_freeresult -- освобождение ресурсов,
отводимых под содержимое результата See odbc_free_result(). ada_numfields -- получение количества полей (столбцов)
в содержимом результата See odbc_num_fields(). ada_numrows -- количество строк (рядов) в
содержимом результата See odbc_num_rows(). ada_result -- получение данных из содержимого
результата See odbc_result(). ada_resultall -- распечатка результата в виде HTML
таблицы See odbc_result_all(). ada_rollback -- откат транзакции See odbc_rollback(). Выполняет подробный запрос для
указанного URI. Получает всю важную
информацию о заданном ресурсе и
возвращает эту информацию по классам.
Описание возвращаемых классов:
apache_note() это специальная
функция Apache которая получает и
устанавливает значения в таблице нотаций(примечаний)
запроса. При вызове с одним аргументом она
возвращает текущее значение note_name.
При вызове с двумя аргументами она
устанавливает значение нотации(примечания)
note_name в note_value и
возвращает предыдущее значение нотации(примечания)
note_name. Эта функция возвращает ассоциативный
массив из всех HTTP заголовков в текущем
запросе. Пример 1. GetAllHeaders()
Примечание: GetAllHeaders()
на данный момент это поддерживается
только если PHP запущен как модуль Apache. virtual() является спец.функцией
Apache, которая эквивалентна <!--#include
virtual...--> в mod_include. Она выполняет подзапрос
Apache. Применима для включения CGI скриптов
или .php файлов, или чего-нибудь еще, на чем
вы должны выполнить парсинг(анализ текста)
через Apache. Помните, что для CGI скриптов,
скрипт должен выдавать правильнывые
заголовки. Т.е. должне быть как минимуцм
Content-type заголовок. Для PHP файлов, вы должны
использовать include()
или require(). Возвращает массив параметров. Параметры
могут быть даныпо индексу при
использовании опрератора =>.
Помните что array() - это
языковая конструкция, и не является
регулярным выражением.
Следующий пример демонстрирует как
создавать двумерный массив, как
определять ключи для ассоциативного
массива, и как в пропускать-и-продолжать
числовые индексы в нормальном массиве. Пример 1. array()
См. также: list(). Применяет функцию с именем func
для каждого элемента массива arr.
Элементы проходят как первый аргумент
функции func; если func
требует больше чем один аргумент, будет
сгенерировано предупреждение всякий раз,
когда array_walk() вызывает func.
Эти предупреждения могут подавляться
добавлением знака '@' при вызове array_walk(),
или при использовании Помните, что func будет
работать с елементами массива arr,
так что все изменения сделанные над
элементами массива будут изменениями для
самого массива.
Пример 1. array_walk()
Эта функция сортирует массив так что
индексы массива поддерживают их
корреляцию с элементами массива с
которыми они связываются. Это
используется, главным образом, для
сортировки ассоциативных массивов, где
имеет значение фактический элементный
порядок. Пример 1. arsort()
Эта функция сортирует массив так что
индексы массива поддерживают их
корреляцию с элементами массива с
которыми они связываются. Это
используется, главным образом, для
сортировки ассоциативных массивов, где
имеет значение фактический элементный
порядок Пример 1. asort()
Возвращает число элементов в var,
который является естественно массивом (что
либо другое будет иметь один элемент).
возвращает 0 если переменная не
укстановлена.
возвражает 1 если переменная не является
массивом.
См. также: sizeof(),
isset(), и is_array(). Каждая переменная-массив имеет
внутренний указатель, который указывает
на один из своих элементов. Кроме того, все
элементы в массиве связываются
двунаправленным списком указателей для
дополнительных целей. Внутренний
указатель указывает на первый элемент,
который включался в массив пока Вы не
выполняли одну из функций, которые
модифицируют этот указатель в этом
массиве.
Функция current()просто
возвращает элемент массива, на который в
данный момент указывает внутренний
указатель. Он никак не перемещает
указатель. Если внутренний указатель
указывает на конец списка элементов, current()
возвращает false(ложно).
Внимание: если массив
содержит пустые элементы (0 или "",
пустую строку), то функция возвратит
"false" для каждого из них. Это
показывает, что текущий элемент является
нулевым значением или вы дошли до конца
массива. Для того, чтобы правильно
просматривать массив, используйте функцию
each().
Возвращает следующую пару ключ/значение
из массива array и
предоставляет курсор массива. Эта пара
возвращается в четырех-элементный массив,
с ключами 0, 1, key,
и value. Элементы Пример 1. each()
$bar теперь содержит
следующие пары ключ/значение:
0 => 0 1 => 'bob' key => 0 value => 'bob' $bar теперь содержит
следующие пары ключ/значение:
0 => 'Robert' 1 => 'Bob' key => 'Robert' value => 'Bob' each(), как правило,
используется вместе с list()
чтобы просмотреть массив; например,
$HTTP_POST_VARS: Пример 2. Просмотр $HTTP_POST_VARS с
помощью each()
См. также key(),
list(), current(),
reset(), next(),
и prev(). end() перемещает array's
внутренний указатель на последний элемент
массива.
key() Возвращает индекс
элемента в текущей позиции массива
Сортирует массив по ключу, используя
ключ для корреляциях данных. Это полезно
главным образом для ассоциативного
массива. Пример 1. ksort()
Подобно array(),
функция list в действительностью является
языковой конструкцией а не функцией list()
используется для связи списка переменных
одной операцией. Пример 1. list()
Возвращает следующий элемент массива, от
текущей позиции внутреннего указателя
массива, или "ложь"(false) если нет
больше элементов. Внимание:
если массив содержит пустые элементы,
тогда эта функция возвратит "ложь"(false)
и для этих элементов. Чтобы правильно
просмотреть массив, который может
содержать пустые элементы, смотрите
функцию each().
next() ведет себя подобно current(),
с одной лишь разницей. Он передвигает
внутренний указатель массива на один
элемент вперед прежде, чем возвратить
элемент. Это означает что он возвращает
значение следующего элемента и
передвигает на него внутренний указатель
массива. Если при обращении к следующему
элементу обнаружен конец массива - next()
возвращает "ложь"(false).
Возвращает предыдущий элемент массива,
или "ложь"(false), если перед текущим нет
больше элементов. Внимание:
если массив содержит пустые элементы, то
функция возвратит "ложь" и на этих
элементах. Чтобы правильно просмотреть
массив, который может содержать пустые
элементы, смотрите функцию each().
prev() ведет себя подобно next(),
за исключением того что он переводит
внутренний указатель массива на одну
позицию назад, а не вперед.
reset() возвращает внутренний
указатель массива в
первый элемент.
reset() возвращает
первыйэлемент массива.
Сортирует массив в обратном порядке (по
убыванию). Пример 1. rsort()
Эта функция сортирует масси - все
элементы по окончании ее работы будут
расположены по возрастанию. Пример 1. sort()
Эта функция сортирует массив так что
индексы массива поддерживают их
корреляцию с элементами массива с которой
они связываются. Т. е. при такой сортировке
используются индексы. функции сравнения
задает пользователь. Эта функция отсортирует ключи массива
используя функции сравнения, определенные
пользователем. Если массив, который Вы
хотите отсортировать, должен
сортироваться некоторыми не-тривиальными
критериями, Вы должны использовать эту
функцию. Пример 1. uksort()
См. также arsort(),
asort(), uasort(),
ksort(), rsort()
и sort(). Эта функция отсортирует массив по
значениям используя используя функции
сравнения, определенные пользователем.
Если массив, который Вы хотите
отсортировать должен сортироваться по
некоторым не-тривиальным критериям, Вы
должны использовать эту функцию. Пример 1. usort()
Данные BC функции задействованы только
при условии что PHP был скомпилирован в
режиме --enable-bcmath, т.е. при включенных в
конфигурацию bcmath функциях. bcadd -- Сложение двух чисел произвольной
точности. string bcadd(string левый операнд, string правый
операнд, int [масштаб]); Прибавляет левый операнд к
правому операнду и
возвращает сумму типа string (строковая
переменная). Факультативный
параметрмасштаб используется чтобы
установить количество разрядов после
десятичной отметки в результате.
Смотрите также bcsub(). bccomp -- Сравнение двух чисел произвольной
точности. Сравнивает левый операнд с
правым операндом и
возвращает результат типа integer (целое).
Факультативный параметр масштаб
используется для установки количества
цифр после десятичной отметки,
используемых при сравнении. При равенстве
двух операндов возвращается значение 0.
Если левый операнд больше правого
операнда возврашается +1, и если
левый операнд меньше правого
операнда возвращается -1. bcdiv -- Операция деления для двух чисел
произвольной точности. Делит левый операнд на
правый операнд и
возвращает результат. Факультативный
параметр масштаб
устанавливает количество цифр после
десятичной отметки в результате.
Смотрите также bcmul(). bcmod -- Получение модуля числа
произвольной точности. string bcmod Получение модуля левого
операнда используя операнд модуль.
Смотрите также bcdiv(). bcmul -- Операция умножения для двух чисел
произвольной точности. string bcmul Умножает левый операнд на
правый операнд и возвращает
результат. Факультативный параметр масштаб
устанавливает количество цифр после
десятичной отметки в результате.
Смотрите также bcdiv(). bcpow -- Возведение одного числа
произвольной точности в степень другого. string bcpow Возведение x в степень y.
Параметр масштаб может
использоваться для установки количества
цифр после десятичной отметки в
результате.
Смотрите также bcsqrt(). bcscale -- Устанавливает масштаб по
умолчанию для всех математических BC-функций string bcscale Эта функция устанавливает заданный по
умолчанию параметр масштаба для всех
последующих математических BC-функций,
которые явно не определяют параметр
масштаба. bcsqrt -- Получение квадратного корня числа
произвольной точности. string bcsqrt Возвращает кваддратный корень операнда.
Факультативный параметр масштаб
устанавливает количество цифр после
десятичной отметки в результате.
Смотрите также bcpow(). bcsub -- Вычитает одно число произвольной
точности из другого. string bcsub Вычитает правый операнд из
левого операнда и
возвращает результат типа string.
Факультативный параметр масштаб
устанавливает количество цифр после
десятичной отметки в результате.
Смотрите также bcadd(). Календарные функции - доступны только
если Вы скомпилировали календарное
расширение в dl/calendar. Смотрите dl/README для
получения инструкций.
Календарное расширение в PHP представляет
серию функций, которая упрощает
преобразование между разными календарными
форматами. Посредником прообразования
является дневной Юлианский счет. Дневной
Юлианский счет это самый старый счет дней (около
4000 д.э.). Чтобы менять числа между разными
календарными системами, Вы должны сначала
преобразовать вашу дату в дневной
Юлианский счет, а только затем в
календарную систему по вашему выбору.
Дневной Юлианский счет отличается от
Юлианского Календаря! Более подробно о
календарной систем смотрите на сайте: http://genealogy.org/~scottlee/cal-overview.html.
Отрывки с этой страницы включаются в данной
инструкцие.
Преобразование дневного Юлианcкого счета
в Грегорианскую в формате "месяц/день/год"
Правильный дипазон для Грегорианского
календаря 4714 д.э. до 9999 н.э.
Хотя это программное обеспечение может
оперировать даты в обратном порядке до 4714 д.э.,
такое использование может быть бесполезно
и не значительно. Грегорианский календарь
не был учрежден до Октября 15, 1582 (или Октябрь
5, 1582 в Юлианском календаре). Некоторые
страны еще очень долго не принимали его.
Например, Великобритания преобразовалась в
1752, СССР в 1918 и Греции в 1923. Наиболее
Европейские страны использовали Юлианский
Календарь До Грегорианского.
Пример 1. Календарные функции
Преобразование дневного Юлианского счета
в строку, содержащую дату Юлианского
Календаря в формате "месяц/день/год".
Правильный дипазон для Юлианского
календаря 4713 д.э. до 9999 н.э.
Хотя это программное обеспечение может
оперировать даты в обратном порядке до 4713 д.э.
такое использование может быть бесполезно
и не значительно. Календарь был создан в 46 д.э.,
но подробные не стабилизировался до по
крайней мере 8 н.э., и возможно познее в 4-ом
столетии. Также, начало года различно от
одной культуры к другой - не все соглашаются,
что Январь это первый месяц.
Преобразование дневного Юлианского счета
в Еврейский календарь
Еврейский календарь использовался в
течение нескольких тысячалетий, но в
течение начального периода не было никакой
формулы, чтобы определить начало месяца.
Новый месяц начинался когда замечено
полнолуние.
преобразовывает дневной Юлианский счет в
Французский Республиканский календарь
преобразовывает дату и Французского
Республиканского календаря в дневной
Юлианский счет
Эта программа преобразовывают даты в
начиная с 1 до 14 (Грегорианские даты 22
Сентября 1792 до 22 1806 Сентября). Это покрывает
тот период когда календарь использовался.
Возвращает строку с названием месяца. Стол 1. Календарные способы Возвращает день недели. Может возвратить
строку( Стол 1. Календарные недельные пути Возвращает true если данная дата правильна,
иначе false. Проверяет правильность даты,
заданной аргументами. Дата считается
правильной, если:
год между 1900 и 32767 включительно месяц между 1 и 12 включительно день находится в диапазоне
разрешенных дней данного месяца.
Високосные годы учитываются. Возвращает строку, отформатированную
согласно данной строке и используя данную временную
метку или текущее локальное время,
если не задана временная метка.
В фоматной строке должны использоваться
следующие символы:
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()
Функции date() и mktime()
возможно использовать вместе для того,
чтобы найти даты в будущем или прошлом. Пример 2.Пример функций date()
и mktime()
Для того, чтобы отформатировать даты на
других языках, Вы должны использовать
функции setlocale()
и strftime()
Возвращает строку, отформатированную
согласно данной форматной строке и
используя данную временную
метку или текущее локальное время,
если метка не задана. Названия месяцев и
недель и другие, зависящие от языка строки,
зависят от текущего 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()
и mktime() . Возвращает ассоциативный массив,
содержащий информацию о дате со
следующими элементами:
"seconds" - секунды "minutes" - минуты "hours" - часы "mday" - день месяца "wday" - день недели, цифровой "mon" - месяц, цифровой "year" - год, цифровой "yday" - день года, цифровой; т.е.
"299" "weekday" - день недели, текстовый,
полный; т.е. "Friday" "month" - месяц, текстовый, полный; т.е.
"January" Аналогична функции date()
за исключением того, что время
возвращается в Гринвичском формате Greenwich
Mean Time (GMT). Например, при запуске в Финляндии
(GMT +0200), первая строка ниже напечатает "Jan
01 1998 00:00:00", в то время как вторая строка
напечатает "Dec 31 1997 22:00:00".
Пример 1. пример gmdate()
См.также date() ,
mktime() и gmmktime()
. Предупреждение: Обратите
внимание на необычный порядок аргументов,
который отличается от порядка аргументов
в вызове функции mktime() из UNIX, и который
нехорошо ведет себя при неправильно
заданных параметрах (см.ниже). Это очень
часто встречающаяся ошибка в скриптах.
Возвращает временную метку Unix согласно
данным аргументам. Эта временная метка
является целым числом, равным количеству
секунд между эпохой Unix (1 Января 1970) и
указанным временем.
Аргументы могут быть опущены с права
налево; каждый опущенный таким образом
аргумент будет установлен в текущую
величину согласно локальной дате и
времени.
MkTime is useful for doing date arithmetic and validation, as it MkTime
полезена при арифметических дейтсвиях с
датой и ее проверкой, она будет
автоматически вычислять корректную
величину для вешедших за границы
параметров. Например, каждая из следующих
строк возвращает строку "Jan-01-1998".
Пример 1. Пример mktime()
Идентична mktime()
за исключением передаваемых параметров,
представляющих дату в GMT. Возвращает текущее время, измеренное в
числе секунд с эпохи Unix (1 Января 1970 00:00:00 GMT).
См.также date() . Возвращает строку "msec sec" где sec
текущее время, измеренное в числе секунд с
эпохи Unix (0:00:00 1 Января, 1970 GMT), а msec - это
часть в микросекундах. Эти функции
доступны только в операционных системах,
поддерживающих системный вызов gettimeofday().
См.также time() . Не поддерживаются индексы и мемо(записи)
поля. Также не поддерживается блокировка.
Два webсервер процесса, одновременно
изменяющие файлы dBase вполне возможно
повредят вашу базу данных.
В отличие от баз данных SQL, в dBase нельзя
изменять определение полей после их
создания. Если только файл создан, то поля
базы данных фиксировано определены. Не
имеется никаких индексов, которые
ускоряют поиск или иначе организовывает
ваши данные. dBase файлы - это простые
последовательные файлы с записями
фиксированного размера. Записи
добавляются в конец файла и удаленные
записи будут присутствовать в вашей базе
до тех пор, пока вы не вызовете dbase_pack()
функцию.
Мы рекомендуем вы не использовать dBase
файлы для профессионального
использования фаз данных. Выберете взамен
какой-нибудь реальный SQL сервер; MySQL или
Postgres лучший выбор для работы вместе с PHP.
Поддержка dBase введена для импорта и
экспорта ваших данных из и в вашу web базу
данных, так как этот формат обычно
понимают многие программы, например
электронные таблицы, в Windows. Поддержка dBase
для любого экспорта или импорта данных
хорошо выполняет эти условия. Доступные типы полей:
Возвращает dbase_identifier(идентификатор базы
данных) для открытой базы данных, или false(ложь)
если база данных не была открыта. Все поля преобразовываются в
соответствующий PHP тип. (Даты остаются
строками.) Эти функции позволяют работать с записями
dbm-подобных баз данных. Данный тип баз
данных (поддерживается как библиотеками
Berkley db, gdbm и некоторыми другими, так и
встроенной в PHP3 библиотекой) оперирует с
парами ключ/значение (в противоположность
полноценным записям, поддерживаемым
реляционными базами данных).
Пример 1. Пример dbm
dbmopen -- открывает базу данных dbm
Первый аргумент - это полный путь к
открываемому dbm-файлу, а второй - режим
открытия файла, который может быть
следующим: "r","n", "w"
соответственно только для чтения, создания
(включает чтение-запись и может обрезать
уже существующую базу данных с тем же
именем) и чтения-записи.
Возвращает идентификатор, который в
дальнейшем передается другим dbm-функциям,
или false при неуспехе.
Если используется поддержка ndbm, создаются
файлы filename.dir и filename.pag. gdbm использует только
один файл, и Berkley db создает файл filename.db.
Заметьте, что PHP3 самостоятельно делает свою
собственную блокировку в дополнение к
блокировке самой dbm-библиотки. PHP не удаляет
.lck-файлы, созданные этой библиотекой, а
рассматривает эти файлы просто как
фиксированные i-узлы на которые надо делать
блокировку. Более полную информацию о dbm-файлах
можно получить на ftp://prep.ai.mit.edu/pub/gnu и man-страницах.
dbmclose -- закрывает базу данных dbm
Разблокирует и закрывает указанную базу
данных.
dbmexists -- сообщает, существует ли в базе
данных значение для ключа
Возвращает true если существует значение,
ассоциируемое с ключом key.
dbmfetch -- извлекает из базы данных значение
ключа
Возвращает значение ключа key.
dbminsert -- вставляет в базу данных значение
ключа
Добавляет в базу данных значение с
указанным ключом key.
Возвращает -1 если база данных была
открыта в режими только чтение, 0 если
добавление произошло успешно и 1 если
указанный ключ уже существует. (Для замены
значения следует использовать dbmreplace().)
dbmreplace -- заменяет значение ключа
Замещает значение указанного ключа. Если
ключ не существует, функция добавляет его в
базу данных.
dbmdelete -- удаляет занчение ключа из базы
данных
Удаляет значение ключа из базы данных.
Возвращает false если ключ в базе данных не
существует.
dbmfirstkey -- возвращает первый ключ из базы
данных
Возвращает первый ключ базы данных.
Заметьте, что упорядочивание не
гарантируется, т.к. база данных может быть
построена на основе хэш-таблиц, которые не
предусматривают упорядочивание.
dbmnextkey -- возвращает следующий ключ базы
данных
Возвращает ключ, следующий после ключа key.
С помощью вызова dbmfirstkey(), а затем dbmnextkey()
возможно пройти по всем парам ключ/значение
в базе данных. Например:
Пример 1. Прохождение по всем парам ключ/значение.
dblist -- описывает используемые dbm-совместимые
библиотеки
Если параметр array установлен, то
указанный массив будет заполнен выводом
из программы. Помните, если массив уже
содержит данные, то exec() добавляет свои
данные. Если вы не хотите, что бы функция
добавляла данные, вызывайте unset()
для массива перед использованием exec().
Если параметр return_var установлен
наряду с параметром array, то в него
записывается результат выполнения
команды.
Обратите внимание, что если ваша функция
будет использовать данные из ввода
пользователей, то надо использовать EscapeShellCmd()
для того, что бы пользователи не смогли
запустить произвольные программы.
См. также system(), PassThru(),
popen() и EscapeShellCmd(). Обратите внимание, что если ваша функция
будет использовать данные из ввода
пользователей, то надо использовать EscapeShellCmd()
для того, что бы пользователи не смогли
запустить произвольные программы.
Вызов System() также
пробует автоматически вставить в буфер
вывода web сервера после каждой строки
вывода, если PHP запущен как модель сервера.
Если вы хотите запустить команду и
использовать все данные непосредственно
без всякого вмешательства других программ,
то используйте функцию PassThru().
См. также exec() и popen()
функции. См. также exec() и fpassthru(). Эти функии предоставляют доступ "только
для чтения" к данным в базе данных filePro.
filePro зарегистрированная торговая марка
Fiserv, Inc. Более подробную информацию о filePro вы
можете наяти на http://www.fileproplus.com/.
Читает и верифицирует map-файл, сохраняя
файловый счетчик и инфо.
Никакой блокировки не предусмотрено,
поэтому вам следует избегать модификации
вашей filePro базы данных, пока она открыта в PHP.
Возвращает имя поля по соответствующему
номеру field_number.
Возвращет тип поля, соответствующего
номеру field_number.
Возвращает ширину поля по номеру поля field_number.
Возвращает данные из указанной ячейки
базы данных.
Возвращает количество полей (колонок) в
открытой базе filePro.
Смотри также filepro().
Возвращает количество строк в открытой
базе filePro. Смотри также filepro(). Получив строку, содержащую путь у файлу,
данная функция возвратит базовое имя файла.
В Windows оба слеша - передний (/) и
обратный (\) - используются как
разделители при задании пути. В других
окружениях это только передний слеш (/).
Пример 1. basename() example
Смотри также: dirname()
Пытается изменить группу файла filename
на group. Только супервизор может изменить
текущую группу на любую случайную; другие
пользователи могут менять группу только на
любую из тех, для которых они являются
пользователями.
Возвращает true при успешном завершении; в
противном случае - false.
В Windows ничего не происходит и возвращается
true.
смотри также chown() и chmod().
Пытается изменить режим файла, указанного
в filename на mode.
Заметим, что mode не присваивает
автоматически восьмиричное значение, вам
необходим префикс mode с нулем (0):
Возвращает true при успешном завершении; в
противном случае - false.
смотри также chown() и chgrp().
Пытается изменить владельца файла filename
на пользователя user. Только суперюзер
может изменять владельца файла.
Возвращает true при успешном завершении; в
противном случае - false.
Note: В Window ничего не выполняется и
возвращается true. Смотри также chown() и chmod().
Вызовы системных функций stat() или lstat() в
большинстве систем достаточно "дорогостоящие".
Поэтому, результаты последнего вызова
любой из статусных функций (см. ниже)
сохраняются для последующего
использования при вызове этой же функции
для этого же файла. Если вы желаете
инициировать новый кеш, например, в случае,
когда к файлу было много обращений по
проверке статуса, или файл был изменен,
используйте эту функцию для очистки памяти
результатов вызовов.
Affected functions include stat(), lstat(),
file_exists(), is_writeable(),
is_readable(), is_executable(),
is_file(), is_dir(),
is_link(), Создает копию файла. Возвращает true при
успешном завершении; в противном случае -
false. Пример 1. copy()
смотри также: rename()
Получив строку, содержащую путь у файлу,
данная функция возвратит директорию,
содержащую файла.
В Windows оба слеша - передний (/) и
обратный (\) - используются как
разделители при задании пути. В других
окружениях это только передний слеш (/). Пример 1. dirname()
смотри также: basename()
Указатель на файл fp закрывается.
Возвращает true при удачной операции и false
при ошибке.
Возвращает true если указатель файла равен
EOF или в случае ошибки; в противном случае
возвращается false.
Указатель должен быть действующим и
указывать на файл, успешно открытый fopen(),
popen(), или fsockopen().
Возвращает строку, содержащую один символ,
прочитанный по файловому указателю fp.
При EOF возвращается false (as does feof()).
Указатель должен быть действующим и
указывать на файл, успешно открытый fopen(),
popen(), или fsockopen().
Смотри также fopen(), popen(),
fsockopen(), и fgets().
Возвращает строку до length - читается по
одному байту из файла, указанного в fp.
Чтение заканчивается, если прочитано length
символов - 1 байт прочитается в любом случае,
или до символов перевода строки и возврата
караетки, или до EOF.
При ошибке возвращается false.
Указатель должен быть действующим и
указывать на файл, успешно открытый fopen(),
popen(), или fsockopen().
Смотри также fopen(), popen(),
fgetc(), и fsockopen().
Идентично fgets(),
отличают fgetss попытки удалить HTML и PHP
тэги из прочитанного текста.
Смотри также fgets(), fopen(),
fsockopen(), и popen().
Идентична readfile(), но file()
выдает файл в массив. Каждый элемент
массива соответствует строке файла (вместе
с символом возврата строки).
Смотри также readfile(), fopen(),
и popen().
Возвращает true, если файл, определенный в filename,
существует; иначе - false.
Смотри также clearstatcache().
Возврвщет время последнего усешного
обращения к файлу, или false в случае ошибки.
Возвращается время последего изменения
файла, или false в случае ошибки.
Возврашает ID группы владельца файла, или
false в случае ошибки.
Возвращает номер inode файла, или false в
случае ошибки.
Возвращается время последего изменения
файла, или false в случае ошибки.
Возвращает ID пользователя, владельца
файла, или false в случае ошибки.
Возвращает разрешения, установленные для
файла, или false в случае ошибки.
.
Возвращает размер файла, или false в случае
ошибки.
В случае ошибки возвращется false
Если filename начинается с "http://"
(без учета регистра), открывается
соединение HTTP 1.0 с указанным сервером и
возвращается указатель файла, нга начало
текста ответа.
Поскольку редиректы HTTP не обрабатываются,
вы должны включать в указание директории
завершающие слеши.
Если filename начинается с "ftp://"
(без учета регистра), открывается ftp
соединение с указанным сервером и
возвращается указатель на искомый файл.
Если сервер не поддерживает режим
пассивного ftp, данная операция завершится
ошибкой. Вы можете открывать файлы как для
чтения, так и для записи через ftp (но не обе
операции одновременно).
Если filename начинается как-нибудь
иначе, откравается файл вашей файловой
системы, и возвращается указатель на
открытый файл.
Если при открвтии файла происходит ошибка,
функция возвращает false.
mode выбирается из следующего
списка:
'r' - Открыть только для чтения, помещает
указатель на начало файла. 'r+' - Открыть для чтения и для записи,
помещает указатель на начало файла. 'w' - Открыть только для записи, помещает
указатель на начало файла и очищает все
содержимое файла. Если файл не сществует,
создается новый файл 'w+' - Открыть для чтения и для записи,
помещает указатель на начало файла и
очищает все содержимое файла. Если файл
не сществует, создается новый файл. 'a' - Открыть только для записи, помещает
указатель на конец файла. Если файл не
сществует, создается новый файл. 'a+' - Открыть для чтения и для записи,
помещает указатель на конец файла. Если
файл не сществует, создается новый файл. Пример 1. fopen()
Если вы испытываете проблемы с чтением и
записью в файл, используя PHP как серверный
модуль, помните, что используемые вами
файлы и директории должны быть доступными
для серверных процессов
На платформе Windows будьте осторожны,
избегая обратных слешей в путях или
используйте передние слеши.
Смотри также fclose() , fsockopen(),
и popen().
Читает до EOF по полученному указателю
файла и записывает результат на
стандартное устройство вывода.
При возникновении ошибки fpassthru()
возвращает false.
Файловый указатель должен быть
действующим и указывать на файл, успешно
открытый fopen() popen(),
or fsockopen(). Файл,
закрытый fpassthru(), не читается, оставляя fp
неиспользованным.
Если вы хотиде стедать дамп файла на stdout,
вы можете использовать readfile(),
которая сэкономит вам один вызов fopen().
Смотри также readfile(), fopen(),
popen(), и fsockopen()
fputs() - это псевдоним fwrite(),
и обе функции полностью идентичны. Заметим,
что параметр length опционален и при
его отсутствии записывается вся строка str.
fread() читает байты из файла, на который
ссылается fp до length. Чтение
заканчивается, когда прочитано length
байт или достигнут EOF.
Смотри также fwrite(), fopen(),
fsockopen(), popen(),
fgets(), fgetss(),
file(), и fpassthru().
Для файла fp устанавливает указатель в
потоке файла на смещение в offset байт.
Эквивалентно вызову в Си fseek( fp, offset, SEEK_SET ).
При удачном выполнении возвращает 0, в
противном слчае возврщается -1. ЗАметим, что
поиск после EOF не рассматривается как
ошибка.
Не испоьзуется для файловых указателей,
возвращенных fopen() при
использовании форматов "http://" или
"ftp://".
Смотри также ftell() и rewind().
Возвращает позицию указателя в файле, на
который ссылвется fp, т.е. смещение в
потоке файла.
При возникновении ошибки возвращается
false.
TФайловый указатель должен быть
действующим и указывать на файл, успешно
открытый fopen() или popen().
Смотри также fopen(), popen(),
fseek() и rewind().
fwrite() записывает содержимое string
в файловый поток, указанный fp. Если
аргумент length присутствует, запись
останавливается после записи length-го
байта, или после записи всей строки string.
Заметим, что если есть аргумент length,
то конфигурационные опции magic_quotes_runtime
игнорируются и никакие слеши из string
не удаляются.
Смотри также fread(), fopen(),
fsockopen(), popen(),
и fputs().
Возвращает true, если filename существует и
это директория.
Смотри также is_file() и is_link().
Возвращает true, если filename существует и
является исполнимым файлом.
Смотри также is_file() и is_link().
Возвращает true, если filename существует и
является обычным файлом.
Смотри также is_dir() и is_link().
Возвращает true, если filename существует и
является символической ссылкой.
Смотри также is_dir() и is_file().
Возвращает true, если filename существует и
является доступным для чтения.
Помните, что PHP может иметь доступ к файлу
как поьлзователь, под чьим id запущен веб-сервер
(часто 'nobody'). Ограничения безопасного
режима не действуют внутри аккаунта.
Смотри также is_writeable().
Возврвщает true если файл существует и
доступен для записи.
Помните, что PHP может иметь доступ к файлу
как поьлзователь, под чьим id запущен веб-сервер
(часто 'nobody'). Ограничения безопасного
режима не действуют внутри аккаунта.
Смотри также is_readable().
link() cсоздает жесткую
ссылку.
Смотри также symlink()
создает символическую ссылку, и readlink()
вместе с linkinfo().
linkinfo() возвращает
поле st_dev из UNIX C структуры stat, возвращенной
системным вызовом lstat. Эта функция
используется для верификации, если ссылка (указанная
в path) реально существует (испотльзует
те же методы, что и макрос S_ISLNK, определенный
в stat.h). Возвращает 0 или FALSE в случае ошибки.
Смотри также symlink(), link(),
и readlink().
Пытается создать директорию, указанную в pathname.
Заметим, что если вы захотите указать mode
в восьмеричной системе, то число должно
начинаться с 0.
Возвращает true при успешном выполнении и
false при ошибке.
Смотри также rmdir().
Закрывает файловый указатель к каналу,
открытому popen().
Файловый указатель должен быть
действующим и возвращен успешным вызовом popen().
Возврващает статус завершения
запущенного процесса.
Смотри также popen().
ОТкрывает канал к процессу, исполняемому
путем форкинга команды command.
Возвращает файловый указаель, идентичный
возвращемому fopen(), но
этот указатель мононаправленный (может
использоваться только для чтения или
только для записи) и должен бытть закрыт pclose().
Этот указатель можно использовать с fgets(),
fgetss(), и fputs().
При возникновении ошибки возвращет false.
Смотри также pclose().
Читает файл и записывает его на
стандартное устройство вывода.
Возвращает количество прочитанных байтов.
В случае возникновения ошибки возвращется
false и за исключением функции, вызванной как
@readfile, выводится сообщение об ошибке.
Если filename начинается с "http://"
(без учета регистра), открывается
соединение HTTP 1.0 к указанному серверу и
текст ответа выводится на стандартное
устротйство вывода.
Поскольку редиректы HTTP не обрабатываются,
вы должны включать в указание директории
завершающие слеши.
Если filename начинается с "ftp://"
(без учета регистра), открывается ftp
соединение с указанным сервером и файл
ответа выводится на стандартное устройство
вывода. Если сервер не поддерживает режим
пассивного ftp, этот вызов завершится
ошибкой.
Если filename начинается как-нибудь
иначе, будет открыт файл файловой системы и
его ссодержимое выведется на стандартное
устройство вывода.
Смотри также fpassthru(),
file(), fopen(),
include(), require(),
и virtual().
readlink() работает
аналогично функции Си readlink и возвращает
содержимое символической ссылки path или
0 в случае ошибки.
Смотри также symlink(), readlink()
и linkinfo().
Пытается переименовать oldname в newname.
Возвращает true при успешном выполнениии и
false при сбое.
Позиционирует файловфй указатель для fp
на начало потока файла.
При возникновении ошибки возвращается 0.
Файловый указатель должен быть
действующим и указавать на файл, успешно
открытый fopen().
Смотри также fseek() и ftell().
Пытается удалить директорию, указанную
путем. Директория лдолжна быть пустой, и
релевантные разрешения должны допустить
это.
При возникновении ошибкт возвращается 0.
Смотри также mkdir().
Собирает статичтику о файле filename.
Возвращает массив статистической
информации о файле со следующими
элементами:
устройство inode номер ссылки id пользователя или владельца id группы владельца device type if inode device * размер в байтах время последнего доступа время последней модификации время последнего изменения размер блока для I/O файловой системы * количество занатых блоков Собирает информацию и файле иил
символической ссылке filename. Эта функция
идентична stat(), но если filename
- это символическая ссылка, то возвращается
статус символической ссылки, а не статус
файла, на который указывает данная ссылка.
Возвращает массив статистической
информации со следующими элементами:
устройство inode число ссылок id пользователя или владельца id группы владельца тип устройства, если inode - устройство * размер в байтах время последнего доступа время последней модификации время последнего изменения размер болка для I/O файловой системы * количество занатых блоков symlink() создает символическую ссылку с
существующей целью target с указанным
именем link.
Смотри также link()
создает жесткую ссылку, и readlink()
вместе с linkinfo().
Создает никальное имя файла в указанной
директории. Если директория не существует, tempnam()
может сгененрировать имя файла во
временной директории системы.
Возвращает новое временное имя файла, или
нулевую строку при ошибке. Пример 1. tempnam()
Пытается установить время модификации
файла filename в значение time. Если опция time
отсутствует, испотьлзуется текущее время.
Если файл не существует, то он создается.
Возвращает true при успешном выполнении и
false в обратном случае.
umask() устанавливает
текущую umask PHP в mask & 0777 и возвращает
старую umask. Когда PHP используется ска
серверный модуль, umask сохраняется при
завершении каждого запроса.
umask() без аргументов
возвращает текущую маску.
Удаляет filename. Аналогично функции
Unix C unlink().
Возвращает 0 или FALSE при ошибке.
Смотри также rmdir() для
удаления директорий. Эти функции позволяют вам управлять
ывводом на удаленный браузер на уровне
протокола HTTP.
Функция Header()
используется в начале HTML-файла
для отправки строки HTTP
заголовка. Смотри HTTP
1.1 Specification для более подробной информации
о заголовках HTTP.
PHP-скрипты часто генерируют динамический
HTML, который не следует кешировать на
клиентском браузере или прокси-сервере.
Многие прокси и клиенты можно заставить
отключить кеш: SetCookie() определяет
кук, который будет послан вместе с
остальной информацией из заголовка. Все
аргументы, исключая name опциональны.
Если присутствует только аргумент name,
кук с указанным именем будет удален с
клиента. Вы также можете представить любой
из аргументов пустой строкой, с целью
пропуска оного (""). Параметры expire
и secure являются целочисленными и ен
могут быть заменены пустыми строками. Для
этой цели используют (0). Аргумент expire
- это стандартное время Unix, возвращаемое
функциями time() или mktime().
secure показывает, что кук следует
передавать только по защищенному
соединению HTTPS. Некоторые примеры: Пример 1. SetCookie
Заметим, что значимые части кука при
посылке будут автоматически урл-кодированы,
тогда как при приеме кука - автоматически
декодированы и присвоены переменным с
соответствующими именами. Для просмотра
содержания тестового кука в скрипте, просто:
Для получения более подробной информации
о куках, смотрите спецификацию Netscape по http://www.netscape.com/newsref/std/cookie_spec.html.
Microsoft Internet Explorer 4 с Service Pack 1 могут
некорректно работать с куками, где
установлен параметр path. Hyperwave был разработан IICM
в Гразе (Graz). Первоначально пакет назывался
Hyper-G и был изменен на Hyperwave
после коммерциализации (где-то в 1996).
Hyperwave не является свободно
распространяемым ПО. Текущая версия, 4.0,
доступна www.hyperwave.com.
Существует 30-дневная версия.
Hyperwave - это информационная сиситема,
похожая на базы данных (HIS,
Hyperwave Information Server). Она напраавлена на
хранение документов и управление ими.
Документом может быть любая часть данных,
которая может быть сохранена в файле.
Каждый документ сопровождается своей
объектной записью. Объектная запись
содержит мета-данные документа. Мета-данные
- это список атрибутов, который может быть
расширен пользователем. Постоянные
атрибуты всегда назначаются сервером
Hyperwave, остальные могут меняться
пользователем.
Помимо документов, все содержащиеся в
документах гиперссылки также сохраняются
в виде объектных записей. Гиперссылки,
содержащиеся в документе, при его вставке
в базу данных удаляются и сохраняются в
виде отдельных объектов. объектные записи
ссылок содержат информацию о начале и
конце ссылки. Для восстановления
оригинала документа вым нужно будет
получить "плоский" докумет, без
ссылок, список ссылок и заново вставить их
в документ. Для этого предназаначены
функции hw_pipedocument()
и hw_gettext().
Преимущества выделения ссылок из
документа очевидны. Как только документ,
на который указывает ссылка, изменит свое
имя, соответствующая ссылка также может
быть легко изменена. Документ, содержащий
ссылки, не подвержен изменениям. Вы даже
можете добавить в документ ссылку, не
изменяя его.
Говорят, что hw_pipedocument()
и hw_gettext()
выполняют вставку ссылок в документ
автоматически, однако быстро сказка
сказывается, да не просто дело делается.
Вставка ссылок предполагает неизменную
иерархию документов. На веб-сервере
существует иерархия, полученная от
файловой системы, но Hyperwave имеет свою
собственную иерархию и имена не отражают
позицию объекта в этой иерархии. Поэтому
оздание ссылок прежде всего требует
маппинга имен из иерархии Hyperwave в
соотвествующие имена иерархии веб.
Фундаментальное отличие между Hyperwave и Веб
заключается в том, что в Hyperwave имя и
иерархия - суть разные понятия. Имя не
содержит никакой информации о положении
объекта в иерархии. В Веб имя содержит и
информацию о том, гед объект расположен
иерархически. Это указывает на два
возможных пути маппинга. В URL можно
отражать иерархию Hyperwave и имя объекта или
только имя. С цель сделать вещи проще,
второй вариант более применим. Объект
Hyperwave с именем 'my_object' мапится в
'http://host/my_object' безотносительно к его
положению в иерархии Hyperwave. Объект с именем
'parent/my_object' может быть порожден 'my_object' в
иерархии Hyperwave, однако в пространстве имен
Веб оно проявится как противоположное и
пользователь может быть неприятно удивлен.
Это может быть предотвращено только путем
оригинального именования объектов.
Применение этого решения порождает
вторую проблему. Как вы запускаете php3? URL
http://host/my_object не вызовет ни одного скрипта
php3 до тех пор, пока вы не укажете вашему веб-скрверу
переписать ее подобным образом:
'http://host/php3_script/my_object' и переменная $PATH_INFO
должна быть равна скрипту 'php3_script', и
возвращется объект с именем 'my_object' от Hyperwave
сервера. Это только один недостаток,
который может быть исправлен легко.
Переписывание URL не дает доступа к другим
документам веб-сервера. Скрипт php3 для
поиска в Hyperwave сервере принципиально
невозможен. По этой причине вам необходимо
по меньшей мере два переназначения
правила для исключения постоянных URLов,
начинающихся с http://host/Hyperwave. Это - основное
разделение пространства имен между Hyperwave и
веб серверами.
На основе вышеизложенных механизмов
ссылки вставляются в документ.
Это получается более сложно, если php3 не
запущено как скрипт module/CGI, а как
самостоятельное приложение, т.е. дампит
содержимое Hyperwave сервера на CD-ROM. В этом
случае имеет смысл сохранять иерархию
Hyperwave и мапить ее на файловую систему. Это
может вызвать конфликты с именамаи
объектов если оини отражают свою
собственную иерархию (если имена включают
символ "/"). Однако, "/" может быть
заменен на другой символ, типа "_", и
все вроде встенет на свои места.
Сетевой протокол соединяется с Hyperwave
сервером HG-CSP
(Hyper-G Client/Server Protocol). Он основан на
сообщениях, инициирующих определенный
события, например получекния объектной
записи. Вранних версиях Hyperwave сервера
предлагалось два родных клиента (Harmony, Amadeus)
для связи с сервером. Оба они исчезли после
коммерциализации Hyperwave. На замену пришло
нечто, называемое wavemaster. Wavemaster - это нечто
протоколоподобное, конвертирующее HTTP
в HG-CSP. Идея состоит в том,
чтобы все администрирование базами данных
и визуализация документов должно
осуществляться через Веб-интерфейс. Wavemaster
обеспечивает множество плейсхолдеров
(placeholders) для постоянных операций по
насторйке интерфейса. Эти плейсхолдеры
называются языком PLACE. PLACE-у
недостает множества преимуществ
настоящих языков программирования, и
любые расширения - это только увеличение
списка плейсхолдеров. Это дает мне
основание к использованию JavaScript, который,
IMHO, не делает жизнь легче.
Добавление поддержки Hyperwave в PHP3 было
введено с целью заполнить пробелы языков
програмирования в управлении интерфейсов.
Оно выполлняет все сообщения,
определенные в HG-CSP, и более
сложныве команды по получению завершенных
документов.
Hyperwave имеет свою собственную
терминологию для именования различных
порций информации. Это было заимствовонно
и расширенно. Практически все функции
оперируют с одним из следующих типов данны:
object ID: уникально целое значение для
каждого объекта в Hyperwave сервере. Это
также одни из атрибутов объектной
записи (ObjectID). ИД объектов часто
используются в качестве входных
параметров для спецификации объекта. object record: строка с парами атрибут-значение
в фоме атрибут=значение. пары одделены
одна от друкой символом возврата
каретки. ОБъектная запись может быть
просто переконвертирована в объектный
массив: hw_object2array().
Несколько функций (их имена
заканчиваются на obj) возвращают
объектные записи. object array: ассоциативный массив со всеми
атрибутами объекта. Ключ - имя атрибута.
Если атрибут встречается в объектной
записи несколько раз, это ведет к
появлению другого индекса или
индексного массива. Атрибуты,
определнные в языке, будут иметь
множство ключей, аббревиатур языка в
ассоциативном массиве. Все другие
множественные атрибуты формируют
индексные массивы. Функции php3 никогда не
возвращают объектных массивов. hw_document: это совершенно новый тип данных,
который описывает наличный документ,
напимер HTML, PDF и др. Он несколько
оптимизированн под HTML, но может быть
использован и с другими форматами. Несколько функций, возвращающих массивы
объектных записей также возвращают
ассоциативный массив со статистической
информацией о нем. Этот массив - последний
элемент массива объектных записей.
Статистический массив содержит следующие
поля:
Число объектных записей с атрибутом PresentationHints,
установленным в Hidden. Число объектных записей с атрибутом PresentationHints,
установлденным в CollectionHead. Число объектных записей с атрибутом PresentationHints,
установленным в FullCollectionHead. Индекс в массиве объектных записей с
атрибутом PresentationHints, установленным в
CollectionHead. Индекс в массиве объектных записей с
атрибутом PresentationHints, установленным в
FullCollectionHead. Общее число объектных записей. Модуль Hyperwave лучьше всего использовать,
когда PHP3 скомпилированн в как модуль Apache. В
этом случае основной Hyperwave сервер может
быть скрыт от пользователя почти
полностью, если Apache использует свой движок.
Это объясняют следующие инструкции.
С тех пор, как PHP3 с Hyperwave поддерживают
встраивание в Апач, предполагается, что
родное решение Hyperwave - wavemaster -
автоматически замещается. Т.е. Апач примет
на себя функции веб-интерфейса к Hyperwave. Это
не есть необходимость, но конфигурация
упрощается. Идея достаточно проста. Перво-наперво
вам необходим PHP3-скрипт, который оценивает
переменную PATH_INFO и
рассматривает ее значение как имя Hyperwave
объекта. Пусть скрипт называется 'Hyperwave'. URL http://your.hostname/Hyperwave/name_of_object
возвратит Hyperwave объект с именем 'name_of_object'.
Реакция скрипта зависит от типа объекта.
Если это коллекция, он возможно вернет
список наследников. Если это документ, он
возвратит mime-тип и содержание. Небольшое
улучшение может быть достигнуто, если
используется движок перезаписи Апача. С
точки зрения пользователя, это более
прямой путь, если URL http://your.hostname/name_of_object
будет возвращать объект. Правило
перезаписи достаточно простое:
для возврвта самого объекта для разрешения проблемы поиска для идентификации вас для установки профиля один для каждой дополнительной
функции, как то показа атрибутов объекта.
показа информации о пользователе,
показа статуса сервера и др. Еще несколько заечаний:
Функция hw_InsertDocument расщеплена на hw_InsertObject()
и hw_PutDocument(). Имена некоторых функций пока еще не
подтверждены. Мольшинство функций требуют текущее
соединение как первый параметр. Это
ведет к достаточно большому количеству
лишнего набора, что в большинстве случев
излищне, поскольку существует только
одно соединение. Соединение по
умолчанию предоставляет улучшенный
вариант решения. Команда позволяет удалить, добавить или
модифицировать индивидуальные атрибуты
объектной записи. Объекты указываются
идентификатором оюъекта, object_to_change;
команды придерживаются следующего
синитаксиса:
<command> ::= <remcmd> | Возвращает True при отсутствии ошибок,
иначе False. Возвращает массив идентификаторов
объектов. Каждый иденитификатор - часть
коллекции с идентификатором objectID.
Массив содержит всех наследников,
документы и коллекции. Возвращает массив объектных записей.
Каждая запись - часть коллекции с
идентификатором objectID.
Массив содержит всех наследников,
документы и коллекции. Возвращет false, если соединение не
является действующим, в противном случае -
true. Closes закрывает соединение с Hyperwave
сервером с указанным номером соединения connection. Открывает соединение с Hyperwave сервером и
возвращает номер соединение при успешном
открытиии, или False, ели слединение не может
быть установлено. Каждый аргумент должен
быть "закавыченой" строкой, исключая
номер порта. Аргумент username
и password опциональны и
могут не указываться. В случае ошибки
идентификации, сервер завершит работу.
Проще использовать идентификацию как
пользователь anonymous. Функция возращает
индекс соединения, необходимы для других
функций Hyperwave. Вы можете открыть несколько
соединений. Помните, что пароли не
шифруются.
Смотри также hw_pConnect(). Копирует объекты с идентификаторами,
указанными во втором параметре в
коллекцию с идентификатором destination
id.
Возвращается число скопированных
объектов.
Смотри также hw_mv(). Удаляет объект с идентификатором,
указанным во втором параметре. Будут
удалены все экземпляры объекта.
При отсутствии ошибок возвращает true,
инача - false.
Смотри также hw_mv(). Возвращает идентификатор оъекта
документа, который относится к якорю anchorID. Возвращает объектную запись объекта
документа, относящегося к якорю anchorID. Возвращает объектную запись документа.
Смотри также hw_DocumentBodyTag(),
hw_DocumentSize(). Возвращает тег BODY для документа. Если
документ в формате HTML, тег BODY должен быть
напечатен перед документом.
Смотри также hw_DocumentAttributes(),
hw_DocumentSize(). Возвращает размер документа в байтах.
Смотри также hw_DocumentBodyTag(),
hw_DocumentAttributes(). Возвращает строку, содержащую последнее
сообщени об ошибке или 'No Error'. Если
возвратилось False, функция не выполнилась.
Сообщение относится к последней команде. Загружет текстовый документ на сервер.
Объектная запись документа не должна
модифицироваться, пока документ
редактируется. Эта функция работает
только с чисто текстовыми документами. Она
не отрывает специальных соединений для
данных, поэтому управление соединением во
время передачи данных блокируется.
Смотри также hw_PipeDocument(),
hw_FreeDocument(), hw_DocumentBodyTag(),
hw_DocumentSize(),
hw_OutputDocument(),
hw_GetText(). Возвращет номер последней ошибки. Если 0 -
ошибок не было. Ошибка относится к
последней команде. освобождает память, занятую hw-документом. Возвращает индексированный массив
идентификаторов объектов. Каждый ИД
объекта относится к родителям объекта с
идентификатором objectID. Возвращает индексированный массив
объектных записей плюс ассоциативный
массив со статистической информацией об
объектных записях. Ассоциативный массив -
последний член возвращенного массива.
Каждая объектная запись относится к
родителю объекта с ИД objectID. Возвращает массив идентификаторов
оюъектов. Каждый ИД объекта относится к
наследной коллекции, коллекции с
идентификатором objectID.
Функция не возвращает наследуемые
документы.
Смотри также hw_GetChildren(), hw_GetChildDocColl(). Возвращает массив объектных записей.
Каждая запись относится к наследной
коллекции, коллекции с идентификатором objectID.
Функция не возвращает наследуемые
документы.
Смотри также hw_ChildrenObj(),
hw_GetChildDocCollObj(). Возвращает объектные записи всех
якорных точек объекта с ИД objectID.
Объект может быть как документом, так и
якорем.
Смотри также hw_GetAnchors(). Возвращает объектную запись объекта с
идентификатором objectID.
Смотри также hw_GetAndLock(). Возвращает объектную запись объекта с ИД
objectID. Объект также
запирается, поэтому другие позователи не
имеют к нему доступа, пока объект не будет
разблокирован.
Смотри также hw_Unlock(),
hw_GetObject(). Возвращается документ с идентификатором
объекта objectID. Если
документ имеет якоря, которые можно
вставить, то они будут сразу вставлены.
Опциональный параметр rootID
определяет, как ссылки будут вставляться в
документ. По умолчанию подставляется 0, что
означает конструирование ссылок из имен
объктов назначения ссылок. Это применимо
для веб-приложений. Если ссылка указывает
на объект с именем 'internet_movie', ссылка HTML
будет выглядеть как <A
HREF="/internet_movie">. Настоящее положение
исходного объекта и объекта назначения в
иерархии документа полностью
игнорируется. Вы будете вынуждены
установить ваш браузер, переписать URL
приблизительно так: example '/my_script.php3/internet_movie'.
'my_script.php3' обработает $PATH_INFO и выдаст
документ.
Если rootID не равен 0,
ссылка конструируется из всех имен,
начиная с объекта с ИД rootID,
разделенных слешами от текущего объекта.
Если для предидущего примера документ
'internet_movie' расположен в 'a-b-c-internet_movie', где '-' -
разделители между уровнями иерархии, и
исходный документ расположен по пути
'a-b-d-source', результирующая HTML-ссылка будет:
<A HREF="../c/internet_movie">. Это
используется, если вы хотите утянуть се
содержание сервера на диск и мапить
иерархию докмента на файловую систему.
Эта функция работает только с чисто
текстовыми документами. Она не отрывает
специальных соединений для данных,
поэтому управляющее соединение во время
передачи данных блокируется.
Смотри также hw_PipeDocument(),
hw_FreeDocument(), hw_DocumentBodyTag(),
hw_DocumentSize(),
hw_OutputDocument(). Ищет объекты по всему серверу и
возвращает массив идентификаторов
объектов. Максимальное число найденных
димитируется в max_hits.
Если max_hits установлен в
-1, то максимальное число ответов не
ограниченно.
Смотри также hw_GetObjectByQueryObj(). Ищет объекты по всему серверу и
возвращает массив объектных записей.
Максимальное число найденных
димитируется в max_hits.
Если max_hits установлен в
-1, то максимальное число ответов не
ограниченно.
Смотри также hw_GetObjectByQuery(). Ищет объект в коллекции с
идентификатором objectID и
возвращает массив идентификаторов
объектов. Максимальное число найденных
димитируется в max_hits.
Если max_hits установлен в
-1, то максимальное число ответов не
ограниченно.
Смотри также hw_GetObjectByQueryCollObj(). Ищет объект в коллекции с
идентификатором objectID и
возвращает массив объектных записей.
Максимальное число найденных
димитируется в max_hits.
Если max_hits установлен в
-1, то максимальное число ответов не
ограниченно.
Смотри также hw_GetObjectByQueryColl(). Возвращает массив идентификатров
объектов наследуемых документов
коллекции.
Смотри также hw_GetChildren(), hw_GetChildColl()
. Возвращает массив идентификатров
объектов наследуемых документов
коллекции.
Смотри также hw_ChildrenObj(),
hw_GetChildCollObj(). Возвращает массив идентификаторов
объектов для якорей документа с ИД objectID. Возвращает массив объектных записей для
якорей документа с ИД objectID. Перемещает объект с объектным
идентификатром, указанным во втором
параметре, из коллекции с идентификатором source
id в коллекцию с идентификатором destination
id. Если исходный ИД равен 0, объекты
будут "отвязаны" от исходной
коллекции. Если это последний экземпляр
этого объекта, он будет удален.
Возвращется число перемещенных объектов.
Смотри также hw_cp(),
hw_deleteobject(). Идентификация пользователя с именем username
и паролем password.
Идентификация имеет силу только для
текущей сессии. Я не думаю, что данная
функция так уж часто используется. В
большинстве случаев будет проще проводить
идентификацию при установлении
соединения.
Смотри также hw_Connect(). Проверяет, является ли множество
объектов (документов или коллекций),
определенное в object_id_array,
частью коллекций, определенных в
коллекции id_array. Если
четвертый параметр return_collections
равен 0, подмножество идентификаторов
объектов, которое является частью
коллекций (т.е. документы или коллекции,
которые являются наследниками одной или
более коллекций идентификаторов
коллекции или их подколлекций, рекурсивно)
возвращается как массив. Когда четвертый
праметр равен 1, однако, множество
соллекций, которые имеют наследников в
этом подмножестве, возвращается как
массив. Это позволяет пользователю,
например, подчеркнуть часть иерархии
коллекции, которая содержит находки
предидущего запроса, в графическом виде.
Возвращает сведения о текущем
соединении. Возвращаемая строка имеет
следующий формат: <Serverstring>, <Host>,
<Port>, <Username>, <Port of Client>, <Byte swapping> Вставить новую коллекцию с атрибутами
как в object_array в коллекцию
с идентификатором objectID. Вставить новый документ с атрибутами как
в object_array в коллекцию с
идентификатором objectID.
Эта функци может добавить как отдельную
объектную запись, так и чистый ascii текст из text,
если text получен. Если вы
хотите добавить документ в общем,
используйте hw_insertdocument().
Смотри также hw_InsertDocument(),
hw_InsColl(). Загружает документ в коллекцию parent_id.
Перед этим документ должен быть создан hw_NewDocument().
Удостоверьтесь, что объектная запись
нового документа содержит следующие
атрибуты: Type, DocumentType, Title и Name. Возможно, вы
захотите также установить MimeType.
Смотри также hw_PipeDocument(). Возвращает новый hw-документ с данными,
установленными по document_data
и объектной записью object_record.
Длина данных документа document_data
передается в document_size.
Эта функция не добавляет документ в Hyperwave
сервер.
Смотри также hw_FreeDocument(), hw_DocumentSize(),
hw_DocumentBodyTag(),
hw_OutputDocument(),
hw_InsertDocument(). Преобразует object_record в
объектный массив. Печатает документ без тега BODY. Возвращает индекс соединения в случае
удачи, или false, если соединение не может
быть установлено. Открывает устойчивое
соединение с Hyperwave сервером. Каждый
аргумент должен быть "заавыченной"
строкой, исключая номер порта. Аргументы username
и password опциональны и
могут быть опущены. В случае ошибки
идентификации, сервер будет остановлен.
Проще применять вход пользователя anonymous. В
ыможете открыть множество устойчивых
соединений.
Смотри также hw_Connect(). Возвращает hw-документ с идентификатором objectID.
Если документ имеет якоря, которые можно
вставить, то данная операция произойдет
автоматически. Документ передается через
специальное соединение для данных,
поэтому управляющее соединение не
блокируется.
Смотри также hw_GetText()
for more on link insertion, hw_FreeDocument(), hw_DocumentSize(),
hw_DocumentBodyTag(),
hw_OutputDocument(). Возвращает объектный идентификатор для
гиперкоренной коллекции. Обычно это 0.
Наследная коллекция от гиперкорневой -
корневая, на сервере, с которым
установлено соединение. Разблокирует документ для доступа
другим пользователям.
Смотри также hw_GetAndLock(). Возвращает имя пользователя соединения. Вы можете использовать фуннкции работы с
изображениями для получения размеров
картинок в файлах JPEG, GIF, PNG, и, если у Вас есть
библиотека GD (доступна на http://www.boutell.com/gd/), Вы
также будете иметь возможность создавать
GIF-изображения и управлять ими.
Функция GetImageSize()
определяет размеры любых изображений в
файлах GIF, JPG или PNG и
возвращает размерность вместе с типом
файла и строкой в формате высота/ширина,
которую можно использовать в стандартном
теге HTML IMG.
Возвращается массив из четырех элементов.
Индекс 0 содержит ширину изображения в
пикселах. Элемент 1 содержит высоту. Элемент
2 - флаг типа изображения. 1 = GIF, 2 = JPG, 3 = PNG.
Элемент 3 - строку с корректным заданием
"height=xxx width=xxx" для прямого
использования в теге IMG Пример 1. GetImageSize
Опциональный параметр imageinfo
позволяет Вам получить некоторую
дополнительную информацию о файле
изображения. Сейчас возвращаеются
разнообразные JPG APP маркеры в
ассоцированном массиве. Некоторые
программы используют эти APP для встраивания
текстовой информации в изображение. Очень
распространено встраивание IPTC http://www.xe.net/iptc/
информации в APP13 маркер. Вы можете
использовать функцию iptcparse()
для перевода бинарного APP13 маркера в нечто
читабельное. Пример 2. GetImageSize возвращает IPTC
Примечание: Эта функция не требует
библиотеки GD. ImageArc рисует чать эллипса с центро в cx, cy
(верхний левый угол - 0,0) в изображении im. w
и h определяют высоту и ширину эллипса в
соответствии с начальной и конечной точкой,
определенными в аргументах s и e.
ImageChar рисует первый символ из c в
рисунке id с верхним левым углом в x,y
(верхний левый - 0,0) цветом col.
Шрифтом 1, 2, 3, 4 или 5, используются
встроенные шрифты (больше цифра - больше
шрифт).
Смотри также imageloadfont().
ImageCharUp рисует символ c вертикально в
изображении im по координатам x, y (верхний
левый - 0, 0) с цветом col. Если font равен
1, 2, 3, 4 или 5, используются встроенные шрифты.
Смотри также imageloadfont().
ImageColorAllocate возвращает цвет в схеме RGB.
Аргумент im возвращается функцией imagecreate().
ImageColorAllocate должна быть вызвана для создания
каждого цвета, который планируется
использовать в изображении, представленном
im.
ImageColorTransparent устанавливает прозрачный
цвет в изображении im в col. im -
идентификатор изображения, возвращенный imagecreate(),
а col - идентификатор цвета, возвращенный
функцией imagecolorallocate().
Возвращается идентификатор нового (или
текущего, если не указан параметр col)
прозрачного цвета.
ImageCopyResized копир область одного
изображения в другое. dst_im -
изображение-получатель, src_im -
исходное изображение. Если координаты
исходного и результирующего изображений
различны по ширине и высоте, производится
соответствующее сжатие/растягивание
фрагмента изображения. Координаты -
относительно левого верхнего угла. Функция
может быть использована для копирования
фрагментов одного и того же изображения (если
dst_im равно src_im) но если
области перекроются, результат может быть
непредсказуемым.
ImageCreate возвращает идентификатор
изображения чистого листа размерами x_size
на y_size.
ImageCreateFromGif возвращает идентификатор
изображения, полученного из filename.
ImageLine рисует пунктирную линию от x1,y1 до
x2,y2 (верхний левй угол - 0,0) в изображении im
цветом col.
Смотри также imageline().
ImageDestroy освобождает память,
ассоциированную с изображением im. im
- идентификатор, возвращенный функцией imagecreate().
ImageFill выполняет заливку, начиная с
координат x, y (верхний левй угол - 0,0)
цветом col изображения im.
ImageFilledPolygon создает закрашенный
многоугольник в изображении im. points -
массив PHP содержит вершины многоугольника:
ImageFilledRectangle создает закрашенный
прямоугольник цвета col в изображении im,
начиная с координат верхнего левого угла x1,
y1, и заканчивая в правом нижнем - x2, y2. 0,
0 - левый верхний угол изображения.
ImageFillToBorder выполняет заливку до границы,
определенной цветом в border. Начальная
точка заливки - x,y (верхний левый угол - 0,0) и
облласть заливается цветом col.
Возвращает высоту шрифта font в
пикселах.
Смотри также imagefontwidth()
и imageloadfont().
Возвращает ширину символа шрифта font в
пикселах.
Смотри также imagefontheight()
и imageloadfont().
ImageGif создает GIF файл с именем filename из
изображения im. Аргумент im
возвращается функцией imagecreate().
Формат изображения будет соответствовать
спецификации GIF87a, если изображение не было
сделано прозрачным функцией imagecolortransparent(),
в этом случае формат будет соответствовать
GIF89a.
Аргумент filename опционален, и если он
отсутствует, строки изображения будут
выводиться непосредственно на брайзер
потоком. Указав тип изображения image/gif в
функции header, вы можете создавать PHP
скрипты, которые будут выводить GIF на
браузер.
ImageInterlace()
переключает бит чередования. Если interlace
равен 1, изображение im будет выводиться
поэтапно, и если interlace равно 0,
чередование выключено.
Возвращается текущее состояние бита
чередования для изображения.
ImageLine рисует линию от x1,y1 до x2,y2 (левй
верхний точка - 0,0) в изображении im
цветом col.
Смотри также imagecreate()
и imagecolorallocate().
ImageLoadFont загружает пользовательский
растровый шрифт и возвращает идентификатор
шрифта (который всегда больше 5, тобы не
вызвать конфликта со встроенными шрифтами).
Файл шрифта - двоичный и архиетктурно
зависимый. Это значит, что Вам следует
генерировать файл шрифта на том процессоре
(архитектуре), на котором Вы будете
запускать PHP.
Таблица 1. Формат файла шрифта Смотри также ImageFontWidth()
и ImageFontHeight().
ImagePolygon создает многоугольник в
изображении im. points - массив PHP,
содержащий вершины многоугольника, т.е
points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc. num_points
- общее число вершин.
Смотри также imagecreate().
ImageRectangle создает прямоугольник цветом col
в изображении im, начиния с левой верхней
координаты x1,y1 и заканчивая нижней
правой x2,y2. 0,0 - левй верхний угол
изображения.
ImageSetPixel рисует пиксел x,y (верхний левый
- 0,0) в изображении im цветом col.
Смотри также imagecreate()
и imagecolorallocate().
ImageString рисует строку s в изображении im
по координатам x,y (верхний левый - 0,0)
цветом col. Если font равен 1, 2, 3, 4 или 5,
используются встроенные шрифты.
Смотри также imageloadfont().
ImageStringUp рисует строку s вертикально в
изображении im по координатам x,y (верхний
левый - 0,0) цветом col. Если font равен 1, 2,
3, 4 или 5, используются встроенные шрифты.
Смотри также imageloadfont().
ImageSX возвращает ширину изображения,
определяемого im.
Смотри также imagecreate()
и imagesy().
ImageSY возвращает высоту изображения,
определяемого im.
Смотри также imagecreate()
и imagesx().
Функция рассчитывает и возвращает
границы области (в пикселах) для текста с
шрифтами TrueType.
Измеряемая строка. Размер шрифта. Имя файла TrueType шрифта. (Может быть и URL.) Угол в градусах, под которым наклонен
измеряемый text. Точки относятся к text безотносительно
к углу, т.е "верхний левый" означает
верхний левый угол текста при его
горизонтальном расположении.
Функция требует две библиотеки: GD и Freetype.
Смотри также ImageTTFText().
ImageTTFText рисует строку text в
изображении, идентифицируемом im,
начиная с координат x,y (верхняя
левая - 0,0), под углом angle цветом col,
используя файл TrueType шрифта, указанный в fontfile.
Координаты, указанные в x, y
определяют базовую точку символа (приблизительно
нижний левый угол). Это отличается от ImageString(),
где x,y определяют верхний правый угол
первого символа.
angle в градусах, 0 означает
написание текста с лава на право (в
направлении на 3 часа), более высокие
значения - поворот против часовой стрелки (т.е.
90 - написание текста с низу вверх).
fontfile - путь к файлу шрифта TrueType,
который планируется использовать.
text - строка текста, которая может
включать символы UTF-8 (в форма: { ) для
доступа к сиволам за пределами первых 255.
col индекс цвета. Использование
отрицания индекса цвета имеет эффект
включения антиалиасинга.
ImageTTFText()
возвращает массив из 8 элементов,
представляющих четыре точки границы
области вывода текста. Порядок точек:
вепхняя левая, верхняя правая, нижняя
правая, нижняя левая. ТОчки относятся к
тексту без учета угла, т.е. "верхняя левая"
означает верхний левый угол горизонтально
расположенного текста.
Скрипт этого примера создает черный GIF 400x30
пикселей, со словом "Testing...", написанным
шрифтом Arial. Пример 1. ImageTTFText Эта функция требует обе библиотеки: GD и FreeType<.
Смотри также ImageTTFBBox().
Returns the index of the color of the pixel at the specified location in the
image.
Смотри также imagecolorset()
и imagecolorsforindex().
Возвращает индекс цвета в палитре
изображения, который "ближе всего" к
указанному набору RGB.
"Дистанция" между желанным цветом и
каждым цветом в палитре определяется так,
как будто значения RGB определяют точки в
трехмерном пространстве.
Смотри также Возвращает индекс указанного цвета в
палитре изображения.
Если цвет в палитре изображения не
присутствует, возвращается -1.
Смотри также imagecolorclosest().
Эта функция всегда возвращает индекс для
запрашиваемого цвета, одно из двух - или
указанный цвет, или ближайшую альтернативу.
Смотри также imagecolorclosest().
Эти установки устанавливают соответствие
между индексом в палитре и цветом. это
используется для создания эффектов
сплошной заливки в палитре изображения без
накладных расходов преобразования текущей
заливки.
Смотри также imagecolorat().
Возвращается ассоциативный массив с
красным, синим и зеленым ключами, которые
содержат соответствующие значения для
указанного индекса цвета.
Смотри также imagecolorat()
и imagecolorexact().
Возвращает количество цветов в указанной
палитре.
Смотри также imagecolorat()
и imagecolorsforindex(). Для того, чтобы эти функции заработали вц
должны скомпилировать 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 -- Добавляет текстовое сообщение в
указанный почтовый ящик
Возвращает true в случае успеха или false
иначе.
imap_append() добавляет текстовое сообщение в
указанный почтовый ящик mbox. Если указаны
необязательные флаги, также записывает в
почтовый ящик и флаги.
При общении с сервером Cyrus IMAP нужно
использовать в качестве ограничителей
строки "\r\n" вместо "\n", иначе
действие не выполнится.
imap_base64 -- Декодирует текст, закодированный
с помощью BASE64
Функция imap_base64() декодирует текст в
формате BASE-64. Декодированное сообщение
возвращается как строка.
imap_body -- Читает тело сообщения
Функция imap_body() возвращает тело сообщения,
имеющего номер п/п msg_number в текущем почтовом
ящике. Необязательные флаги это битовые
маски из
FT_UID - Номер сообщения msgno является UID'ом
сообщения imap_check -- Проверяет текущий почтовый ящик
Возвращает информацию о текущем почтовом
ящике. В случае неуспеха возвращает FALSE.
Функция imap_check() проверяет статус текущего
почтового ящика на сервере и возвращает
информацию в объекте со следующими
свойствами.
Date : дата сообщения imap_close -- Закрывает поток IMAP
Закрывает поток imap. Необязательный флаг
CL_EXPUNGE заставляет стереть помеченные на
удаление сообщения при закрытии.
imap_createmailbox -- Создает новый почтовый ящик.
imap_createmailbox() создает новый почтовый ящик
указанный в mbox. Возвращает true в случае
успеха и false при ошибке.
imap_delete -- Помечает сообщение из текущего
почтового ящика на удаление
Возвращает true. imap_deletemailbox -- Удаляет почтовый ящик
imap_deletemailbox() удаляет указанный почтовый
ящик. Возвращает true в случае успеха и false
иначе.
imap_expunge -- Удаляет все сообщения,
помеченные на удаление
imap_expunge() удаляет все сообщения помеченные
на удаление с помощью imap_delete(). Возвращает
true.
imap_fetchbody -- Извлекает простую секцию тела
сообщения
Эта функция заставляет извлечь подробную
секцию указанного сообщения как текстовую
строку. Секция - это строка целых чисел,
разделенных точками, которые указывают на
части тела сообщения в списке частей
согласно спецификации IMAP4. Части тела не
декодируются этой функцией. Необязательным
параметром к imap_fetchbody () является битовая
маска из
imap_fetchstructure -- Читает структуру простого
сообщения
Эта функция заставляет извлечь всю
информацию о структуре сообщения с номером
msg_number. Возвращаемая величина является
объектом со следующими элементами. Также функция возвращает массив объектов
под названием parameters[]. Этот объект имеет
следующие свойства. В случае сообщения из нескольих частей,
функция также возвращает массив объектов
всех свойств под название parts[].
imap_header -- Читает заголовок сообщения
Эта функция возвращает объект различных
элементов заголовка
imap_headers -- Возвращает заголовки всех
сообщений в почтовом ящике
Возвращает строковый массив из
информации по заголокам. Один элемент
массива на сообщение.
imap_listmailbox -- Читает список почтовых ящиков
Возвращает массив, содержащий названия
почтовых ящиков.
imap_listsubscribed -- Перечисляет все подписанные
ящики
Возвращает массив всех почтовых ящиков на
которые Вы подписаны. Аргументы ref и pattern
указывают начальное месторасположение
откуда начинать поиск и шаблон, которому
должны удовлетворять названия почтовых
ящиков.
imap_mail_copy -- Копирует указанные сообщения в
почтовый ящик
Возвращает true в случае успеха и false иначе.
Копирует почтовые сообщения указанные с
помощью msglist в почтовый ящик mbox. msglist - это
диапазон, а не просто номера сообщений.
флаги - это битовые маски из
imap_mail_move -- Переносит указанные сообщения в
почтовый ящик
Переносит почтовые сообщения указанные с
помощью msglist в почтовый ящик mbox. msglist - это
диапазон, а не просто номера сообщений.
Возвращает true в случае успеха и false иначе.
imap_num_msg -- Выдает количество сообщений в
текущем почтовом ящике
Возвращает количество сообщений в
текущем почтовом ящике.
imap_num_recent -- Возвращает количество недавно
пришедших сообщений в текущем почтовом
ящике
Возвращает количество недавно пришедших
сообщений в текущем почтовом ящике.
imap_open -- Открывает поток IMAP в почтовый ящик
В случае успеха возвращает поток IMAP или
false иначе. Эта функция может быть
использована для открытия потоков к POP3 и NNTP
серверам. Для того, чтобы присоединиться к
серверу IMAP на 143-й порт на локальной машине
сделайте следующее:
Для того, чтобы подсоединиться к POP3-серверу
на 110-й порт на локальном сервере
используйте:
Для того, чтобы подсоединиться к NNTP-серверу
на 119-й порт на локальном сервере
используйте:
Для того, чтобы подсоединиться к
удаленному серверу замените "localhost" на
имя или IP-адрес сервера к которому Вы хотите
подсоединиться.
Опции - битовая маска из
imap_ping -- Проверяет поток IMAP на
работоспособность
Возвращает true если поток еще
работоспособен и false иначе. Функция imap_ping()
проверяет поток на работоспособность. Он
может также проверять новую почту; это
предпочтительный метод для периодической
проверки новой почты и "живучести"
удаленных серверов.
imap_renamemailbox -- Переименовывает старый
почтовый ящик в новый
Эта функция переименовывает старый
почтовый ящик в новый. Возвращает true в
случае успеха и false иначе.
imap_reopen -- Заново открывает поток IMAP на
новый почтовый ящик
Возвращает true в случае успеха и false иначе.
Эта функция заново открывает указанный
поток на новый ящик.
Опции - битовая маска из
imap_subscribe -- Подписывает на почтовый ящик
Подписывает на новый почтовый ящик.
Возвращает true в случае успеха и false иначе.
imap_undelete -- Снимает отметку с сообщения
помеченного на удаление
Эта функция cнимает отметку с сообщения
помеченного на удаление функцией imap_delete().
Возвращает true в случае успеха и false иначе.
imap_unsubscribe -- Снимает подписку с почтового
ящика
Снимает подписку с почтового ящика.
Возвращает true в случае успеха и false иначе.
imap_qprint -- Конвертирует строку формата
quoted-printable в 8-битовую строку
Конвертирует строку формата quoted-printable в 8-битовую
строку. Возвращает 8-битовую (бинарную)
строку
imap_8bit -- Конвертирует 8-битовую строку в
формат quoted-printable
Конвертирует 8-битовую строку в формат
quoted-printable. Возвращает строку в формате
quoted-printable.
imap_binary -- Конвертирует 8-битную строку в
формат base64
Конвертирует 8-битную строку в формат base64.
Возвращает строку в формате base64.
imap_scanmailbox -- Читает список почтовых ящиков,
проводит поиск в названиях ящиков
Возвращает массив, содержащий имена
почтовых ящиков, которые имеют строку string в
названии.
imap_mailboxmsginfo -- Получает информацию о
текущем почтовом ящике
Возвращает информацию о текущем почтовом
ящике. FALSE в случае неудачи. Функция
imap_mailboxmsginfo() проверяет статус текущего
почтового ящика на сервере и возвращает
информацию в объекте со следующими
свойствами:
imap_rfc822_write_address -- Возвращает правильно
отформатированный email адрес
Возвращает правильно отформатированный
email адрес по данному почтовому ящику, хосту
и персональной информации.
imap_rfc822_parse_adrlist -- Проводит разбор адресной
строки
Эта функция разбирает адресную строку и
для каждого адреса возвращает массив
объектов. Есть 4 типа объектов:
imap_setflag_full -- Устанавливает флаги на
сообщения
Эта функция застваляет добавить
указанный флаг к набору флагов сообщения в
указанной последовательности.
options - это битовая маска из
imap_clearflag_full -- Очищает флаги сообщения
Эта функция заставляет удалить флаги из
набора флагов сообщения в указанной
последовательности.
options - это битовая маска из
imap_sort -- Сортирует сообщения в текущем
почтовом ящике
Возвращает массив номеров сообщений
рассортированных по данному параметру. Rev
должен быть равен 1 если нужна сортировка в
обратном порядке. Критерии сортировки (должен
быть указан только один):
imap_fetchheader -- Возвращает заголовок
сообщения
Эта функция заставляет извлечь полный,
неотфильтрованный заголовок указанного
сообщения в формате RFC 822 как текстовую
строку.
Опиции:
imap_uid -- Эта функция возвращает UID по
данному номеру сообщения в
последовательности
Эта функция возвращает UID по данному
номеру сообщения в последовательности. Не возвращает информацию конфигурации,
установленную при компиляции PHP, или
прочитанную из файла конфигурации Apache (использование
php3_configuration_option директив).
Что бы проверить, использует ли система
php3.ini файл, попробуйте получить значение
cfg_file_path. Если оно установлено, то php3.ini файл
используется. См. также getmyuid(), getmypid(),
getmyinode(), и getlastmod(). См. также get_magic_quotes_runtime(),
set_magic_quotes_runtime(). См. также get_magic_quotes_gpc(),
set_magic_quotes_runtime(). См. также date(), getmyuid(),
get_current_user(), getmyinode(),
и getmypid(). См. также getmyuid(), get_current_user(),
getmypid(), и getlastmod(). Обратите внимание, что при работе PHP как
модуля сервера, вы не получите точный IP
процесса.
См. также getmyuid(), get_current_user(),
getmyinode(), и getlastmod(). См. также getmypid(), get_current_user(),
getmyinode(), и getlastmod(). См. также phpversion(). См. также phpinfo(). См. также get_magic_quotes_gpc(),
get_magic_quotes_runtime(). При вызове, set_time_limit() перезапускает
счетчик времени исполнения с нуля. Другими
словами, если установлен лимит по
умолчанию 30 секунд, и прошло 25 секунд со
времени запуска, то после вызова set_time_limit( 20
) общее время будет составлять 45 секунд
после с начала запуска скрипта. Драйверы 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 , то
концевые пробелы будут удаляться
автоматически. При успешном завершении возвращает
идентификатор соединения, при ошибке - 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
Возвращает идентификатор реальной
устойчивой ссылки к Informix при успешном
завершении и false при ошибке.
ifx_pconnect() работает очень
похоже с ifx_connect(),
но с двумя основными отличиями.
Эта функция ведет себя точно так же, как ifx_connect(),
когда PHP не запкщено как модуль Апача. Во-первых,
при соединении функция перво-наперво
пытается найти устойчивую ссылку, которая
была открыта ранее к тому же хосту с теми же
параметрами (пользователь, пароль). Если
поиски увенчались успехом, будет возвращен
идентификатор ранее установленного
соединения.
Во-вторых, соеденение с SQL-сервером не
закроется по окончании выполнения скрипта.
Вместо этого, ссылка останется открытой для
дальнейшего использования (ifx_close()
не закроет ссылку, установленную
CLASS="FUNCTION">ifx_pconnect()).
Ссылкт такого типа обычно называют
устойчивыми (persistent).
Смотри также: ifx_connect(). Всегда возвращает true
ifx_close() закрывает ссылку к
базе данных Informix, которая ассоциируется со
специальным идентификатором ссылки. Если
идентификатор ссылки не указан,
предполагается последнее установленное
соединение.
Заметим, что данная функция не
ринадлежит к разряду широко используемых,
поскольку неустойчивые соединения
автоматически закрываются после
окончания выполнения скрипта.
ifx_close() не закрое устойчивое
соединение, сгенерированное ifx_pconnect().
Смотри также: ifx_connect(),
и ifx_pconnect(). Пример 1. закрытие соединения с
Informix
Возвращает определенный идентификатор
результата 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
Пример 2. Вставка нескольких
значений в таблицу "catalog"
Возвращает целое 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(). Возвращает true при успешном выполнении,
false при ошибке.
Выполняет предварительно
подготовленный запрос или открывает
курсор для него.
НЕ освобождает result_id
при ошибке.
ТАкже устанавливает реальное значение ifx_affected_rows()
для не-select выражений для выборки данных в ifx_affected_rows().
Смотри также: ifx_prepare(). Коды оошибок The Informix (SQLSTATE & SQLCODE) имеют
следующий фомат:
x [SQLSTATE = aa bbb SQLCODE=cccc]
где:
x = space : нет ошибок
E : ошибка
N : нет больше данных
W : предупреждене
? : неопределенность
Первый символ возвращет общий
результата, SQLSTATE и SQLCODE описывают ошибку
более детально. Обрабатывается последняя
ошибка.
Просмотрите Руководство к Informix для
получения описания SQLSTATE и SQLCODE.
Смотри также: ifx_errormsg() Возвращает сообщение об ошибке Informix,
ассоциируещееся с последней ошибкой, или,
если установлен опциональный параметр "errorcode",
сообщение, соответствующее "errorcode".
Смотри также: ifx_error()
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
Возвращает ассоциативный массив,
соответсвующий выбранному ряду, или 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
Возвращает количество выбранных рядов
или false по ощибке.
Форматирует все ряды запроса с
идентификатором result_id в
html-таблицу. Второй опциональный параметр -
строка с тегами установок <table> Пример 1. Результат Informix как
таблица HTML
Возвращает асоциативный масив с именами
полей как ключами и типами данных SQL как
данными для запроса с result_id.
При ошибке FALSE. Пример 1. Имена полей и типы данных
SQL
ifx_fieldproperties -- список свойств
полей SQL
Возвращает ассоциативный массив с
именами полей как ключами и SQL свойствами
полей как данными для запроса с result_id.
При ошибке - FALSE.
Возвращает свойства полей Informix SQL для
каждого поля в запросе как ассоциативный
массив. Свойства расшифровываются как:
"SQLTYPE;длина;точность;размер;ISNULLABLE" где
SQLTYPE = тип Informix типа "SQLVCHAR" и т.п. и
ISNULLABLE = "Y" или "N". Пример 1. Сойства полей Informix SQL
Возвращает число колонок в запросе для result_id
или FALSEпо ошибке.
После подготовки или выполнения запроса,
этот вызов дает вам количество колонок в
запросе. Дает количество строк, выбранных до сих
пор для запроса с result_id
после ifx_query()
или ifx_do(). Освобождает ресурсы, занятые запросом с
идентификатором результата result_id.
Возвращает FALSE при ошибке. Создает символьный объект. param
должен иметь символьное содердимое. Удаляет символьны объеккт для
аолученного идентификатора символьногго
объекта bid. Возвращает
FALSE при ошибке, в противном случае - TRUE. Обновляет содержимое символьного
объекта с идентификатором bid.
content - строка с новыми
данными. Возвращает FALSE при ошибке, в
противном случае - TRUE. Возвращает содержание символьного
объекта с идентификатором bid. Создает объект BLOB
type: 1 = TEXT, 0 = BYTE
mode: 0 = BLOB-объект хранится в памяти 1 = BLOB-объект
хранит содержимое в файле
param: если режим = 0: указатель на
содержимое если режим = 1: указатель на файл-строку
Возвращает FALSE при ошибке, в противном
случае - новый идентификатор BLOB-объекта. Дублирует полученный BLOB-объект. bid
- идентификатор дублируемого объекта
Возвращает FALSE при ошибке, в противном
случае - новый идентификатор BLOB-объекта. Удаляет объект BLOB сидентификатором bid.
Возвращает FALSE при ошибек и TRUE в противном
случае. Возвращает содержимое объекта BLOB с
идентификатором bid. Обновляет содержимое объекта BLOB c
идентификатором bid. content
- строка с новыми данными. Возвращает FALSE
при ошибке и TRUE в противном случае. Устанавливает для BLOB режимы по умолчанию
для всех запросов select. Режим "0"
означает сохранение Byte-BLOB в памяти, а режим
"1" - сохранение в файл. Устанавливает умолчания для текстового
режима для всех запрососв типа select. Режим
"0" - возвращается идентификатор BLOB, а
при режиме "1" - возвратится varchar с
текстовым содержанием. Устанавливает умолчани для байтового
режима для всх запросов select. Режим "0" -
возвращается идентификатор BLOB, а при
режиме "1" - возвратится varchar с
текстовым содержанием. Устанавливает возвращаемое по умолчанию
значение при выборке ряда для полей
созначением NULL. При mode=0 вощвращается
пустая строка, при mode=1 - NULL. Создает 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 в
противном случае. Удаляет объект slob с идентификатором bid.
Возвращает FALSE приошибке и TRUE в противном
случае. Удаляет объект slob с идентификатором bid.
Возвращает FALSE приошибке и TRUE в противном
случае. Открывает объект slob. bid
должен быть существующим идентификатором
slob. Режимы: 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR,
16 = LO_BUFFER, 32 = LO_NOBUFFER -> or-маска. Возвращает
FALSE при ошибке и новый идентификатор
объекта slob в противном случае. Возвращает текущий файл или позицию
поиска для открытього объекта slob, bid
должен быть действующим идентификатором
slob. Возвращает FALSE при ошибке, в противном
случае - позицию поиска. Устанавливает текуцщий файл или позицию
поиска для открытого объекта slob. bid
должен быть существующим идентификатором
slob. Режимы: 0 = LO_SEEK_SET, 1 = LO_SEEK_CUR, 2 = LO_SEEK_END и offset
- байтовое смещение. Возвращает FALSE при
ошибке, в противном случае - позицию поиска. Читает байты в объект slob. bid
- существующий идентификатор slob и nbytes
- количество байт, которое надо прочесть.
Возвращает FALSE при ошибке и строку в
протвном случае. Записывает строку в объект slob. bid
- существующий идентификатор slob и content
- содержание записи. Возвращает FALSE при
ошибке или число записанных байт в
противном случае. 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 Так же как и при организации структуры
каталога на жестком диске, в данном
способе нет жестких правил по организации
структуры, и менеджер сервера директории
LDAP допускает любую структуру, подходящую
для выбранной цели. Однако имеется ряд
соглашений. Суть их в том, что вы не можете
написать код доступа к серверу директории,
не зная его структуры, так же как вы не
можете использовать базу данных без
представления о ее предназначении. Пример
полной программы
Поиск информации для всех записей, где
фамилия начинается с "S", в сервере
директории, вывод на дисплей и извлечение
с именем и email-адресом. Пример 1. Пример поиска в LDAP
Вам потребуется установить и
скомпилировать библиотеки LDAP-клиента или
из пакета University of Michigan ldap-3.3, или из Netscape
Directory SDK. Вам также потребуется
перекомпилировать PHP с поддержкой LDAP для
того чтобы применение PHP LDAP вызовов стало
доступным.
Прежде чем использовать LDAP вызовы,
необходимо знать ..
Типичная последовательность LDAP-вызовов,
которую вы можете применять в приложениях,
представлена в следующем щаблоне:
ldap_connect() // установка
соединения с сервером Большое количество информации по LDAP
может быть найдено:
Netscape SDK одержит полезное Руководство
Программиста в .html формате. ldap_add -- добавляет записи в LDAP каталог int ldap_add возвращает true при успехе и false при ошибке.
Функция ldap_add() используется
для добавления записей в LDAP каталог. DN
добавляемой записи выражается
посредством dn. Массив записи определяет
информацию о записи. Значения записей
индексируются посредством индивидуальных
атрибутов. В случае множественных
значений для атрибута, они индексируются
целыми числами начиная с 0.
запись["атрибут1"] = значение Пример 1. Полный прример с
идентифицируемой связью
ldap_bind -- связь с LDAP каталогом int ldap_bind Связь с LDAP каталогом с определенным RDN и
паролем. Возвращает true при успехе и false при
ошибке.
ldap_bind() осуществляет
операцию связи с каталогом. bind_rdn и bind_password
используются факультативно. Если не
определено, применяется связь anonymous. ldap_close -- закрывает связь с LDAP сервером int ldap_close Возвращает true при успехе, false при ошибке.
ldap_close() закрывает связь с LDAP
сервером, которая ассоциировалась с
определенным link_identifier.
Этот вызов внутренне идентичен ldap_unbind().
LDAP API использует вызов ldap_unbind(),
поэтому возможно он предпочтительнее
вызова ldap_close(). ldap_connect -- соединение с LDAP сервером int ldap_connect Возвращает положительный LDAP
идентификатор связи при успехе, false при
ошибке.
ldap_connect() устанавливает
соединение с LDAP сервером по определенным hostname
и port. Оба аргумента
факультативные. Если аргументы не
определены, то будет возвращен
идентефикатор уже открытого
соединения. Если определено только hostname,
то по умолчанию используется порт 389. ldap_count_entries -- подсчет количества записей
при поиске int ldap_count_entries Возвращает количество записей в
результате или false при ошибке.
ldap_count_entries() возвращает
количество записей хранимых в результате
от предыдущей операции поиска. result_identifier
идентифицирует внутренний ldap результат. ldap_delete -- удаляет запись из каталога int ldap_delete Возвращает true при успехе и false при ошибке.
ldap_delete() удаляет отдельную
запись из LDAP каталога, определенную по dn. ldap_dn2ufn -- конвертирует DN в User Friendly Naming
формат string ldap_dn2ufn ldap_dn2ufn() преобразует DN в
более дружественную для пользователя
форму, удаляя имена типа. ldap_explode_dn -- разбивает DN на составные части array ldap_explode_dn 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 -- возвращает первый атрибут string ldap_first_attribute Возвращает первый атрибут в записи при
успехе и false при ошибке.
Подобно чтению записей, атрибуты также
читаются один за другим из отдельной
записи. ldap_first_attribute()
возвращает первый атрибут в записи,
отмеченной идентификатором записи.
Оставшиеся атрибуты ищутся
последовательными вызовами ldap_next_attribute().
ber_identifier является
идентификатором указателя положения
внутренней памяти. Он передается по ссылке.
Аналогичный ber_identifier
передается ldap_next_attribute() функции, которая
изменяет этот указатель.
См. также ldap_get_attributes() ldap_first_entry -- возвращает первый
идентификатор (id) результата int ldap_first_entry Возвращает идентификатор записи для
первой записи результата при успехе и
false при ошибке.
Записи в LDAP-результате считываются
последовательно с использованием функций ldap_first_entry()
и ldap_next_entry().
ldap_first_entry() возвращает
идентификатор записи для первой записи в
результате. Этот идентификатор записи
передается затем в процедуру lap_next_entry()
для получения последовательных записей из
результата.
См. также ldap_get_entries(). ldap_free_result -- освобождает память
результата int ldap_free_result Возвращает true при успехе и false при ошибке.
ldap_free_result() освобождает
внутреннюю память, предназначенную для
хранения результата и отмечаемую
посредством result_identifier.
Вся память результата автоматически
освобождается когда скрипт завершается.
Обычно вся память, выделяемая для ldap
результата освобождается при окончании
скрипта. В случае, когда скрипт выполняет
последовательные поиски, которые
возвращают большие наборы записей в
результате, ldap_free_result() может
быть вызвана для сохранения
работоспособности оперативной памяти для
следующей части скрипта.. ldap_get_attributes -- получает атрибуты записи в
результате от поиска array ldap_get_attributes Возвращает полную информацию о записи в
многоразмерном массиве при успехе и false
при ошибке.
ldap_get_attributes() используется
для упрощения чтения атрибутов и значений
из записи в результате от поиска.
Возвращаемым значением функции является
многоразмерный массив атрибутов и
значений.
Разместив определенную запись в
каталоге, вы можете узнать какая
информация хранится для этой записи,
используя данный вызов. Вы могли бы
использовать этот вызов в приложении
которое "просматривает" каталог
записей и/или когда вам не известна
структура каталога записей. Во многих
вы можете искать определенные
атрибуты, такие как email-адрес или фамилия,
не озадачиваясь при этом содержимым
других данных.
return_value["count"] = количество
атрибутов в записи Пример 1. Показывает список
атрибутов отдельной записи каталога
См. также ldap_first_attribute()
и ldap_next_attribute() ldap_get_dn -- получает DN записи результата string ldap_get_dn Возвращает DN записи результата или false
при ошибке.
ldap_get_dn() используется для
нахождения DN записи в результате. ldap_get_entries -- получает все записи
результата array ldap_get_entries Возвращает полную информацию о
результате в многомерном массиве при
успехе и false при ошибке.
ldap_get_entries() используется для
упрощения чтения множества записей из
результата и затем чтения атрибутов и
множественных значений. Информация о
записи возвращается по одиночному вызову
функции в многомерном массиве. Структура
массива представлена ниже.
Индекс атрибута преобразуется к нижнему
регистру. (Атрибуты серверов каталогов
нечувствительны к регистру, но не в том
случае когда они используются в качестве
индексов массива).
return_value["count"] = количество
записей в результате См. также ldap_first_entry()
и ldap_next_entry() ldap_get_values -- получение всех значений из
записи результата array ldap_get_values Возвращает массив значений атрибута при
успехе и false при ошибке.
ldap_get_values() используется для
чтения всех значений атрибута в записи в
данном результате. Запись определяется по result_entry_identifier.
Количество значений может быть получено
при индексации "счетчика" в
результирующем массиве. Отдельные
значения доступны по целочисленному
индексу в массиве. Первый индекс
начинается с 0.
Для данного вызова необходим result_entry_identifier,
поэтому нужно предварительно сделать один
вызов ldap поиска, и один из вызовов для
получения отдельной записи.
Ваше приложение или может быть жестко
настроено на поиск определенных атрибутов
(таких как "фамилия" или "почта")
или вы должны использовать вызов ldap_get_attributes()
для получения информации о том, какие
атрибуты существуют для данной записи.
В LDAP может быть более одной записи для
атрибута, поэтому можно, например, хранить
несколько адресов email в записи каталога
для одной персоны, при этом все записи
будут отмечены с атрибутом "mail"
return_value["count"] = количество
значений для атрибута Пример 1. Список значений атрибута
"mail" для записи каталога
ldap_list -- одноуровневый поиск int ldap_list Возвращает идентификатор результата
поиска или false при ошибке.
ldap_list() выполняет поиск с
определенным фильтром по каталогу с
областью LDAP_SCOPE_ONELEVEL.
LDAP_SCOPE_ONELEVEL означает что такой поиск
может вернуть только информацию,
находящуюся на уровне непосредственно
ниже базового dn, заданного в вызове. (Эквивалентно
вводу "ls" и получению списка файлов и
папок в текущем рабочем каталоге).
Этот вызов берет факультативно
четвертый параметр который является
массивом требуемых атрибутов. См.
примечание к ldap_search(). Пример 1. Составление списка всех
подразделений организации
ldap_modify -- изменение записи LDAP int ldap_modify Возвращает true при успехе и false при
ошибке.
ldap_modify() используется для
изменения существующих записей в каталоге
LDAP. Структура записи такая же как и в ldap_add(). ldap_next_attribute -- получает следующий атрибут
в результате string ldap_next_attribute Возвращает следующий атрибут в записи
или false при ошибке.
ldap_next_attribute() вызывается для
поиска атрибутов в записи. Внутреннее
положение указателя устанавливается по ber_identifier.
Он посылается в данную функцию по ссылке.
Первый вызов ldap_next_attribute()
осуществляется с result_entry_identifier
получаемым от ldap_first_attribute().
См. также ldap_get_attributes() ldap_next_entry -- получает следующую запись в
результате int ldap_next_entry Возвращает идентефикатор записи для
следующей записи в результате, записи
которого начинали считываться функцией 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 -- чтение записи int ldap_read Возвращает идентификатор результата
поиска или false при ошибке.
ldap_read() выполняет поиск при
определенном фильтре по каталогу с
областью LDAP_SCOPE_BASE. Таким образом, это
эквивалентно чтению записи из каталога.
Пустой фильтр не допустим. Если вы хотите
получить абсолютно всю информацию для
данной записи, используйте фильтр
"objectClass=*". Если вы знаете какие типы
записей используются в сервере каталога,
вы можете применить подходящий фильтр,
такой как "objectClass=inetOrgPerson".
Этот вызов берет факультативно
четвертый параметр который является
массивом требуемых атрибутов. См.
примечание ldap_search(). ldap_search -- поиск по дереву LDAP int ldap_search Возвращает идентификатор результата
поиска или 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 поиск
Когда вы выполняете поиск, и слишком
много данных возвращается (много записей)
вы получите предупреждение, и ldap_get_entries()
выдаст сбой. Рассматриваемый здесь прием
должен выключить это предупреждение,
потом проверить полученную запись.
$normerr = error_reporting (); Вы можете попробовать сузить эту область,
добавив особый фильтр, т.е. (cn=a*), но было
бы лучше иметь возможность захватить
результаты в битах (т.е. 1-100, 101-200...). ldap_unbind -- прекращение связи из каталога LDAP int ldap_unbind Возвращает true при успехе и false при ошибке.
ldap_unbind() прекращает связь из
каталога LDAP. Функция mail() позволяет отсылать
почту. Если задан четвертый строковый
аргумент, он автоматически вставляется в
конец заголовка. обычно это используется
при добавлении дополнительных полей в
заголовок. Несколько дополнительных полей
разделяются символом новой строки. Пример
2. Посылка почты с дополнительными полями
заголовка. Эти математические функции работают
только с диапазоном чисел типа long и double.
Если Вы хотите использовать большие числа,
взгляните на математические
функции произвольной точности. .
Следующие величины определяются как
математические константы PHP:
Таблица 1. Математические константы Возвращает абсолютную величину числа.
Если число с плавающей запятой, то также
возвращает число с плавающей запятой. Возвращает арккосинус аргумента в
радианах.
Возвращает арктангенс аргумента в
радианах.
См.также acos()
и atan(). Эта функция вычисляет арктангенс от двух
переменных x и y. Аналогично вычислению
арктангенса y / x, за исключением того, что
знаки обоих аргументов используются для
определения сектора результата.
Функция возвращает результат в радианах,
находящихся между -PI и PI (включительно).
Возвращает строку, содержащую number,
представленное по основанию tobase.
Основание, в котором дается число which number
указывается в frombase.
Основания frombase и tobase
должны находиться в диапазоне от 2 до 36
включительно. Цифры в числах с основанием
выше, чем 10 будут представлены буквами a-z,
со значениями a - 10, b - 11 и z - 36. Пример 1. base_convert()
Возвращает десятичный эквивалент
двоичного числа, представленного
аргументом binary_string.
OctDec конвертирует двоичное число в
десятичное. Наибольшее число, которое
может быть сконвертировано равно 31 битам
или 2147483647 в десятичном виде.
См.также функцию decbin(). Возвращает следующее наивысшее целое
значение number.
Использование ceil() на целых
числах - абсолютная трата времени.
ЗАМЕЧАНИЕ: Функция ceil() в PHP/FI
2 возвращаля число типа float. Используйте: $new
= (double)ceil($number); для того, чтобы
сэмулировать старое поведение функции.
Возвращает строку, содержащую двоичное
представление аргумента number. Наибольшее
число, которое может быть сконвертировано
равно 2147483647 в десятичном виде или 31 бит.
См.также функцию bindec(). Возвращает строку, содержащую
шестнадцатиричное представление
аргумента number. Наибольшее число, которое
может быть сконвертировано равно 2147483647 в
десятичном виде или "7fffffff" в
шестнадцатиричном.
См. также функцию hexdec(). Возвращает строку, содержащую
восьмеричное представление аргумента number.
Наибольшее число, которое может быть
сконвертировано равно 2147483647 в десятичном
виде или "17777777777" в восьмеричном. См.также
octdec(). Возвращает следующее нижележащее
значение после number.
Использование floor() на целых
числах - абсолютная потеря времени.
ЗАМЕЧАНИЕ: Функция floor() в
PHP/FI 2 возвращала число типа float.
Используйте: $new = (double)floor($number);
для эмулирования старого поведения этой
функции.
Возвращает максимальную величигу,
которая может быть возвращена вызовом
функции rand().
См.также rand(),
srand() mt_rand(),
mt_srand() и mt_getrandmax(). Возвращает десятичный эквивалент числа,
представленного аргументом hex_string. HexDec
конвертирует шестнадцатиричную сстроку в
десятичное число. Наибольшее число,
которое может быть сконверьтировано равно
7fffffff в шестнадцатиричном виде или 2147483647 в
десятичном.
См. также функцию dechex(). Возвращает натуральный логарифм от
аргумента arg. Возвращает логарифм по основанию 10 от
аргумента arg. max() возвращает наибольшее
число из перечисленных в параметрах.
Если первый элемент является массивом, max()
возвращает максимальную величину массива.
Если первый парметр - целое, строка или
типа double, следует использовать как минимум
два параметра, и в этом случае max()
возвращает наибольшее из этих величин. Вы
можете сравнивать неограниченное
количнество значений.
Если одна или более величин типа double, все
остальные величины будут обращены double, и,
соответственно, возвратится число типа
double. Если ни одно из чисел не является double,
то все будут обращены в целые и
возвратится целое число. min() возвращает наименьшее
значение из указанных в аргументах.
Если первый параметр - массив, min()
возвратит наименьшую величину массива.
Если первый параметр - целое число, строка
или double, следует указать минимум два
парметра и min() возвратит
наименьшую из них величину. Вы можете
сравнивать неограниченно количество
величин.
Если одна или более величин типа double, все
остальные величины будут обращены double, и,
соответственно, возвратится число типа
double. Если ни одно из чисел не является double,
то все будут обращены в целые и
возвратится целое число. Множество генераторов случайных чисел,
написанных на старой библиотеке 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(). Инициализирует генератор случайных
чисел значением seed.
См.также mt_rand(),
mt_getrandmax(),
srand(), rand()
и getrandmax(). Возвращает максимальную величину,
которая может быть возвращена вызовом
функции mt_rand().
См.также mt_rand(),
mt_srand() rand(),
srand() и getrandmax(). number_format() возвращает
форматированную версию числа number.
Эта функция принимает один, два или четыре
параметра (не три):
Если дан только один параметр, число number
будет отформатировано без десятичных цифр,
но с запятой (",") между каждой группой
тысяч.
Если дано два параметра, число number
will будет отформатировано с десятичным
знаком decimals с точкой
(".") впереди и запятой (",") между
каждой группой тысяч.
Если даны все четыре параметра, то число number
будет отформатировано с десятичным знаком
decimals, dec_point
вместо точки (".") перед десятичным
знаком и thousands_sep вместо
запятой (",") между каждой группой
тысяч. Возвращает десятичный эквивалент
восьмеричного числа, представленного
аргументом octal_string. OctDec конвертирует
восьмеричное число в десятичное.
Максимальное число, которое может быть
сконвертировано равно 17777777777 или 2147483647 в
десятичном виде.
См.также decoct(). Вохвращает аппроксимированное значение
pi. Возвращает base, возведенное в степень exp.
См.также exp(). Если функция вызывается без
необязательных параметров min и max, rand()
возвращает псевдо-случайную величину
между 0 и RAND_MAX. При желании получить
случайное число между 5 и 15 (включительно),
используйте rand(5,15).
Не забудьте проинициализировать
генератор случайных чисел перед
использованием srand().
См.также srand(),
getrandmax(), mt_rand(),
mt_srand() и mt_getrandmax(). Возвращает округленную величину val.
Возвращает квадратный корень аргумента. Инициализирует генератор случайных
чисел значением seed.
См.также rand(),
getrandmax(), mt_rand(),
mt_srand() и mt_getrandmax(). Имеются некоторые условия, которые надо
иметь в виду при использовании eval(). Не
забудьте, что переданная строка должна
иметь допустимый PHP код, при включении чего-нибудь
подобного завершению кода с точкой с
запятой дальнейшее выполнение не
прервется на строке после eval(),
поэтому пропускайте это в code_str.
Также не забудьте, что при изменении
переменных значений в eval() эти
переменные будут изменены и в основных
данных. При выполнении вышеприведенного примера
будет выведено следующее:
Это полезно при отладке диспетчера
памяти, который автоматически очищает "отсеченную"
память при выполнении запроса. Идея на эту функцию принималась из Perl и
всей работы кодов форматирования также
как там. Строка формата состоит из кодов
формата, сопровождаемые факультативным
параметром ретранслятора. Параметр
ретранслятора может быть или
целочисленное значение или * для
повторение до конца входных данных. Для a, A,
h, H количество повторов определяет,
сколько принимается символов одного
параметра данных, для @ это безусловная
позиция, где поместить следующие данные,
для всего остального количество повторов
определяет сколько данных будет
использовано и упаковано в возникающую в
результате двоичную строку. В настоящее
время выполнено: 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-Заполнение до конкретной позиции Обратите внимание, что различие между
знаковыми и без знаковыми значениями
эффективно только для функции unpack(),
так как функция pack() дает тот же
самый результат для знаковых и без
знаковых кодов форматирования.
Также обратите внимание, что PHP хранит
интегральные значения как значения со
знаком и имеет machine dependant размер. Если вы
делаете без знака, то интегральное
значение будет сохранено и
сконвертировано, при этом конечный
результат будет неизвестен. Это полезно для сохранения или передачи
значений PHP без потери их типа и
структуры..
Чтобы преобразовать строку обратно в PHP
значение, используйте unserialize().
serialize() обрабатывает следующие типы:
integer , double ,
string , array (многомерный)
и object (объект будет
преобразован в последовательную форму, но
методы при этом будут утеряны). См. также usleep(). Unpack работает не так как в Perl поскольку
распакованные данные сохранены в
ассоциативном массиве. Чтобы сделать это,
Вы должны установить различные коды
формата, и отделить их наклонной чертой
вправо /. Для объяснения кодов формата см. также: pack()
Помните, что PHP хранит интегральные
значения со знаком. Даже если вы сохраните
с указанием что это без знака, и будете
извлекать, то все равно непредсказуем
результат и может возникнуть ошибка. Если Вы нуждаетесь в уникальном
идентификаторе или лексеме(маркере), и Вы
предполагаете раздавать эту лексему(маркер)
пользователю через сеть (то есть сеанс
cookies), то рекомендуется, чтобы Вы
использовали что - нибудь со строками
См. также sleep(). Возвращает положительный идентификатор
результата mSQL-запроса или false в случае
ошибки.
msql() выбирает базу данных и выполняет на
ней запрос. Если не указан необязательный
идентификатор связи, функция будет
пытаться найти открытую связь с mSQL-сервером
и если ни одной связи найдено не будет,
функция попытается создать ее, как если бы
вызывалась функция msql_connect()
без аргументов (см. msql_connect()
). Возвращает количество строк результата
запроса (т.е. количество строк,
возвращаемых SELECT, количество строк,
модифицированных UPDATE или количество строк,
удаленных DELETE).
См.также: msql_query() Возвращает true в случае успеха и false в
случае ошибки.
msql_close() закрывает связь с базой данных mSQL,
которая ассоциирована с указанным
идентификатором связи. Если идентификатор
связи не указан, закрывается последняя
открытая связь.
Заметьте, что обычно нет необходимости
это делать, т.к. непостоянные связи
автоматически закрываются после
исполнения скрипта.
msql_close() не закрывает постоянную связь,
открытую с помощью msql_pconnect()
.
См.также: msql_connect()
и msql_pconnect()
. В случае успеха возвращает
положительный идентификатор связи или false
в случае ошибки.
msql_connect() устанавливает соединение с mSQL
сервером. Аргумент hostname - необязателен, и
если он пропущен, подразумевается localhost.
В случае второго вызова функции msql_connect()
с одинаковыми аргументами, новой связи не
образуется, а вместо нее возвращается
идентификатор уже открытого соединения.
Связь серверои будет закрыта сразу же,
как только прекратится выполнение скрипта
или ранее она не будет закрыта вызовом
функции msql_close()
.
См.также msql_pconnect()
, msql_close() . msql_create_db() пытается создать новую базу
данных на сервере, ассоциированном с
указанным идентификатором связи.
См.также: msql_drop_db()
. Идентична msql_create_db()
. Возвращает true в случае успеха и false в
случае ошибки.
msql_data_seek() передвигает внутренний
указатель строки результата msql_data_seek()
ассоциированного с указанным
идентификатором запроса для того, чтобы
указать на строку с конкретным номером.
Вызов msql_fetch_row()
возвратит эту строку.
См.также: msql_fetch_row()
. msql_dbname() возвращает название
базы данных записанной в положении i
указателя, возвращаемого функцией
msql_listdbs() . Для определения
количества доступных баз данных может
быть использована функция msql_numrows()
. Возвращает true в случае успеха и false в
случае ошибки.
msql_drop_db() пытается полностью удалить с
сервера базу данных, ассоциированную с
указанным идентификатором связи.
См.также: msql_create_db()
. См. msql_drop_db()
. Ошибки, идующие от сервера mSQL больше не
выдают предупреждений. Вместо них
используйте функции для извлечения строки
ошибки. Возвращает массив, который
соответствует извлеченной строке. Если
больше строк нет, возвращается false.
msql_fetch_array() это расширенная версия
функции msql_fetch_row()
. В дополнение к записи данных в массив с
цифровыми индексами, данные также
записываются в ассоциативный массив,
использующий названия полей в качестве
ключей.
Будьте осторожны при извлечении данных
из запроса, который может возвратить
запись, содержащую одно поле со значением 0
(или пустую строку, или NULL).
Важно заметить, что использование
msql_fetch_array() работает совсем НЕ медленнее,
чем msql_fetch_row()
, причем обеспечивает при этом важные
дополнения.
За дополнительной информацией
обратитесь к msql_fetch_row() Возвращает объект, содержащий
информацию о поле
msql_fetch_field() может использоваться для
извлечения информации о полях в некоторых
результатх запросов. Если не указано
смещение поля, то возвращается следующее
поле не извлеченное функцией msql_fetch_field()
поле.
Свойствами объекта являются:
name - название колонки table - название таблицы, которой
принадлежит колонка to not_null - 1, если колонка не может быть
равна null primary_key - 1, если колонка является
первичным ключом unique - 1, если колонка является
уникальным ключом type - тип колонки См.также msql_field_seek()
. Возвращает объект со свойствами,
соответствующими извлеченной строке. Если
больше нет строк, возвращается false.
msql_fetch_object() эквивалентно msql_fetch_array()
, с одним исключением - вместо массива
возвращается объект. Это значит, что
доступ у данным может производиться
только по названию поля, а не по их
смещению (числа - неправильные названия
полей).
По скорости работы функция иденитична msql_fetch_array()
и msql_fetch_row()
(разница очень маленькая).
См.также: msql_fetch_array()
and msql_fetch_row()
. Возвращает массив, соответствующий
извлеченной строке. Если больше нет строк,
то возвращается false.
msql_fetch_row() извлекает одну строку данных из
результата, асслциированного с указанным
идентификатором. Строка возвращается как
массив. Каждая колонка результата
записывается в массив со смещение, начиная
со смещения 0.
Следующий вызов msql_fetch_row() возвратит
следубщую строку из результата. Если строк
больше нет, возвратится false.
См.также: msql_fetch_array()
, msql_fetch_object()
, msql_data_seek()
, и msql_result()
. msql_fieldname() возвращает название указанного
поля. query_identifier -
идентификатор запроса, и field
- индекс поля. msql_fieldname($result, 2);
возвратит название второго поля
результата, ассоциированного с
идентификатором результата. Перемещает указатель на указанное
смещение поля. Если последующий вызов msql_fetch_field()
не будет включать в себя смещение поля,
будет возвращено текущее поле.
См.также: msql_fetch_field()
. Возвращает название таблицы, откуда было
извлечено поле field . msql_fieldtype() эквивалентно msql_fieldname()
. Аргументы идентичны, но возвращается
тип поля. Тип может быть следующим:
"int", "string" или "real". msql_fieldflags() возвращает флаги указанного
поля. В текущий момент они могут быть
следующими: "not null", "primary key", их
комбинацией или "" (пустая строка). msql_fieldlen() возвращает длину указанного
поля. msql_free_result() освобождает
память, ассоциированную с query_identifier
. Когда PHP завершает запрос, эта память
осовобождается автоматически, таким
образом Вам нужно вызывать эту функцию
только тогда, когда Вы хотите быть уверены,
что не используете слишком много памяти во
время исполнения скрипта. msql_list_fields() извлекает информацию о данной
таблице. Аргументами являются название
базы данных и название таблицы.
Возвращается указатель результата,
который может быть использован функциями msql_fieldflags()
, msql_fieldlen()
, msql_fieldname()
, и msql_fieldtype()
. Идентификатор запроса - положительное
целое число. Функция возвращает -1
если возникла ошибка. Строка, описывающая
ошибку будет помещена в $phperrmsg
, и до тех пор, пока функция не будет
вызвана как @msql_list_fields() ,
строка ошибки будет выводится на печать.
См.также msql_error()
. See msql_list_fields()
. msql_list_dbs() возвратит
указатель на результат, содержащий базы
данных, доступные с текущего msql демона.
Используйте функцию msql_dbname()
для извлечения имен таблиц. См. msql_list_dbs()
. msql_list_tables() в качестве
параметра использует название базы данных,
и возвращает у казатель на результат,
примерно, как и функция msql()
. Для извлечения настоящих названий
таблиц должна быть использована функция msql_tablename()
, параметром в которую передается
указатель на результат. См. msql_list_tables()
. msql_num_fields() возвращает количество полей в
данных резултата.
См.также: msql() ,
msql_query() , msql_fetch_field()
, и msql_num_rows()
. msql_num_rows() возвращает количество строк
данных результата.
См.также: msql() ,
msql_query() , и msql_fetch_row()
. Возвращает положительный идентификатор
соединения в случае успеха или false в случае
ошибки.
msql_pconnect() ведет себя во многом также как msql_connect()
с двумя главными отличиями:
Во-первых, при соединении функция должна
попытаться найти (постоянное) соединение,
уж открытое с указанным хостом. Если
таковое найдено, вместо открытия нового
соединения будет возвращен идентификатор
только что найденного.
Во-вторых, соединение с SQl-сервером не
закроется, когда завершится исполнение
скрипты. Вместо этого, соединение
останется открытым для будущего
использования ( msql_close()
не закроет соединение, установленно с
помощью msql_pconnect()).
Такой тип связи, поэтому, называется 'постоянным'. msql_query() посылает запрос к текущей
активной базе данных на сервере, которая
задается идентификатором связи. Если
идентификатор связи не указан, то будет
использоваться последняя открытая связь.
Если связи вообще не открыто, то функция
пытается установить связь как если бы
вызывалась функция msql_connect()
.
Возвращает положительный идентификатор
запроса в случае успеха или false в случае
ошибки.
См.также: msql() ,
msql_select_db() ,
and msql_connect() . См. sql_regcase()
. Возвращает содержимое ячейки с
указанной строки и смещения в указанном
рузльтате.
msql_result() возвращает содержимое одной
ячейки из результата. Аргумент field может
быть смещением поля или его названием или
же названием таблицы, точка, названием
поля (fieldname.tablename). Если название колонки
является псевдонимом ('select foo as bar from...'),
используйте псевдоним вместо названия
колонки.
При работе с большими результатами
запросов, Вы должны рассмотреть
возможность использования одной из
функций, которые извлекают колонку
целиком. Т.к. эти функции извлекают
содержимое нескольких ячеек за один вызов,
то они работают НАМНОГО быстрее, чем
msql_result(). Также заметьте, что при указании
числового смещения поля функция работает
гораздо быстрее, чем при указании названия
поля или аргумента название_таблицы.название_поля.
В качестве высокоскоростной
альтернативы рекомендуем: msql_fetch_row()
, msql_fetch_array()
, и msql_fetch_object()
. Возвращает true в случае успеха и false в
случае ошибки.
msql_select_db() устанавливает текущую активную
базу данных на сервере, которая
ассоциируется с указанным
идентификатором связи. Если не указан
идентификатор связи, используется
последняя открытая связь. Если не открыто
ни одного соединения, функция попытается
установить связь, как если бы вызывалась
функция msql_connect(), и в дальнейшем использует
установленную связь.
Каждый последующий вызов msql_query()
будет сделан на активную базу данных.
См.также: msql_connect()
, msql_pconnect()
, и msql_query() . См. msql_select_db()
. msql_tablename() использует в качестве
аргументов указатель на рузультат,
возвращаемый функцией msql_list_tables()
и целый индекс и возвращает название
таблицы. Функция msql_numrows()
может быть использована для определения
количества таблиц в результате запроса. Пример 1. Использование msql_tablename()
Эти функции обеспечивают доступ к
серверам баз данных MySQL.
Больше информации о MySQL можно найти на
сайте http://www.mysql.com/. mysql_affected_rows() возвращает
количество столбцов, использованных
запросами INSERT, UPDATE или DELETE на сервере,
связываемом с определенным
идентификатором связи(link_identifier). Если
идентификатор связи не определен,
используется последняя открытая связь.
Если последний запрос был запрос DELETE без
условия WHERE, ВСЕ записи будут удалены из
таблицы, но эта функция возвратит нуль.
Эта команда не действует при запросе SELECT,
она действует только при запросах,
изменяющих записи. Чтобы получить
количество колонок возвращенных на запрос
SELECT, используйте mysql_num_rows(). Возвращает: true при успешном завершении,
false при ошибке
mysql_close() закрывает связь с
базой данных MySQL, ассоциированной с
определенным идентификатором связи(link
identifier. Если идентификатор связи не
определен, используется последняя
открытая связь.
Имейте в виду, что это не всегда
необходимо, так как непостоянные открытые
связи автоматически закрываются в конце
выполнения сценария.
mysql_close() не закроет
устойчивые связи сгенерированные
функцией mysql_pconnect().
См. также: mysql_connect(),
и mysql_pconnect(). Возвращает: Правильный идентификатор
связи MySQL при успешном выполнении, или false
при ошибке.
mysql_connect() устанавливает
соединение с MySQL сервером. Все аргументы
дополнительны(опциональны), и если они
пропущены, то устанавливаются по
умолчанию -('localhost', имя пользователя,
который владеет процессом, пустой пароль).
Строка "имя сервера"("hostname")
также может содержать номер порта( подобно
"hostname:port").
В случае, если будет сделан второй вызов mysql_connect()
с теми же аргументами, никакая новая связь
не установится - вместо этого, будет
возвращен идентификатор связи уже
открытой связи.
Как только выполнение сценария
закончится, связь с сервером закроется,
если оно не было явно закрыто более ранний
вызовом mysql_close().
См. также mysql_pconnect(),
и mysql_close(). mysql_create_db() пытается
создавать новую базу данных на сервере
связанном с определенным идентификатором
связи.
См. также: mysql_drop_db().
Для совместимости с более ранними
версиями может также быть использована
функция mysql_createdb() . Возвращает: true при успешном выполнении ,
false при ошибке.
mysql_data_seek() перемещает
внутренний указатель столбца в MySQL запросе
связанного с определенным
идентификатором результата чтобы указать
на определенный номер столбца.
Последующий вызов mysql_fetch_row()
должно возвратить этот столбец. Возвращает: Правильный идентификатор
результата MySQL в результате запроса, или
false при ошибке .
mysql_db_query() выбирает базу
данных и выполняет запрос на нее. Если
дополнительный идентификатор связи не
определен, функция попытается найти
открытую связь с MySQL сервером и если такая
связь не обнаружена, то она попытается
создать ее, как если бы функция mysql_connect()
была вызвана без аргументов.
См. также mysql_connect().
Для обратной совместимости может быть
также использована функция mysql(). Возвращает: true при успешном выполнении ,
false при неудачном завершении.
mysql_drop_db() пытается удалить
целую базу данных с сервера, связанного с
определенным идентификатором связи.
См. также: mysql_create_db().
Для обратной совместимости может быть
также использована функция mysql_dropdb(). Ошибки возвращающиеся с выходного
буфера базы данных mySQL больше не делают
предупреждение. Взамен, используйте эту
функцию, чтобы получить номер ошибки.
См. также: mysql_error() Ошибки возвращающиеся с выходного
буфера базы данных mySQL больше не делают
предупреждение. Взамен, используйте эту
функцию, чтобы получить строку описания
ошибки.
См. также: mysql_errno() Возвращает результат строки запроса как
массив, или false при отсутствии результата.
mysql_fetch_array() является
расширенной версией функции mysql_fetch_row().
Кроме того, что она сохраняет данные в
пронумерованных элементах, результатного
массива, она также сохраняет
ассоциативную связь, используя имена
полей как ключи.
Если два или более столбцов имеют
одинаковые имена, то связку ключ/значение
получает последний из них. Чтобы получить
доступ к другому столбцу(-цам) с таким же
именем, вы должны использовать индексы или
задать псевдонимы(alias) для этих
столбцов.
Важно заметить, что использование mysql_fetch_array()
НЕСУЩЕСТВЕННО медленнее, чем
использование mysql_fetch_row(),
пока это обеспечивает необходимую задачу.
Более подробно см. mysql_fetch_row() Пример 1. mysql fetch array
Возвращает объект, содержащий
информацию о поле.
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_row(),
или false при ошибке .
mysql_fetch_lengths() хранит длины
каждого столбца в последней колонке
результата возвращенного функцией mysql_fetch_row()
в массиве, нумеруемом с нуля.
См. также: mysql_fetch_row(). Возвращает объект с свойствами, который
соответствует полученной строке, или false
если нет результата.
mysql_fetch_object() подобна mysql_fetch_array(),
с одним различием - вместо массива
возвращается объект. Это означает, что Вы
можете иметь доступ к данным только по
именам полей, а не по их параметрам (индексные
числа в данном случае являются неверным
обращением).
Вообще говоря, эта функция идентична mysql_fetch_array(),
такая же быстрая как mysql_fetch_row()
(различие незначительное). Пример 1. mysql fetch object
См. также: mysql_fetch_array()
и mysql_fetch_row(). Возвращает: Массив, который
соответствует выбранным колонкам, или false
если нет результата.
mysql_fetch_row() выбирает столбец
данных из результата, и связывает его с
определенным идентификатором результата(индексом
элемента массива). Запрос возвращается как
массив. Каждый столбец результата
хранится в элементах массива,
пронумерованного с нуля.
Последующий вызов функции mysql_fetch_row()
должен возвратить следующую строку, или
false если нет больше колонок.
См. также: mysql_fetch_array(),
mysql_fetch_object(),
mysql_data_seek(),
mysql_fetch_lengths(),
и mysql_result(). mysql_field_name() возвращает имя
указанного поля. Аргументами функции
являются идентификатор результата и
индекс поля, т.е. mysql_field_name($result,2);
Возвратит имя второй области в результат,
связанный с идентификатором результата($result).
Для обратной совместимости также может
быть использована функция mysql_fieldname(). Поиск в определенном поле. Если
следующий вызов mysql_fetch_field()
не содержит указания поля, то должно быть
возвращено именно это поле.
См. также: mysql_fetch_field(). Получает имя таблицы поля. Для обратной
совместимости также может быть
использована mysql_fieldtable() . mysql_field_type() подобна функции mysql_field_name()
. Аргументы идентичны, но возвращается тип
поля. Это будет что-то из "int",
"real", "string", "blob", или другие
типы, которые подробно описываются в
документации MySQL. Пример 1. mysql field types
Для обратной совместимости mysql_fieldtype()
также может быть использована. 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_len() возвращает длину
указанного поля. Для обратной
совместимости mysql_fieldlen() также
может быть использована. mysql_free_result() должна быть
использована только если Вы беспокоитесь
об использовании слишком большого объема
памяти, во время работы вашего скрипта. Вся
используемая результатом память для
определенного идентификатора результата
автоматически будет освобождена.
Для обратной совместимости mysql_freeresult()
также может быть использована. mysql_insert_id() возвращает ID
сгенерированнуые для поля с
автоинкрементом(AUTO_INCREMENTED). Эта функция не
использует аргументов. Она возвратит
автоматически сгенерированный номер ID
возвращенный последним запросом INSERT. mysql_list_fields() извлекает
информацию о заданной tablename таблице.
Аргументы - имя базы данных и имя таблицы.
После выполнения возвращается указатель
результата, который может использоваться
функциями mysql_field_flags(),
mysql_field_len(),
mysql_field_name(),
и mysql_field_type().
Идентификатор результата является
положительным целым. Функция возвращает -1
если происходит ошибка. Строка описсания
ошибки будет помещена в переменную $phperrmsg,
и если функция не была вызвана как @mysql()
то затем также будет выведено это описание
ошибки.
Для обратной совместимости mysql_listfields()
также может быть использована. mysql_list_dbs() возвратит
указатель результата, содержащий базы
данных доступные текущему процессу mysql.
Используйте функцию mysql_tablename(),
чтобы просмотреть этот указатель
результата.
Для обратной совместимости mysql_listdbs()
также может быть использована. mysql_list_tables() берет имя базы
данных и указатель результата очень
подобно функции mysql_db_query().
Функция mysql_tablename()
должна использоваться, чтобы извлечь
фактические имена таблиц с указателя
результата.
Для обратной совместимости mysql_listtables()
также может быть использована. mysql_num_fields() получает
количество полей в установленном
результате.
См. также: mysql_db_query(),
mysql_query(), mysql_fetch_field(),
mysql_num_rows().
Для обратной совместимости mysql_numfields()
также может быть использована. mysql_num_rows() получает
количество столбцов в установленном
результате
См. также: mysql_db_query(),
mysql_query() и, mysql_fetch_row().
Для обратной совместимости mysql_numrows()
также может быть использована. Возвращает: Правильный MySQL идентификатор
устойчивой связи при успешном выполнении ,
или false при ошибке.
mysql_pconnect() действует очень
похоже на mysql_connect()
с двумя важными различиями.
Во-первых, при соединении, функция должна
сначала попытаться найти (устойчивую)
связь, которая уже открыта тем же хостом,
именем пользователя и паролем. Если она
обнаруживается, возвратится ее
идентификатор, вместо открытия нового
соединения.
Во-вторых, соединение с сервером SQL не
закроется, когда закончится выполнение
сценария. Вместо этого, связь останется
открытой для последующего использования (mysql_close()
не закроет связи установленные функцией mysql_pconnect()).
Потому этот тип связей назван 'устойчивый'. mysql_query() посылает запрос в
базу данных, к настоящему времени активную
на сервере, который связан с определенным
идентификатором связи. Если link_identifier
не указан, используется последняя
открытая связь. Если связь не открыта,
функция пытается установить связь, как
если бы была вызвана функция mysql_connect()
и использует ее.
Эта функция возвращает TRUE или FALSE чтобы
показать успешность выполнения запросов
UPDATE, INSERT, и DELETE. При запросе SELECT она
возвращает новый идентификатор
результата. Ресурсы, использованные
запросом затем могут быть освобождены
вызовом функции mysql_free_result().
См. также: mysql_db_query(),
mysql_select_db(),
и mysql_connect(). 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(). Возвращает: true при успешном выполнении ,
false при ошибке
mysql_select_db() устанавливает
текущую активную базу данных в сервере,
которая связывается с определенным
идентификатором связи. Если не определен
идентификатор связи, принимается
последняя открытая связь. Если связь не
открыта, функция попытается установить
связь, как если бы была вызвана функция mysql_connect().
Каждый последующий вызов mysql_query()
будет произведен в активной базе данных.
См. также: mysql_connect(),
mysql_pconnect(),
и mysql_query()
Для обратной совместимости mysql_selectdb()
также может быть использована. mysql_tablename() берет указатель
результата возвращенный функцией mysql_list_tables()
а также целочисленный индекс и возвращает
имя таблицы. Функция mysql_num_rows()
может использоваться для того, чтобы
определить количество таблиц на данном
указателе результата. Пример 1. mysql_tablename() example
sybase_affected_rows -- возвращает число строк,
измененных последним запросом
Возвращает: Число строк,измененных
последним запросом.
Функция sybase_affected_rows() возвращает число
строк, участвовавших в запросе вида INSERT, UPDATE
или DELETE к серверу, указанному с помощью
идентификтора соединения (link_identifier). Если
идентификатор не задан, используется
соединение, открытое последним.
Эта команда работает только с операторами,
изменяющими записи. Для получения числа
записей, возвращаемых оператором SELECT
следует использовать функцию sybase_num_rows().
sybase_close -- завершает соединение с Sybase
возвращет: true - в случае успеха, false - в
случае ошибки
Функция sybase_close() завершает соединение с
базой данных Sybase, обозначенное с помощью
идентификатора соединения. Если он не
указан, используется соединение, открытое
последним.
Отметим, что вызов этой функции не
является обязательным, т.к. временные
соединения закрываются автоматически
после окончания выполнения скрипта.
Функция sybase_close() не завершает постоянные
соединения, открытые с помощью sybase_pconnect().
Смотри также: sybase_connect(),
sybase_pconnect().
sybase_connect -- устанавливает соединение с Sybase -
сервером
Возвращает: В случае успеха:
идентификатор соединения (положительное
число), в противном случае - false.
Функция sybase_connect() устанавливает
соединение с Sybase-сервером. Параметр 'servername'
должен содержать существующее имя сервера,
определенное в файле 'interfaces'.
Если функция sybase_connect() будет вызвана
повторно с теми же параметрами, то новое
соединение не установится, а будет
возвращен идентификатор уже открытого
соединения.
Соединение с сервером будет закрыто после
завершения скрипта или раньше, посредством
явного вызова функции sybase_close().
Смотри также: sybase_pconnect(),
sybase_close().
sybase_data_seek -- перемещает внутренний
указатель записей
Возвращает: true -в случае успеха, иначе - false
Функция sybase_data_seek() перемещает внутренний
указатель в результирующем наборе записей,
заданном с помощью идентификатора
result_identifier, на строку с номером row_number. При
последующем вызове функции sybase_fetch_row()
будет извлечена эта строка.
Смотри также: sybase_data_seek().
sybase_fetch_array -- извлекает строку в виде
массива
Возвращает: Массив, содержащий
извлеченную из набора данных строку или false
- если строк больше нет.
Функция sybase_fetch_array() является расширенной
версией функции sybase_fetch_row().
Доступ к элементам массива возможен не
только по номерам , но и по именам столбцов
таблицы.
Необходимо отметить, что функция
sybase_fetch_array() работат НЕ намного МЕДЛЕННЕЕ,
чем sybase_fetch_row(), и предоставляет
дополнительные возможности по сравнению с
последней.
Подробнее смотри также sybase_fetch_row()
sybase_fetch_field --получает информацию о столбце
из набора данных
Возвращает объект, содержащий информацию
о столбце
Функцию sybase_fetch_field() можно использовать
для получения данных о столбцах
результирующего набора result. Если смещение (номер)
столбца в таблице (field_offset) не указано, то при
каждом вызове sybase_fetch_field() будет извлекаться
информация о следующем по порядку столбце.
Свойства объекта:
Смотри также sybase_field_seek()
sybase_fetch_object --извлекает строку в виде
объекта
Возвращает: Объект, свойства которого
соответствуют извлеченной из набора данных
строке, или false - если сторк больше нет.
Функция sybase_fetch_object() аналогична sybase_fetch_array()
за одним исключением - она возвращает
объект, а не массив. Фактически это означает,
что доступ к данным осществляется по именам
столбцов, а не по их смещению в строке (числовые
значения не могут быть именами свойств).
С точки зрения скорости выполнения эта
функция идентична sybase_fetch_array(),
и работает практически также быстро, как и sybase_fetch_row()
(разница в скорости незначительна).
Смотри также: sybase_fetch-array()
и sybase_fetch-row().
sybase_fetch_row -- получает строку в виде
пронумерованного массива
Возвращает: Массив, соответствующий
извлеченной строку, или 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_fetch_field()
не будет указан конкретный номер столбца,
то будет возвращен этот столбец.
Смотри также: sybase_fetch_field().
sybase_free_result --освобождает память, занятую
результирующим набором данных
Функцию sybase_free_result() следует вызывать,
только если вы хотите уменьшить объем
используемой памяти во время выполнения
скрипта. Все занимаемая память будет
автоматически освобождена после
завершения скрипта. Вы можете вызвать sybase_free_result()
с идентификатором result в качестве параметра,
и содержащая результаты выполнения этого
запроса память будет освобождена.
sybase_num_fields -- получает число столбцов в
результирующем наборе данных
sybase_num_fields() возвращает число столбцов в
результирующем наборе
Смотри также: sybase_db_query(), sybase_query(),
sybase_fetch_field(), sybase_num_rows().
sybase_num_rows -- получает число столбцов в
результирующем наборе данных
sybase_num_rows() rвозвращает число строк в
результирующем наборе
Смотри также: sybase_db_query(), sybase_query()
и sybase_fetch_row().
sybase_pconnect -- открывает постоянное
соединение с Sybase-сервером
Возвращает: Идентификатор соединения с
Sybase-сервером (положительное число) или false в
случае ошибки
Функция sybase_pconnect() выполняется
практически аналогично sybase_connect()
с двумя главными отличиями:
Во-первых, при установлении соединения
функция сначала пытается найти уже
открытое (постоянное) соединение,
использующее те же имена хоста,
пользователя и пароль. Если такое
соединение уже существует, то возвращается
его идентификатор, и новое соединение не
устанавливается.
Во-вторых, соединение с SQL-сервером не
завершается после выполнения скрипта.
Вместо этого, оно остается открытым для
последующего использования. (Функция sybase_close()
не закрывает соединения, установленные с
помощью sybase_pconnect()).
Поэтому этот тип соединений называется 'постоянным'.
sybase_query -- посылает запрос на Sybase-сервер
Возвращает: в случае успеха-
идентификатор результирующего набора
данных (положительное число), или false- в
случае ошибки.
Функция sybase_query() посылает запрос к текущей
открытой базе данных на сервере, заданном
иденитификатором link_identifier. Если этот
идентификатор не указан, то используется
соединение, открытое последним. Если нет ни
одного соединения, то функция пытается
установить новое ( как если бы была вызвана sybase_connect()),
и затем его использовать.
Смотри также: sybase_db_query(), sybase_select_db()
и sybase_connect().
sybase_result --получает результирующие данные
Возвращает: Содержимое ячейки данных на
пересечении указанных строки и столбца из
заданного результирующего набора данных
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
Возвращает: true - в случае успеха, false - в
случае ошибки
Функция sybase_select_db() устаналивает активную
базу данных на сервере, заданном
идентификатором link_identifier. Если это
идентификатор не указан, то используется
соединение, открытое последним. Если нет
открытых соединений, то функция попытается
установить новое (как если бы была вызвана sybase_connect())
и затем его использовать.
Все последующие вызовы sybase_query()
будут работать с данной активной базой
данных.
Смотри также: sybase_connect(),
sybase_pconnect() и sybase_query() Открывает сокетное соединение с доменом
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
Если mode отсутствует,
данный дескриптор сокета переключится на
non-blocking режим, а если присутствует, то
переключится на blocking режим. Это влияет на
вызовы типа fgets(),
который читает из сокета. В non-blocking режиме
fgets() вызов всегда будет возвращаться
немедленно, в то время как в blocking режиме он
ждет данные, чтобы стать доступным на
сокете. Возвращает имя хоста Internet определенного
аргументом ip_address . Если
происходит ошибка, возвращается ip_address
.
См. также gethostbyname()
. Возвращает IP-адрес хоста, указанного
аргументом hostname .
См. также gethostbyaddr()
. Возвращает список IP-адресов на которых
разрешен хост Internet, указанный аргументом hostname.
См. также gethostbyname()
, gethostbyaddr()
, checkdnsrr() ,
getmxrr() Ищет в DNS записи типа type,
соответствующие аргументу host.
Возвращает true, если обнаруживаются какие-либо
записи ; Возвращает false, если не обнаружены
никакие записи или если произошла ошибка.
type может быть любым из
значений: A, MX, NS, SOA, PTR, CNAME, или ANY. По
умолчанию - MX.
host может или быть
адресом IP или именем хоста.
См. также getmxrr()
, gethostbyaddr()
, gethostbyname()
, gethostbynamel() Ищет в DNS MX-записи, соответствующие hostname.
Возвращает true если записи найдены;
возвращает false если записей не найдено или
произошла ошибка.
Список MX-записей может размещаться в
массиве mxhosts. Если
задано weight массива, то
он может быть заполнен собранной
информацией.
См. также checkdnsrr()
, gethostbyname()
, gethostbynamel()
, gethostbyaddr() openlog() открывает для
программы соединение c system logger . Строка ident
добавляется к каждому сообщению. Значение
для option и facility
даются в следующем разделе. Использование
openlog() не обязательно; Это может быть
автоматически вызвано вызовом syslog()
если необходимо, в этом случае ident по
умолчанию будет false. См. также
syslog() и closelog()
. syslog() генерирует
регистрационное сообщение, для system logger. priority
- комбинация легкости и уровня, значения
для которых даются в следующем разделе. А
другой аргумент является отсылаемым
сообщением, кроме того, два символа %m
заменятся строкой сообщения ошибки (strerror)
соответствующей значению errno.
Больше информации о средствах syslog можно
обнаружить на man-страницах для syslog в Unix-системах.
В WindowsNT, сервис syslog эмулируется
использованием Event Log. closelog() закрывает дескриптор,
используемый для записи в system logger.
Использование closelog()
необязательно. Разрешает внутренний PHP отладчик,
соединяя его на address .
Отладчик находится в стадии разработки. Запрещает внутренний PHP отладчик.
Отладчик находится в стадии разработки. Откатавает все незаконченные запросы на connection_id
. Возвращает true при успехе, false
при ошибке. Без параметра OnOff эта
функция возвращает статус
автофиксирования для connection_id
. True возвращается, если
автофиксирование включено, false если оно
выключено или если произошли ошибки.
Если параметр OnOff установлен
в true, то автофиксирование включено, если
параметр установлен в ложь, то
автофиксирование отключено. True
возвращается при успешном завершении, false
- при ошибке.
По умолчанию автофиксирование включено
для соединения. Отключение
автофиксирования эквивалентно началу
транзакции.
См. также odbc_commit()
и odbc_rollback()
. (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 Если была использована функция odbc_fetch_into()
, то передача означает, что для этих
полей будет возвращена пустая строка.
Если result_id равен 0
, то установки принимаются по умолчанию
для новых результатов.
Замечание: По умолчанию для longreadlen
установлено 4096 и binmode по
умолчанию - ODBC_BINMODE_RETURN .
Обработка двоичных данных типа LONG также
осуществляется odbc_longreadlen() odbc_close() закрывает
соединение с сервером баз данных,
связанное с указанным идентификатором
соединения.
Замечание: Эта функция выдаст
ошибку, если у этого соединения есть
запущенные транзакции. Соединение
останется открытым в этом случае. odbc_close_all() закрывает все
соединения с сервером(серверами) баз
данных.
Замечание: Эта функция выдаст
ошибку, если у этих соединений есть
незавершенные транзакции. В этом случае
соединения останутся открытыми. Возвращает: true при успехе, false
при ошибке. Все незаконченные транзакции
на connection_id фиксируются. возвращает идентификатор ODBC-соединения
или 0 ( false ) при ошибке.
Идентификатор соединения, возвращаемый
этой функцией, запрашивается другими ODBC
функциями. Вы можете иметь несколько
соединений открытых одновременно. Для
постоянных соединений см.
odbc_pconnect() . odbc_cursor возвращает имя курсора для
указанного result_id. odbc_do запускает запрос на указанном
соединении Возвращает false при ошибке.
Возвращает ODBC-идентификатор результата,
если SQL команда была запущена успешно.
odbc_exec() посылает SQL-запрос
серверу баз данных, определенному
параметром connection_id .
Этот параметр должен быть правильным
идентификатором, возвращенным функцией odbc_connect()
or odbc_pconnect()
.
См. также: odbc_prepare()
and odbc_execute()
для многократных запусков SQL-запросов. Запускает SQL-запрос, подготовленный
функцией odbc_prepare()
. Возвращает true при
успешном запуске, false о
обратном случае. Массив arameters_array
необходим только если вы действительно
имеете параметры в вашем SQL-запросе. Возвращает число столбцов в результате; false
при ошибке. result_array может
быть любого типа, так как он будет
конвертирован в тип массив. Массив будет
содержать значения полей начиная с
индекса 0 массива. Если 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-идентификаторе
результата. Номера полей начинаются с 1. false
возвращается при ошибке. odbc_field_type() возвращает SQL тип
поля в соответствии с номером в указанном
ODBC-идентификаторе результата. Номера
полей начинаются с 1. odbc_field_type()
возвращает длину поля в соответствии с
номером в указанном ODBC-идентификаторе
результата. Номера строк начинаются с 1. Всегда возвращает true.
Замечание: Если автофиксирование
отключено (см. odbc_autocommit()
) вы можете вызвать odbc_free_result()
и перед фиксированием все незавершенные
транзакции будут откатаны назад. (Обрабатываемые ODBC SQL типы : LONG, LONGVARBINARY)
Число байтов, возвращенных PHP,
контролируется длиной параметра. Если она
установлена в 0, то данные типа Long
передаются клиенту.
Замечание: Обработка полей типа
LONGVARBINARY также осуществляется odbc_binmode() odbc_num_fields() возвращает число
полей (столбцов) в результате ODBC. Эта
функция вернет -1 при ошибке. Аргумент
является правильным результирующим
идентификатором, возвращенным odbc_exec()
. Возвращает идентификатор ODBC соединения
или 0 ( false ) при ошибке. Эта
функция очень похожа на odbc_connect()
, кроме того, что соединение в
действительности не закрывается после
завершения скрипта. Будующие запросы на
соединение с той же комбинацией
параметров dsn , user
, password (через odbc_connect()
и odbc_pconnect() ) могут повторно
использовать постоянное соединение.
Замечание: Постоянные соединения не
действуют, если PHP используется как CGI
программа. Для подробной информации о постоянных
соединениях см. PHP3 FAQ. Возвращает false при ошибке.
Возвращает ODBC-идентификатор результата,
если SQL команда была подготовлена успешно.
Идентификатор результата может быть
использован для последеющего запуска
запроса с помощью odbc_execute()
. odbc_num_rows() возвращает число
строк в ODBC результате. Эта функция вернет -1
при ошибке. Для команд INSERT, UPDATE и DELETE odbc_num_rows()
вернет число обработанных строк. Для
случая SELECT это может быть
число доступных строк.
Замечание: Использование odbc_num_rows()
для определения числа строк, доступных
после SELECT вернет -1 у многих драйверов. Возвращает содержимое поля.
поле может быть целым
числом, содержащим номер столбца
необходимого вам поля, или оно может быть
строкой, содержащей имя поля. Например:
Первый вызов odbc_result() вернет
значение третьего поля в текущей записи
результата запроса. Второй вызов функции odbc_result()
возвратит значение поля, имя которого
"val" в текущей записи результата
запроса. Ошибка возникнет, если параметр
номера столбца для поля меньше, чем один
или более номеров столбцов (или полей) в
текущей записи. Так же ошибка возникнет,
если запрашивается поле с именем, не
совпадающем с именами полей в
запрашиваемой таблице (таблицах).
Номера полей начинаются с 1. Field indices start from
1. Относительно способа возврата двоичных
данных и данных типа LONG см. функции odbc_binmode
() and odbc_longreadlen()
. Возвращает число строк в результате или
false при ошибке.
odbc_result_all() выдает все строки
из идентификатора результата, полученного
от odbc_exec() .
Результат выдается в формате HTML таблицы. С
дополнительным строковым аргументом
format , может быть осуществлено
дополнительное форматирование таблицы. Откатавает все незаконченные запросы на connection_id
. Возвращает true при успехе,
false при ошибке. Возвращает true если связывание прошло
успешно, в обратном случае - false. Делали об
ошибке могут быть получены использую
функции ora_error()
и ora_errorcode()
.
Эта функция связывает именованную
переменную PHP с параметром SQL. Параметр SQL
должен быть в виде ":имя". С
дополнительным параметром типа вы можете
определить SQL параметр как входной/выходной
(0, по умолчанию), как входной (1) или как
выходной (2). В PHP версии 3.0.1 вы можете
использовать константы ORA_BIND_INOUT, ORA_BIND_IN and
ORA_BIND_OUT вместо чисел.
Функция ora_bind должна вызывать после ora_parse()
и до ora_exec() .
Входные значения могут быть заданы
присваиванием связанным переменным PHP,
после вызова ora_exec()
связанные переменные PHP содержат
выходные значения, если они доступны.
Взвращает true, если закрытие завершилось
успешно, иначе false. Детали об ошибке могут
быть получены используя функции ora_error()
и ora_errorcode()
.
Эти функции закрывают курсор данных,
открытый функцией ora_open()
. Возвращает имя поля/столбца column
под курсором cursor . Все
буквы возвращенного имени возвращаются в
верхнем регистре. Возвращает имя типа данных Oracle для поля/столбца
column под курсором cursor
. Возвращаемый тип будет один из
следующих:
Возвращает true при успехе, false при ошибке.
Детали об ошибке могут быть получены с
помощью функций ora_error()
и ora_errorcode()
Эти функция фиксирует транзакцию Oracle.
Транзакция определяется как все изменения
на данном содинении с момента последней
фиксации/отката, автофиксирование
отключается при установке соединения. Возвращает true при успехе, false при ошибке.
Детали об ошибке могут быть получены с
помощью функций ora_error()
и ora_errorcode()
.
Эти функция отключает автоматичиское
фиксирование после каждого вызова ora_exec()
. Эта функция включает автоматическое
фиксирование после каждого вызова ora_exec()
на данном соединении.
Возвращает true при успехе, false при ошибке.
Детали об ошибке могут быть получены с
помощью функций ora_error()
и ora_errorcode()
. Возвращает сообщение об ошибке в виде XXX
- NNNNN где XXX
- место, где произошла ошибка, и NNNNN
определяет сообщение об ошибке.
Параметр cursor может в
версии PHP 3.0.6 быть идентификатором
соединения.
В UNIX версии Oracle вы можете получить детали
об ошибке, например, как эти: $
oerr ora 00001 00001, 00000, "unique
constraint (%s.%s) violated" // *Причина: Попытка
обновления или вставки уже существующего
ключа. // Для trusted-конфигурации ORACLE в режиме
DBMS MAC вы можете увидеть это // сообщение,
если дубликат ключа есть на другом уровне
// *Действие: Или удалите уникальное
обновление или не вставляйте ключ Возвращает числовой код последней
запущенной команды на указанном курсоре.
Параметр cursor может в
версии PHP 3.0.6 быть идентификатором
соединения. Возвращает true при успехе, false при ошибке.
Детали об ошибке могут быть получены с
помощью функций ora_error()
и ora_errorcode()
. Возвращает true (строка была получена) или
false (нет больше строк или произошла ошибка).
Если ошибка произошла, то детали могут
быть получены с помошью функций ora_error()
и ora_errorcode()
. Если ошибок не было, то ora_errorcode()
вернет 0. Функция возвращает строку
данных из указанного курсора. Возвращает поле данных. Если произошла
ошибка, то будет возвращено False и ora_errorcode()
вернет ненулевое значение. Отметим,
однако, что при проверке на ошибку на
результатах из этой функции можно
получить true в случае, если там ошибки не
было (результат NULL, пустая строка, число 0,
строка "0"). Возвращает true при успехе, false при ошибке.
Детали об ошибке могут быть получены с
помощью функций ora_error()
и ora_errorcode()
. Отключает пользователей и
осоединяется от сервера. Устанавливает соединение между PHP и
базай данных Oracle с указанными именем
пользователя и паролем.
Соединение могут быть установлены с
помощью SQL*Net заменяя имя TNS
на пользователя как
здесь:
Если у вас символьные данные вместе с не
ASCII символами, вам следует убедится, что NLS_LANG
установлена в вашем окружении. Для
серверных модулей вам следует установить
его в серверном окружении до запуска
сервера.
Возвращает идентификатор соединение при
успехе, или false при ошибке. Детали об ошибке
могут быть получены с помощью функций ora_error()
и ora_errorcode()
. Открывает курсор Oracle, связанный с
соединением.
Возвращает идентификатор курсора или False
при ошибке. Детали об ошибке могут быть
получены с помощью функций ora_error()
и ora_errorcode()
. Эта функция разбирает запрос SQL или блок
PL/SQL и связывает его с указанным курсором.
Возвращает 0 при успехе или -1 при ошибке. Эта функция отменяет транзакцию Oracle. (См. ora_commit()
для определения транзакции).
Возвращает true при успехе, false при ошибке.
Детали об ошибке могут быть получены с
помощью функций ora_error()
и ora_errorcode()
. Вы можете использовать функции 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
документа. Эта структура может быть
заполнена различной информацией, такой
как автор, название и т.д. Пример 1. PDF_get_info
См. также PDF_set_info_creator()
, PDF_set_info_subject()
. Функция 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 документа.
Она должна вызываться после PDF_get_info()
и перед PDF_open()
. Вызов функции после PDF_open()
не даст никакого эффекта в документе.
Примечание: Эта функция не является
частью библиотеки pdf. См. также PDF_get_info()
, PDF_set_info_xxxxx() . Функция 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
документа. Она должна вызываться после PDF_get_info()
и перед PDF_open()
. Вызов функции после PDF_open()
не даст никакого эффекта в документе.
Замечание: Эта функция не является
частью библиотеки pdf. См. также PDF_get_info()
, PDF_set_info_xxxxx() . Функция PDF_set_info_author()
устанавливает автора pdf документа. Она
должна вызываться после PDF_get_info()
и перед PDF_open()
. Вызов функции после PDF_open()
не даст никакого эффекта в документе.
Замечание: Эта функция не является
частью библиотеки pdf. См. также PDF_get_info()
, PDF_set_info_xxxxx() . Функция PDF_set_info_author()
открывает новый pdf документ.
Соответствующий файл должен быть открыт
функцией fopen() и
дескриптор файла использоваться как
аргумент file . info
является информационной структурой,
которая должна быть создана функцией pdf_get_info()
.
Замечание: Возвращаемое значение
необходимо как первый параметр у всех
функций записи в pdf документ. См. также fopen() ,
PDF_get_info() . Функция PDF_close()
закрывает pdf документ int .
Замечание: Функция не закроет файл.
Вам неоходимо вызвать отдельно функцию fclose()
после pdf_close() . См. также PDF_open()
, fclose(). Функция PDF_begin_page()
начинает новую страницу высотой height
и шириной width .
См. также Функция PDF_end_page()
завершает страницу.
См. также PDF_end_page()
. Функция PDF_show()
выводит строку text в
текущей позиции.
См. также PDF_show_xy()
, PDF_set_text_pos()
. Функция PDF_show_xy()
выводит строку text в
позиции с координатами ( x-koor
, y-koor ).
См. также PDF_show()
. Функция PDF_set_font()
устанавливает текущий шрифт, его размер
и кодировку. Вам потребуется указать Adobe Font
Metrics (afm-файлы) для шрифта в пути шрифта (по
умолчанию ./fonts).
См. также PDF_info() . Функция PDF_set_leading()
устанавливает промежуток между
строками текста. Он будет использоваться
при выводе текста функцией PDF_continue_text()
.
См. также PDF_continue_text()
. Функция PDF_set_text_rendering()
определяет, как текст отрисовывается.
Возможные значения для параметра mode
это 0=заливка текста, 1=контурный текст, 2=контурный
текст с заливкой, 3=невидимый текст, 4=заливка
текста и добавление его в контур обреза, 5=контурный
текст с добалением в контур обреза, 6=контурный
текст с заливкой и с добавлением к контур
обреза, 7=добавление текста в контур обреза. Функция PDF_set_horiz_scaling()
устанавливает горизонтальное
масштабирование в scale процентов. Функция PDF_set_text_rise()
устанавливает увеличение текста на value
едениц. Функция PDF_set_text_matrix()
уставливает матрицу, которая описывает
изменения, применяемые к текущему шрифту
текста. Функция PDF_set_text_pos()
устанавливает позицию текста для
следующего вызова функции pdf_show()
.
См. также PDF_show()
, PDF_show_xy() . Функция PDF_set_char_spacing()
устанавливает промежутки между
символами.
См. также PDF_set_word_spacing()
, PDF_set_text_leading() . Функция PDF_set_word_spacing()
устанавливает промежутки между словами.
См. также PDF_set_char_spacing()
, PDF_set_text_leading() . Функция PDF_continue_text()
выводит строку из text на
следующей строке.
См. также PDF_show_xy()
, PDF_set_text_leading() , PDF_set_text_pos()
. Функция PDF_stringwidth()
возвращает ширину строки в text
. Этой функции необходим заранее
установленный шрифт.
См. также PDF_set_font()
. Функция PDF_save()
сохраняет текущее окружение. Она
работает как postscript-команда gsave. Функция
очень полезна при переводе или вращении
объекта без затрагивания других объектов.
См. также PDF_restore()
. Функция PDF_restore()
восстанавливает окружение сохраненное
функцией PDF_save()
. Она работает postscript-команда grestore.
Функция очень полезна при переводе или
вращении объекта без затрагивания других
объектов. Example 1. PDF_get_info
См. также PDF_save()
. Функция PDF_translate()
устанавливает начало системы координат
в точке ( x-koor , y-koor
). Функция PDF_scale()
устанавливает масштабный коэффициент
для обоих осей. Функция PDF_rotate()
Устанавливает вращение в процентах на
угол angle . Функция PDF_setflat()
устанавливает плоскость на величину от 0
до 100. Функция PDF_setlinejoin()
устанавливает параметр слияния линий
между от 0 до 2. Функция PDF_setlinecap()
устанавливает параметр формата строки
от 0 до 2. Функция PDF_setmiterlimit()
устанавливает минимальную границу
больше или равную 1. Функция PDF_setlinewidth()
устанавливает ширину width
линии. Функция PDF_setdash()
устанавливает шаблон тире, где white
- еденицы белого и black -
еденицы черного. Если они оба равны 0, то
устанавливается сплошная линия. Функция PDF_moveto()
устаналивает текущую точку в
координатах x-koor и y-koor
. Функция PDF_curveto()
рисует кривую Безье с текущей тоски до
точки с координатами ( x3 ,
y3 ) используя (
x1 , y1 ) и (
x2 , y2 ) как
управляющие точки.
См. также PDF_moveto()
, PDF_lineto() . Функция PDF_lineto()
рисует линию с текущей точки до точки с
координатами ( x-koor , y-koor
).
См. также PDF_moveto()
, PDF_curveto() . Функция PDF_circle()
рисует круг с центром в точке (
x-koor , y-koor ) и
радиусом radius .
См. также PDF_arc()
. Функция PDF_arc()
рисует дугу с центром в точке с
координатами ( x-koor , y-koor
) и радиусом radius ,
начинает с угла start и
заканчивает углом end .
См. также PDF_circle()
. Функция PDF_rect()
Рисует прямоугольник с нижним левым
углом в точке ( x-koor , y-koor
). Ширина определяется параметром widgth
. Высота определяется параметром height
. Функция PDF_stroke()
рисует линию вдоль текущего контура.
См. также PDF_closepath()
, PDF_closepath_stroke()
. Функция PDF_closepath_stroke()
является сочетанием функций PDF_closepath()
и PDF_stroke() .
Затем контур сбрасывается.
См. также PDF_closepath()
, PDF_stroke() . Функция PDF_fill()
заполняет область текущего контура
текущим цветом заполнения.
См. также PDF_closepath()
, PDF_stroke() ,
PDF_setgray_fill()
, PDF_setgray() ,
PDF_setrgbcolor_fill()
, PDF_setrgbcolor()
. Функция 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()
, PDF_stroke() ,
PDF_fill() , PDF_setgray_fill()
, PDF_setgray() ,
PDF_setrgbcolor_fill()
, PDF_setrgbcolor()
. Функция PDF_endpath()
заканчивает текущий контур, но не
закрывает его.
См. также PDF_closepath()
. Функция PDF_clip()
прекращает рисование в текущем контуре. Функция PDF_setgray_fill()
делает текущим серый цвет для
заполнения контура.
См. также PDF_setrgbcolor_fill()
. Функция PDF_setgray_stroke()
далает текущий цвет рисования серым.
См. также PDF_setrgbcolor_stroke()
. Функция PDF_setgray_stroke()
делает текущие цвет рисования и
заполнения серым.
См. также PDF_setrgbcolor_stroke()
, PDF_setrgbcolor_fill()
. Функция PDF_setrgbcolor_fill()
делает текущим RGB цвет для заполнения
контура.
См. также PDF_setrgbcolor_fill()
. Функция PDF_setrgbcolor_stroke()
делает текущим RGB цвет рисования.
См. также PDF_setrgbcolor_stroke()
. Функция PDF_setrgbcolor_stroke()
делает текущим RGB цвет рисования и
заполнения.
См. также PDF_setrgbcolor_stroke()
, PDF_setrgbcolor_fill()
. Функция PDF_add_outline()
добавляет закладку с текстом text
, которая указывает на текущую страницу. Функция PDF_set_transition()
устанавливает переход между указанными
следующими страницами. Значения параметра
transition могут быть 0 для
никакого перехода, 1 для двух линий,
проходящих через экран, открывая страницу,
2 для нескольких линий, проходящих через
экран, открывая страницу, 3 для
прямоугльника, открывающего страницу, 4
для одной линии, проходящей через экран,
открывая страницу, 5 для растворения
старой страницы, открывая новую, 6 для
эффекта растворения, перемещяющегося от
одного края экрана, к другому, 7 для простой
смены старой страницы новой (по умолчанию). Функция PDF_set_duration()
устанавливает паузу между следующими
страницами в секундах. Postgres, изначально разработанный в
компьютерном научном отделе университета
Беркли, открыл многие объектно-ориентированные
концепции, ставшие теперь доступными
коммерческих базах данных. Pestgres
обеспечивает поддержку языка SQL92/SQL3,
целостность транзакций, и расширение типов.
PostgreSQL является общедоступной СУБД с
открытым кодом.
PostgreSQL доступен бесплатно. Посленяя версия
доступна на www.postgreSQL.org.
С версии 6.3 (от 2 марта 1998 года) PostgreSQL
использует сокеты домена UNIX. Этот сокет
может быть найден в каталоге /tmp/.s.PGSQL.5432.
Это свойство может быть включено с помощью
флага '-i' в postmaster и это означает "прослушивание
сокетов TCP/IP", аналогично сокетам домена
UNIX.
Таблица 1. Postmaster and PHP Можно также установить соединение с
помощью команды: $conn = pg_Connect("host=localhost
port=5432 dbname=chris");
Для использования интерфейса больших
объектов (large objects) необходимо заключить их в
блок транзакции. Блок транзакции
начинается begin и, если транзакция прошла
успешно, завершается commit и end. Если
транзакция дала сбой, то транзакция должна
быть закрыта с помощью abort и rollback. Пример 1. Использование больших
объектов
Возвращает false, если connection - не правильный
номер соединения. Закрывает соединение с
базой PostgreSQL, связанное с указанным номером
соединения.
pg_cmdTuples() возвращает число tuples (требований),
вызванных запросами INSERT, UPDATE, и DELETE. Если нет
вызванных tuple, то функция вернет 0. Пример 1. pg_cmdtuples
Возвращает номер соединения при успехе
или false, если соединение не может быть
установлено. Открывает соединение с базой
PostgreSQL. Каждый из аргументов должен быть в
кавычках, включая номер порта. Аргементы
options и tty являются дополнительными и могут
быть опущены. Эта функция возвращает номер
соединения, который необходим другим
функциям PostgreSQL. Вы можете иметь
одновременно несколько открытых
соединений.
Соединение может быть также установлено
следующей командой: $conn = pg_connect("dbname=marliese
port=5432"); Дополнительные параметры (кроме
dbname и port) - это host, tty
и options.
См. также pg_pConnect().
Возвращает имя базы данных, с которой
соединен указанный номер соединения PostgreSQL,
или возвращает false, если указан не
правильный номер соединения.
Возвращает строку, содержащую сообщение
об ошибке, или false при сбое. Детали об ошибке,
вероятно, не могут быть получены с помощью
pg_errormessage(), если ошибка произошла при
последнем обращении к базе данных, для
которой существует верный номер соединения,
то функция вернет строку, содержащую
сообщение об ошибке, выданное сервером.
Возвращает признак результата, если
запрос может быть запущен, false при ошибке
или при неверном номере соединения. Детали
об ошибке могут получены с помощью функции pg_ErrorMessage()
, если номер соединения верный. Функция
посылает SQL запрос базе данных PostgreSQL,
определяемой номером соединения. Connection
должен быть верным номером соединения,
который возвращается функцией pg_Connect().
Возвращаемое этой функцией значение
является необходимым для доступа к
результатам других функций PostgreSQL.
Замечание: PHP2 возвращает 1, если
запрос не должен возвращать данных (например,
при вставке или обновлении) и больше 1, даже
при выборках, которые ничего не возвращают.
Таких допущений нет в PHP3. Возвращает массив, который ссылается на
полученную запись, или false если больше нет
записей.
pg_fetch_array() является расширенной
версией pg_fetch_row(). В
дополнение к хранению данных под числовыми
индексами в результирующем массиве,
функция также хранит данные под
ассоциативными индексами, используя номера
полей в качестве ключей.
Необходимо отметить, что функция pg_fetch_array()
практически одинакова по скорости с pg_fetch_row(),
хотя и предоставляет дополнительные
возможности.
Для дополнительной информации см. pg_fetch_row() Пример 1. Массив записи PostgreSQL
Возвращает объект со свойствами, которые
ссылаются на полученную запись, или false если
нет больше записей.
pg_fetch_object() совпадает с pg_fetch_array(),
кроме того, что возвращается объект вместо
массива. Это означает, что вы можете
обратиться к данным только по имени поля, и
а не по номеру или неправильному имени
свойства.
По скорости функция идентична функции pg_fetch_array(),
и почти такая же быстрая как pg_fetch_row()
(разница незначительная).
См. также: pg_fetch_array()
and pg_fetch_row(). Пример 1. Полученние объекта Postgres
Возвращает массив, который ссылается на
полученную запись, или false, если больше нет
записей.
pg_fetch_row() возвращает одну запись данных
из результата, определяемого указанным
идентификатором результата. Запись
возвращается как массив. Каждый столбец
результата храниться в элементе массива,
начиная с 0.
Последующий вызов функции pg_fetch_row()
возвратит следующую запись в
результирующем наборе, или false, если записей
больше нет.
См. также: pg_fetch_array(),
pg_fetch_object(), pg_result(). Пример 1. Полученние записи Postgres
Проверяет нулевое (NULL) значение у поля или
нет. Возвращает 0, если поле в указанной
записи не нулевое. Возвращает 1, если поле ы
указанное записи нулевое. Поле может
определяться номером или именем. Нумерация
записей начинается с 0.
pg_FieldName() возвращет имя поля,
соответствующее указанному номеру столбца
в указанном идентификаторе результата
PostgreSQL. Нумерация полей начинается с 0.
pg_FieldNum() возвращает номер столбца,
соответствующий указанному имени поля в
указанном идентификаторе результата PosgreSQL.
Нумерация полей начинается с 0. Функция
вернет -1 при ошибке.
pg_FieldPrtLen() возвращает действительную
печатную длину (число символов) указанных
данных в результате PosgreSQL. Нумерация
записей начинается с 0. При ошибке функция
вернет -1.
pg_FieldSize() возвращает внутренний размер
хранения указанного именованного поля в
указанном результате PosgreSQL. Размер поля -1
говорит о переменной длине поля. Эта
функция вернет false при ошибке.
pg_FieldType() возвращает строку, содержащую имя
типа указанного поля в указанном
идентификаторе результата PosgreSQL. Нумерация
полей начинается с 0.
pg_FreeResult()
необходимо использовать только если вы
беспокоитесь об использовании слишком
большего объема памяти при работе вашего
скрипта. Вся память резульата будет
автоматически освобождена при завершении
работы скрипта. Но, если вы уверены, что вам
больше не потребуется память результата в
скрипте, то вы можете вызвать pg_FreeResult(),
с идентификатором результата в качестве
параметра, и соответствующая память
результата будет освобождена.
pg_GetLastOid() может
быть использована для получения
идентификатора, присвоенного запросу на
вставку, если идентификатор результата
использовался последней командой pg_Exec()
и это была команда SQL INSERT. Эта функция вернет
положительное целое число, если это был
верный идентификатор. Функция вернет -1,
если произошла ошибка или последня команда pg_Exec()
не была INSERT.
pg_Host() возвращает имя узла, с которым
соединен указанный идентификатор
соединения PostgreSQL.
pg_loclose() закрывает отображение
большого объекта (ILO). fd является
дескриптором файла для большого объекта из pg_loopen().
pg_locreate() создает отображение большого
объекта (ILO) и возвращает идентификатор
большого объекта. conn определяет
верное соединение с базой данных. Режимы
доступа PostgreSQL INV_READ, INV_WRITE, и INV_ARCHIVE не
поддерживаются, объект создается всегда и
для чтения и для записи. INV_ARCHIVE был удален из
самой PostgreSQL (версии 6.3 и выше).
pg_loopen() открывает отображение большого
объекта (ILO) и возвращает дескриптор файла
большого объекта. Дескриптор файла
содержит информацию о соединении. Не
закрывайте соединение до закрытия
дескриптора файла большого объекта. objoid
определяет верный идентификатор большого
объекта и mode может быть одним из
"r", "w", or "rw".
pg_loread() считывает len байтов из
большого объекта и возвращает их в виде
строки. fd определяет верный
декскриптор файла большого объекта len
определяет максимально возможный размер
сегмента большого объекта.
pg_loreadall() считывает большой объект и
отправляет его прямо в броузер, после всех
необходимых заголовков. В основном
применяется для отправки двоичных данных,
таких как изображения и звуковые файлы.
pg_lounlink() удаляет большой объект с
идентификатором большого объекта lobjid.
pg_lowrite() записывает данные в большой
объект из переменной buf и
возвращает число записанных данных или false
при ошибке. fd является
дескриптором файла большого объекта из
функции pg_loopen().
pg_NumFields() возвращает количестов полей (столбцов)
в результате PostgreSQL. Параметр является
верным идентификатором результата,
полученным функцией pg_Exec().
Эта функция вернет -1 при ошибке.
pg_NumRows() возвращает
число записей в результате PostgreSQL. Параметр
является верным идентификатором
результата, полученным функцией pg_Exec().
Эта функция вернет -1 при ошибке.
pg_Options() возвращает строку, содержащую
настройки, соответствующие указанному
идентификатору соединения PostgreSQL.
Возвращает номер соединения при успехе
или false, если соединение не может быть
установлено. Открывает устойчивое
соединение с базой данных PostgreSQL. Каждый
параметр должен быть строкой в кавычках,
включая номер порта. Параметры options и tty
являются дополнительными и могут быть
опущены. Эта функция возвращает номер
соединения, который необходим другим
функциям PostgreSQL. Вы можете одновременно
открыть несколько устойчивых соединений.
См. также pg_Connect().
Соединение может также быть установлено
следующей командой: $conn =
pg_pconnect("dbname=marliese port=5432"); Остальные
параметры, кроме dbname и port, -
это host, tty и options.
pg_Port() возвращает номер порта, с которым
соединен указанный идентификатор
соединения PostgreSQL.
pg_Result() возвращает данные из
идентификатора результата, полученного pg_Exec().
Параметры row_number и fieldname
определяют, из какой ячейки таблицы будут
взяты данные. Нумерация записей и полей
начинается с 0. Вместо имени поля вы можете
использовать номер поля (без кавычек).
PostgreSQL имеет много видов данных, но здесь
поддерживаются только основные. Все виды
целых и логических типов, типов
идентификаторов возвращаются как целые
числа. Все виды типов с плавающей точкой и
действительных чисел возвращаются как тип
double. Все осталные типы, включая массивы
возвращаются как строки, отформатированные
в том же виде, какой вы видели в программе psql.
pg_tty() возвращает имя tty, которое сервер
дает указанному идентификатору соединения
PostgreSQL. Ищет парные значения string в
регулярном выражении, указанном в pattern.
Если парные значения найдены для подстрок
в круглых скобках pattern и функция
вызывалась с третьим аргументом regs,
то парные значения будут сохранены в
элементах regs. $regs[1] будет содержать
подстроку, которая начинается с первой
левой круглой скобки; $regs[2] будет содержать
подстроку, начинающуюся со второй скобки и
т.д. $regs[0] будет содержать копию string.
Поиск чуствителен к регистру.
Функция возвращает true, если парное
значение для pattern было найдено в string, или false,
если не было найдено парных значений или
произошла ошибка.
Следующий код извлекает дату в ISO формате
и выводит в формате DD.MM.YYYY: Example 1. ereg() example
См. также eregi(), ereg_replace(),
и eregi_replace().
Эта функция сканирует string на
парные значения к pattern, затем
заменяет найденный текст на replacement.
Если pattern содержит подстроки в
круглых скобках, тоreplacement может
содержать подстроки вида \\цифра,
которые будут заменены текстом,
совпадающим с цифровой подстрокой в
скобках; \\0 обработает все содержимое
строки. Может быть использовано до 9
подстрок. Скобки могут быть сгруппированы,
в этом случае они считаются по открывающим
скобкам. Например, следующий код напечатет
"This was a test" три раза: Пример 1. ereg_replace()
Эта функция идентична ereg()
, за исключением того, что она игнорирует
различие в регистре у буквенных символов.
См. также ereg(), ereg_replace(),
и eregi_replace().
Эта функция идентична ereg_replace()
за исключением того, что она игнорирует
различие в регистре у буквенных символов.
См. также ereg(), eregi(),
и ereg_replace().
Возвращает массив строк, каждая из
которых является подстрокой строки,
образованные разбитием этой строки на
части, отделенные друг от друга pattern.
Если произойдет ошибка, функция вернет false.
Для получения первых 5 полей из строки в /etc/passwd: Пример 1. split()
Следует отметить, что pattern
чувствительна к регистру.
См. также: explode() и implode().
Возвращает верное регулярное выражение,
которое не будет соответствовать string,
игнорирую регистр. Это выражение является string
, каждый символ которой переводится в
выражение с квадратными скобками; это
выражение содержит символы исходной строки
в верхнем и нижнем регистре, если это
возможно, в противном случае дважды
вставляется исходный символ. Пример 1. sql_regcase()
Эта функция может быть использована
организации нечувствительного к регистру
сравнения в продуктах, которые
поддерживают только чувстуительные к
регистру выражения. Этот модуль предоставляет функции
семафоров, используя семафоры System V.
Семафоры могут использоваться для
обеспечения эксклюзивного доступа к
русурсам используемой машины или для
ограничения числа процессов, которые
могут одновременно использовать ресурс.
Поддержка разделяемой памяти также
включена. Она совместима с System V -
совместимыми системами. Возвращает положительный
индентификатор семафора при успехе или false
при ошибке.
sem_get() возвращает
идентификатор, который может быть
использован для доступа к семафору System V с
указанным ключом. Семафор создается, если
необходимо, используя биты доступа,
указанные в perm (по умолчанию 0666). Число
процессов, которое может быть
зафиксировано семафором одновременно
устанавливается в max_acquire (по-умолчанию 1). В
действительности это значение
устанавливается только если процесс
обнаруживает, что он является
единственным, присоединенным к семафору.
Повторный вызов функции sem_get()
с тем же ключем вернет другой
идентификатор семафора, но оба
идентификатора указывают на один и тот же
семафор.
См. также: sem_acquire()
and sem_release() . Возвращает true при успехе, false при ошибке.
sem_acquire() блокируется (если
необходимо) до тех пор, пока семафор сможет
быть зафиксирован. Процесс, пытающийся
зафиксировать семафор, который уже
зафиксирован, буде блокирован навсегда,
если фиксация семафора вызовет превышение
его max_acquire значения..
После обработки запроса, любые семафоры,
зафиксированные процессом, но не
освобожденные вручную, будут освобождены
автоматически с выдачей предупреждения.
См. также: sem_get()
and sem_release() . Возвращает true при успехе и false при ошибке.
sem_release() освобождает семафор
если он зафиксирован в данное время
вызывающим процессом, иначе выдается
предупреждение.
После освобождения семафора функция sem_acquire()
может быть вызвана для ре-фиксации его.
См. также: sem_get()
and sem_acquire() . Создает или открывает разделяемую
память с указанным ключем и размером
памяти. Отсоединяет от разделяемой памяти с
указанным id , созданным
с помощью функции shm_attach()
. Помните, что разделяемая память все еще
существует в Unix-системе и данные все еще
присутствуют. Вставляет или обновляет переменную с
указанным variable_key. Все типы переменных (double,
long, string, array) поддерживаются. Функция serialize()
может быть использована для хранения
данных. Считывает переменную с указанным variable_key
. Переменная все еще присутствует в
разделяемой памяти. Функция unserialize()
может быть использована для
декодирования данных. Удаляет переменную с указанным variable_key
из разделяемой памяти. Удаляет разделяемую память из Unix-системы.
Все данные будут уничтожены. Solid (надежные) функции являются
предопределенными, поэтому вместо них вы
вероятно захотите использовать Универсальные
ODBC функции.
См. odbc_close().
См. odbc_connect().
См. odbc_exec().
См. odbc_fetch_row()
См. odbc_field_name().
См. odbc_field_num().
См. odbc_free_result().
См. odbc_num_fields().
См. odbc_num_rows().
См. odbc_result(). Для использование функций SNMP в системе
UNIX вам необходимо установить набор ucd-snmp.
Ссылка на последнюю версию есть в PHP FAQ. В
системе Windows эти функции доступны только в
NT и не доступны в Win95/98. Возвращает значание SNMP объекта при
успехе и false при ошибке.
Функция snmpget() используется для чтения
значения SNMP объекта, указанного в object_id. SNMP
агент определяется именем хоста hostname и
группа чтения определяется параметром
community.
snmpget("127.0.0.1", "public", "system.SysContact.0")
Возвращает массив значений SNMP объектов
начиная с object_id и false при ошибке.
Функция snmpwalk() используется для чтения
всех значений у SNMP агента, определяемого
параметром hostname. Community определяет группу
чтения для агента. Нулевой object_id берется
как корень дерева SNMP объектов и все
объекты под этим деревом возвращаются как
массив. Если object_id указан, то возвращаются
все SNMP объекты ниже этого объекта.
Указанный выше вызов функции вернет все
SNMP объекты из SNMP агента, напущенного на
локальном хосте. По всем значениям можно
пройти с помощью цикла
Все эти функции манипулируют строками
различными способами. Некоторые более
специализированные функции вы можете найти
в разделах о регулярных выражениях и о
функциях обработки URL.
Возвращает строку с обратной чертой (/)
перед символами, которые должны быть
выделены в запросах к базам данных и т.п. Эти
символы: ('), двойные кавычки ("), (\)
и NUL (нулевой байт).
См. также stripslashes(), htmlspecialchars()
и quotemeta().
Возвращает строку без повторяющихся
пробелов. Example 1. chop()
См. также trim().
возвращает односимвольную строку,
содержащую символ, определенный кодом ascii. Example 1. chr()
Может быть использована для разбития
строки на более меньшие части, например, при
конвертировании результата функции base64_encode
в формат RFC 2045. Функция вставляет каждый chunklen-ый
(по умолчанию до 76) символ строку end
(по умолчанию "\r\n"). Функция возвращает
новую строку, оставляя исходную не тронутой. Example 1. chr_replace()
Эта функция переводит указанную строку из
одной русской кодовой таблицы в другую.
Аргументы from и to являются
одним символом, который определяет
исходную и целевую кодовую таблицу.
Поддерживаемые типы:
k - koi8-r w - windows-1251 i - iso8859-5 a - x-cp866 d - x-cp866 m - x-mac-cyrillic crypt() Зашифрует строку, используя
стандартный метод шифрации UNIX DES.
Аргументы являются строкой, которую нужно
зашифровать, и дополнительная 2-символная
строка salt, на которой будет основываться
шифрование. См. документацию UNIX для
дополнительной информации.
Если аргумент salt отсутствует, то он буде
генерирован случайным образом.
Некоторые операционные системы
поддерживают больше одного типа шифрования.
В действительности, иногда метод
шифрования DES заменятеся основанными на MD5
алгоритмами. Тип шифрования
устанавливается аргументом salt. Во время
установки PHP определяет возможности
функций шифрации и будет поддерживать
аргумент salt для других методов шифрации.
Если параметр salt не установлен, то PHP
автоматически сгенерирует стандартный 2-х
символный ключ DES, если же в системе по
умолчанию установлен тип шифрации MD5, то
будет сгенерирован MD5-совместимый ключ.
Стандартная шифрация DES crypt() содержит
ключ в двух первых символах потока вывода.
Нет других функций дешифрации, кроме crypt()
использующей однопроходный алгоритм.
Выводит все параметры.
echo() в действительности не является
функцией (это языковая конструкция),
поэтому вам не обязательно использовать
круглые скобки. Пример 1. echo
См. также: print() printf()
flush()
Возвращает массив строк, содержащий в
элементы, разделенные срокой separator. Пример 1. explode()
См. также split() и implode().
Освобождает буферы вывода PHP и все
остальные, использумые PHP (CGI, web-сарвер и т.д.).
Это эффективная возможность выдать все
накопленное в буферах в броузер
пользователя.
Открывает файл filename и
обрабатывает его строка за строкой и
извлекает теги <meta>. Пример 1. Теги Meta
Значение свойства name становится ключем,
значение свойства content становится
значением возвращаемого массива, поэтому
вы можете легко использовать стандартные
функции для его обработки или доступа к
отдельным элементам. Специальные символы в
значении свойства заменяются символом '_',
остальные переводятся в нижний регистр.
Установка параметра use_include_path в 1
приведет к тому, что PHP3 будет пытаться
открыть файл по стандартному include пути.
Определенные символы имеют особое
значение в HTML и должны быть заменены кодами
HTML, если они таковые имеют. Эта функция
возвращает строки с произведенными такими
изменениями.
Эта функция полезна для отчистки
полученного от пользователя текста от
разметки HTML (доски сообщений, гостевые
книги).
В настоящее время осуществляются
следующие замены:
'&' (амперсанд) становится '&' '"' (двойные кавычки) становится
'"' '<' (знак меньше) становится '<' '>' (знак больше) становится '>' Следует отметить, что эта функция не
заменяет ничего, кроме указанного выше. Для
полной обработки см. функцию htmlentities().
См. также htmlentities()
и nl2br().
Эта функция идентична htmlspecialchars()
, кроме того, что все символы, которые имеют
соответсвующий код HTML заменяются на этот HTML
код.
В настоящее время применятеся кодовая
таблица ISO-8859-1.
См. также htmlspecialchars()
и nl2br().
Возвращает строку, содержащую
совокупность всех элементов массива в том
же порядке, со строкой glue между каждым
элементом. Пример 1. implode()
См. также explode(), join(),
и split().
join() является псевдонимом функции implode(),
и полностью ей идентична.
Эта функция удаляет пробелы из начала
строки и возвращает обрезаную строку.
Вычисляет значение MD5 для строки str
используя алгоритм
RSA Data Security, Inc. MD5 Message-Digest.
Возвращает string с '<BR>'
вставляемыми перед каждой новой строкой.
См. также htmlspecialchars()
и htmlentities().
Возвращает ASCII-значение первого символа
строки string. Эта функция дополняет
функцию chr(). Пример 1. ord()
См. также chr().
Разбирает строку str , как если бы
она была URL-строкой запроса, и устанавливает
переменные текущей среды.
Пример 1. Using parse_str()
Выводит строку arg.
См. также: echo() printf()
flush()
Осуществляет вывод в соответствии с
параметром format, который расписан в
описании функции sprintf().
См. также: print(), sprintf(),
и flush().
Эта функция возвращает 8-битную строку,
соответствующую декодированной сроке в
кавычках. Эта функция аналогична imap_qprint(),
за исключением того, что она не требует IMAP
модуль для работы.
Возвращает обработанную str с символами (\)
перед каждым из следующих символов:
См. также addslashes(), htmlentities(),
htmlspecialchars(), nl2br(),
и stripslashes().
Возвращает строку, в которой
последовательность из символа процента (%)
с последующих 2-х шестнадцатиричных цифр
заменяется соответствующим буквенным
символом. Например, строку
См. также rawurlencode().
Возвращает строку, в которой все не
буквенно-цифровые символы, кроме
Пример 1. rawurlencode()
Пример 2. rawurlencode()
См. также rawurldecode().
category является строкой,
определяющей категорию функций, изменяемую
строкой locale:
LC_ALL для всех нижеследующих LC_COLLATE для сравнения строк - в данное
время не обрабатывается PHP LC_CTYPE для классификации и перевода
символов, например: strtoupper() LC_MONETARY для localeconv() - в данное время не
обрабатывается PHP LC_NUMERIC для десятичного разделителя LC_TIME для даты и времени, форматируемых
функцией strftime() Если locale является пустой строкой "",
то локальные имена будут установлены из
значений переменных окружения с теми же
именами, как у вышеописанных категорий, или
из "LANG".
Если locale равна нулю или "0", то
местные установки не изменяются,
возвращаются текущие установки.
Setlocale возвращает новое текущее locale, или
false, если locale функционально не
поддерживается текущей платформой,
указанный locale не существует или категории
неверное. Неверное имя категории также
вызывает предупреждающее сообщение.
Вычисляет soundex ключ для str.
Ключ soundex имеет такое свойство, что слова,
произносимые одинакого, имеют одинаковый
soundex ключ, и это может быть использовано в
поиске в базах данных, когда вы знаете
произношение и не занете написание. Эта soundex
функция возвращает строку длиной 4 символа,
начинающуюся буквой.
Эта функция описана Дональдом Кнутом в
книге "The Art Of Computer Programming, vol. 3: Sorting и
Searching", Addison-Wesley (1973), pp. 391-392.
Пример 1. Soundex
Возвращает строку, обрабатываемую в
соответствии с форматирующей строкой format.
Форматирующая строка, содержащая ноль или
более директив: обычные символы (кроме %)
которые копируются прямо в результат, и that
are copied directly to the result, и описания изменений,
каждое из которых выполняет определенные
действия. Это применительно и к sprintf() и к
printf()
Каждое описание изменений состоит из
следующих элементов, в порядке:
Дополнительный описатель заполнения,
который говорит, какие символы будут
использоваться для заполнения
результата до правильног размера строки.
Это могут быть пробелы или 0 (символ
нуля). По умолчанию заполняется пробелами.
Алтернативный символ заполнения может
быть определен одинарной кавычкой (').
См. примеры ниже. Дополнительный описатель
выравнивания , который говорит, что
результат должен быть выравнен по левому
или по правому краю. По умолчанию
выравнивание происходит по правому краю;
символ - приведет к вырвниванию по
левому краю. Дополнительный описатель ширины,
который говорит, с каким количеством
символов (минимум) пожет производится
данная замена. Дополнительный описатель точности,
который говорит, сколько десятичных
знаков следует отображать для чисел с
плавающей точкой. Этот описатель не
действует на остальные типы, кроме double. (другая
полезная функция для форматирования
чисел это number_format().) Описатель типа, который говорит о
том, как тип данных аргумента должен
трактоваться. Возможные типы: См. также: printf(), number_format()
Пример 1. sprintf: числа с нулями
Пример 2. sprintf: форматирование
денежной еденицы
Эта функция является псевдонимом для
функции strstr(), и
полностью ей идентична.
Возвращает < 0 если str1 меньше чем
str2; > 0 если str1 больше чем str2,
и 0 если они равны.
Следует отметить, что это сравнение
чуствительно к регистру.
См. также ereg(), substr(),
и strstr().
Возвращает длину начального сегмента str1,
который не содержит любые символы в str2.
См. также strspn().
Возвращает строку с вырезанными
символами \. (\' заменяется на ' и
так далее). Двойные \\ заменяются на \.
См. также addslashes().
Возвращает длину строки string.
Возвращает номер позиции последнего
появления символа needle в строке haystack.
Следует отметить, что needle в этом случае
может быть только единственным символом.
Если в качестве параметра needle указывается
строка, то только первый символ будет
использован.
Если needle не найден, то
возвращается false.
Если параметр needle не является
строкой, то он переводится в десятичное
число и рассматривается как числовое
значение символа.
См. также strpos(), strrchr(),
substr(), и strstr().
Возвращает номер позиции первого
появления строки needle в строке haystack.
В отличии от strrpos(), эта
функция может рассматривать целую строку в
качестве параметра needle и целая
строка будет использоваться.
Если параметр needle не найден, то
возвращается false.
Если параметр needle не является
строкой, то он переводится в целое число и
рассматривается как числовое значение
символа.
Дополнительный параметр offset
позволяет вам пределять, с какого символа в
строке haystack начинать поиск.
Позиция возвращается все равно
относительно начала строки haystack.
См. также strrpos(), strrchr(),
substr(), и strstr().
Эта функция возвращает позицию haystack,
с которой начинается последнее появление needle
и продолжается до конца haystack.
Возвращает false если needle не
найдена.
Если параметрneedle содержит более
чем один символ, то используется первый
символ.
Если параметр needle не является
строкой, то он переводится в целое число и
рассматривается как числовое значение
символа. Пример 1. strrchr()
См. также substr() и strstr().
Возвращает перевернутую строку string.
Возвращает длину начального сегмента
строки str1, который содержит все
символы из str2.
См. также strcspn().
Возвращает все haystack с первого
появления строкиneedle и до конца.
Если параметр needle не найден, то
возвращается false.
Если параметр needle не является
строкой, то он переводится в целое число и
рассматривается как числовое значение
символа.
См. также strrchr(), substr(),
и ereg().
strtok() используется для разбития строки.
Это значит, что если вы имеете строку типа
"This is an example string", то вы можете разбить
эту строку на отдельные слова используя
пробел в качестве разделителя. Пример 1. strtok()
Следует отметить, что только первый вызов
функции strtok использует строковый аргумент.
Для каждого последующего вызова функции
strtok необходим только разделитель, так как
это позволяет контролировать положение в
текущей строке. Для начала заново или для
разбития новой строки вам необходимо
просто вызвать strtok с параметром строки
опять для ее инициализации. Вы можете
вставлять несколько разделителей в
параметр разделителя. Строка будет
разделяться при обнаружении любого из
указанных символов.
Также будьте внимательны к разделителям
равным "0". Это может вызвать ошибку в
определенных выражених.
См. также split() и explode().
Возвращает сроку string со всеми
буквенными символами, переведенными в
нижний регистр.
Помните, что буквенные символы
определяются текущими локальными
установками.
См. также strtoupper() и ucfirst().
Возвращает строку string со всеми
буквенными символами, переведенными в
верхний регистр.
Следует отметить, что буквенные символы
определяются текущими локальными
установками.
См. также strtolower() и ucfirst().
Эта функция заменяет все вхождения строки
needle в строке haystack на
указанную строку str. Если вам не
требуются причудливые правила замены, то
вам следует всегда использовать эту
функцию вместо ereg_replace().
Пример 1. str_replace()
Эта функция двоично-безопасная.
См. также ereg_replace().
Эта функция обрабатывает строку str,
заменяя все появления каждого символа из
строки from на соответствующие
символы в строке to, и возвращает
результат.
Если строки from и to имеют
различную длину, то дополнительные символы
более длинной из строк игнорируются. Пример 1. strtr()
См. также ereg_replace().
Эта функция возвращает часть строки string,
определяемую параметрами start (начало)
и length (длина).
Если параметр start положительный,
то возвращаемая строка будет начинаться с start-ого
символа строки string. Примеры:
Если параметр start отрицательный,
то возвращаемая строка будет начинаться start-ого
символа от конца строкиstring.
Примеры:
Если параметр length указан и он
положительный, то возвращаемая строка
закончится за length символов от
начала start. Это приведет к строке с
отрицательной длиной (потому что начало
будет за концом строки), поэтому
возвращаемая строка будет содержать один
символ от начала строки start.
Если length указан и он
отрицательный, то возвращаемая строка
закончится за length от конца строки string.
Это приведет к строке с отрицательной
длиной, поэтому возвращаемая строка будет
содержать один символ от начала строки start.
Примеры:
Эта функция обрезает пробеды с начала и с
конца строки и возвращает обрезанную
строку.
Делает заглавным первый символ строки str,
если этот символ буквенный.
Следует напомнить, что 'буквенные' символы
определяются текущими настройками.
См. также strtoupper() и strtolower().
Делает заглавным первый символ каждого
слова в строке str, если этот символ
буквенный.
См. также strtoupper(), strtolower()
и ucfirst(). Эта функция возвращает ассоциативный
массив, включающий множество различных
существующих компонентов URL. Они включают
"scheme", "host", "port", "user",
"pass", "path", "query" и "fragment".
Декодирует любые %
## закодированные в указанной
строке. Возвращается декодированная строка. Пример 1. пример urldecode()
См. также urlencode()
возвращает строку, в которой все не не
буквенноцифровые символы кроме -_.
заменены на символ ( %) с
следующими за ним двумя шестнадцатиричными
цифрами и пробелами, закодированными как
символ ( +) . Это кодирование то
же самое, что и кодирование данных,
полученных методом POST из WWW формы, это тот же
тип, что и тип данных application/x-www-form-urlencoded
. Это отличается от RFC1738 кодирование (см. rawurlencode()
) в котором исторически сложилось, что
пробелы кодируются символами (+). Эта
функция удобна, когда кодируемая строка
должна быть использована в части запроса URL,
как удобный путь передавать переменные на
следующую страницу: Пример 1. пример urlencode()
См. также urldecode()
base64_encode() возвращает data
закодированные в кодировке base64. Эта
кодировка разработана для того, чтобы
передовать двоичные данные через
транспортные слои, которые не
содержатвосьмой бит, такие как почтовые
тела.
Данные в кодировке Base64 занимают примерно
на 33% больше места, чем оригинал.
См. также: base64_decode(),
RFC-2045 раздел 6.8.
base64_decode() декодирует encoded_data и
возвращает оригинал данных. Возвращаемые
данные могут быть двоичными.
См. также: base64_encode(),
RFC-2045 раздел 6.8. Возвращает тип переменной PHP var.
Возможные значения для возвращаемой
строки:
Возвращает целочисленное значение
переменной var, использую указанное
основание для перевода (по умолчанию 10).
var Может быть скалярного типа. Вы
не можете использовать функцию intval() для
массивов или объектов.
См. также: doubleval(), strval(),
settype() и Подмена
типов.
Возвращает double (с плавающей точкой)
значение переменной var.
var может быть скалярного типа. Вы
не можете использовать doubleval() на
массивах и объектах.
См. также: intval(), strval(),
settype() и Подмена
типов.
Возвращает false, если var существует
и имеет не пустое или не нулевое значение;
true в обратном случае.
Возвращает true, если var есть в
массиве, false в обратном случае.
См. также: is_double(), is_float(),
is_int(), is_integer(),
is_real(), is_string(),
is_long(), и is_object().
Возвращает true, если var является
типа double, false в обратном случае.
См. также: is_array(), is_float(),
is_int(), is_integer(),
is_real(), is_string(),
is_long(), и is_object().
Эта функция является псевдонимом для
функции is_double().
См. также: is_double(), is_real(),
is_int(), is_integer(),
is_string(), is_object(),
is_array(), и is_long().
Эта функция является псевдонимом для
функции is_long().
См. также: is_double(), is_float(),
is_integer(), is_string(),
is_real(), is_object(),
is_array(), и is_long().
Эта функция является псевдонимом для
функции is_long().
См. также: is_double(), is_float(),
is_int(), is_string(),
is_real(), is_object(),
is_array(), и is_long().
Возвращает true, если var является
типа integer (long), false в обратном случае.
См. также: is_double(), is_float(),
is_int(), is_real(),
is_string(), is_object(),
is_array(), и is_integer().
Возвращает true, если var типа object,
false в обратном случае.
См. также: is_long(), is_int(),
is_integer(), is_float(),
is_double(), is_real(),
is_string(), и is_array().
Эта функция является псевдонимом для
функции is_double().
См. также: is_long(), is_int(),
is_integer(), is_float(),
is_double(), is_object(),
is_string(), и is_array().
Возвращает true, если var is a string, false в
обратном случае.
См. также: is_long(), is_int(),
is_integer(), is_float(),
is_double(), is_real(),
is_object(), и is_array().
Возвращает true, если var существует;
false в обратном случае.
Если переменная была удалена функцией unset(),
она больше не будет определяться функцией isset().
Устанавливает тип переменнойvar
на type.
Возможные значения type :
Возвращает true, при успехе; false в обратном
случае.
См. также: gettype().
Получает строковое значение var.
var может быть любого скалярного
типа. Вы не можете использовать strval() на
массивах или объектах.
См. также: doubleval(), intval(),
settype() и Подмена
типов.
unset() уничтожает указанную переменную
и возвращает true.
Пример 1. unset() пример
Эти функции требуют пакетов QMAIL (www.qmail.org)
и vmailmgr Bruce Guenter http://www.qcc.sk.ca/~bguenter/distrib/vmailmgr/
Для всех функций следующие две
переменные определяются как: строка vdomain -
имя домена вашего виртуального домена
(vdomain.com) , строка basepwd - пароль для 'real'
пользователя, который поддерживает
виртуальных пользователей.
Только до 8 символов распознаются в
пароле для виртуальных пользователей
Возвращается статус для всех
функциональных значений ответа в response.h
Известные проблемы: vm_deluser()
не удаляет директорию пользователя,
хотя должена это делать. vm_addalias()
в настоящее время не работает правильно.
Добавляет нового виртуального
пользователя с паролем. newusername
- это имя почтового login-а и newuserpassword
- это пароль для это пользователя. Добавляет псевдоним виртуальному
пользователю. username - это
имя почтового login-а и alias -
это псевдоним для этого пользователя. Изменяет пароль виртуальных
пользователей. username -
это имя почтового login-а, password
- старый пароль пользователя, и newpassword
- новый пароль. Удаляет псевдоним. Удаляет виртуального пользователя. Этот модуль использует функции
библиотеки zlib >= 1.0.9 (http://www.cdrom.com/pub/infozip/zlib/)
авторов Jean-loup Gailly и Mark Adler для прозрачного
чтения и записи в gzip (.gz) сжатые файлы.
Закрывает gz-файл, указанный в переменной
gz.
Возвращает true при успехе и false при ошибке.
Указатель gz-файла должен быть правильным,
и должен указывать на файл, успешно
открытый функцией gzopen().
Возвращает true, если указатель gz-файла на
метке EOF или произошла ошибка, в обратном
случае возвращает false.
Указатель gz-файла должен быть правильным,
и должен указывать на файл, успешно
открытый функцией gzopen().
Функция идентична readgzfile(),
кроме того, что gzfile() возвращает файл в
массив.
См. также readgzfile(), и gzopen().
Возвращает строку, содержащую один (несжатый)
символ, читаемый из файла, определяемого
переменной zp. Возвращает FALSE при достижении
EOF (как это делает gzeof()).
Указатель gz-файла должен быть правильным,
и должен указывать на файл, успешно
открытый функцией gzopen().
См. также gzopen(), и gzgets().
Возвращает строку (не сжатую) длиной от
начала файла до length-1 из файла ,
определяемого zp. Чтение заканчивается при
достижении длины length-1, при начале новой
строки или при EOF (что произойдет раньше).
При ошибке возвращает false.
Указатель gz-файла должен быть правильным,
и должен указывать на файл, успешно
открытый функцией gzopen().
См. также gzopen(), и gzgetc().
Идентична gzgets(), кроме
того, что gzgetss пытается обрезать любые HTML и
PHP теги из считываемого текста.
См. также gzgets(), и gzopen().
Открывает gzip (.gz) файл для чтения или
записи. Параметр режима такой же как и у fopen()
("rb" или "wb"), но также может
включать степень сжатия ("wb9"), или
стратегию: 'f' для фильтрованных данных как в
"wb6f", 'h' для компрессии только по
Хаффману как в "wb1h" (См. описание deflateInit2
в zlib.h для более подробной информации и
параметрах стратегии).
Gzopen может использоваться для чтения файла,
который не в gzip формате. В этом случае gzread()
будет напрямую читать из файла без
декомпрессии.
Gzopen возвращает указатель на открытый файл,
после чего все, что вы читаете из этого
дескриптора файла будет
декомпрессироваться, и все что вы
записываете - сжиматься.
При ошибке в открытии файла функция
вернет false.
Пример 1. gzopen()
См. также gzclose().
Считывает все до EOF указателя gz-файла и
выводит прочитанные данные (несжатые) в
стандартный вывод.
Если произойдет ошибка, то функция вернет
false.
Указатель gz-файла должен быть правильным,
и должен указывать на файл, успешно
открытый функцией gzopen().
gz-файл будет закрыт, когда gzpassthru()
закончит его считывать (оставляя zp
возможным для использования).
gzputs() является псевдонимом для функции
gzwrite(), и полностью ей
идентична.
gzread() читает length байтов из
указателя gz-файла, определяемого zp.
Чтение прекращается когда length
байтов (несжатых) считываются или
достигается EOF (что произойдет раньше).
См. также gzwrite(), gzopen(),
gzgets(), gzgetss(),
gzfile(), и gzpassthru().
Устанавливает индикатор позиции файла
для zp на начало файлового потока.
При ошибке функция вернет 0.
Указатель gz-файла должен быть правильным,
и должен указывать на файл, успешно
открытый функцией gzopen().
См. также gzseek() and gztell().
Сдвигает индикатор позиции файла,
определяемого параметром zp, на offset в
файловом потоке. Еквивалентна вызову (в С)
функции gzseek( zp, offset, SEEK_SET ).
Если файл открыт для чтения, то эта
функция эмулируется, но может быть очень
медленной. Если файл открыт для записи, то
поддерживается только сдвиг вперед; gzseek
затем сжимает последовательность нулей до
новой начальной позиции.
В случае успеха функция возвращает 0, в
обратном случае - 1. Следует отметить, что
достижение EOF не рассматривается как ошибка.
См. также gztell() and gzrewind().
Возвращает позицию указателя файла,
определяемого параметром zp, т.е. его
положение в файловом потоке.
При ошибке возвращается false.
Указатель gz-файла должен быть правильным,
и должен указывать на файл, успешно
открытый функцией gzopen().
См. также gzopen(), gzseek()
and gzrewind().
Считывает файл, распаковывает его и
выводит в стандартный поток вывода.
Readgzfile() может использоваться для чтения
файла, который не в формате gzip. В этом случае
readgzfile() будет сразу считывать файл, без
докомпрессии.
Функция возвращает число байтов (несжатых),
считанных из файла. При ошибке возвращается
false и, если функция не вызывалась как @readgzfile,
будет выведено сообщение об ошибке.
Файл с именем filename будет открыт в
файловой системе и его содержимое будет
выведено в стандартный поток вывода.
См. также gzpassthru(), gzfile(),
и gzopen().
gzwrite() записывает содержимое строки string
в поток gz-файла, определяемый параметром zp.
Если параметр length указан, то запись
будет прекращена после того, как length
байтов (несжатых) будет записано или будет
достигнут конец строки string, что
раньше произойдет.
Следует отметить, что если параметр length
указан, то параметр настройки magic_quotes_runtime
будет игнорирован и пробелы не будут
урезаны в строке string.
См. также gzread(), gzopen(),
and gzputs(). PHP 3.0 полностью изменен. Его лексический
анализатор стал намного более логичным и
последовательным чем 2.0; версия 3.0 быстрее, и
использует меньше ресурсов. Однако,
некоторые усовершенствования повлекли
частичную несовместимость в синтаксисе и
функциональных возможностях.
Кроме того, в PHP 3.0 улучшен синтаксис и
семантика, что также повлекло некоторую
несовместимость. Однако, мы надеемся, что
все эти усовершенствования к лучшему.
Эта глава поможет вам решить проблемы
связанные с несовместимостью при переходе
от PHP/FI 2.0 к PHP 3.0. Новые возможности здесь не
рассматриваются.
Существует программа, которая может
автоматически конвертировать старый PHP/FI 2.0
скрипт; вы можете найти ее в подкаталоге convertor
дистрибутива PHP 3.0. Эта программа только
отслеживает изменения синтаксиса, поэтому,
в любом случае, вам придется прочитать эту
главу внимательно.
Первое, что вы вероятно заметите - это то
что открывающий и закрывающий тэги PHP
изменены. Старая <?> форма была
заменена тремя новыми возможными формами: Начиная с версии 2.0, PHP/FI поддерживает
также следующий формат: Заметьте, что закрывающий тэг теперь
состоит из знака вопроса и знака "больше"
вместо только "больше". Однако, если Вы
планируете использовать XML на вашем сервере,
у вас будут проблемы с этим вариантом, так
как PHP может попробовать исполнить разметку
XML в документах XML как код PHP. Из-за этого,
было внесено следующее изменение: Из-за проблем с редакторами, не
поддерживающими инструкции обработки (например
Microsoft FrontPage), были введены следующие
изменения: "Альтернативный" способ описания
блока if/elseif/else, с использованием, if(); elseif ();
else; endif; не мог быть эффективно осуществлен
без серьезного усложнения компиллятора/интерпретатора,
из-за этого его синтаксис был изменен: Точки с запятой были заменены двоеточиями
во всех операторах, за исключением
завершающего блок (endif).
Точно так же как, с if..endif, был изменен
синтаксис while..endwhile: В PHP/FI 2.0 использовалась левая часть
выражения для определения типа результата.
PHP 3.0 учитывает обе части выражения для
определения типа результата; это может
привести к неожиданным результатам работы
скриптов 2.0.
Рассмотрите этот пример:
В PHP/FI 2.0 мы получили бы индексы $a. В PHP 3.0 мы
не увидим ничего. Причина в том что в PHP 2.0,
переменная в левой части выражения - строка;
было выполнено сравнение, действительно ""
не равно "0", и цикл был пройден. В
PHP 3.0, при выполнении операции сравнения
строковой и целочисленных переменных,
строка будет преобразована в целое число и
далее аргументы сравниваются как целые. Это
означает в данном случае, что
сравненивается значение функции
atoi("") которое равно 0, и variablelist
которое также равно 0; цикл не
выполняется ни разу.
Исправить это достаточно просто. Замените
начало на:
Сообщения об ошибках PHP 3.0, как правило,
точнее чем в 2.0. Вместо указания фрагмента
кода, вызвавший ошибку, вы получаете имя
файла и номер строки.
В PHP 3.0 используется метод сокращенного
вычисления логических выражений. Это
означает что в выражении (1 || test_me()),
функция test_me() не вызывается, так как
результат функции уже не сможет изменить
результат этого логического выражения.
Эта незначительная, на первый взгляд,
проблема совместимости может приести к
неожиданным последствиям. Значения
true/false, возвращаемые функциями
Большинство внутренних функции были
переписаны; теперь они возвращают TRUE, в
случае удачи и FALSE в противном случае, тогда
как в PHP/FI 2.0 возвращаются 0 и -1
соответственно. Эти новые возможности
позволяют создавать более логичный код,
такой так $fp = fopen("/your/file") or
fail("darn!");. Так как PHP/FI 2.0 не имел
четких правил, относительно того, что
должна вернуть функция в случае неудачи, в
большинстве случаев скрипты использующие
подобные функции должны быть проверены
вручную после проверки конвертером. То есть вы не можете читать массив в
цикле, выполняющем $data = $array[].
Используйте current()и next().
Кроме того, выражение $array1[] = $array2 не
добавляет значения массива $array2 к $array1,
но добавляет $array2 как последний
элемент $array1. См. также поддерку
многомерных массивов. В PHP 2.0 значение этого выражения - 11, а в
PHP 3.0 - 2. Используйте вместо него:
Значение этого выражения = 2 для PHP 2.0 и
3.0.
Это выражение вернет 11 в PHP 3.0. Все функции выглядят следующим образом:
Это общий вид функции, даже если она не
имеет аргументов.
Аргументы всегда имеют тип pval. Этот тип
представляет собой объединение (union), в
котором содержится фактический тип
аргумента. В том случае, если ваша функция
принимает несколько аргументов, вы можете
сделать что-нибудь вроде этого в начале
вашей функции: Обратите внимание: аргументы могут быть
по значению или по ссылке. В любом случае вы
должны передать &(pval *) в getParameters. Если вы
хотите проверить, был ли параметр передан
ссылкой или нет, вы можете использовать
функцию ParameterPassedByReference(ht,n), она вернет 1 или 0.
Если изменяете один из параметров,
переданный по ссылке или по значению, вы
можете вызвать pval_destructor, или, в том случае,
если это массив, вы можете использолвать
функцию, подобную одной из internal_functions.h, в
котоых return_value является массивом.
Если вы собираетесь преобразовывать
параметр к IS_STRING - сначала создайте новую
строку с помощью estrdup() и укажите ее длину,
только после этого преобразуйте к IS_STRING.
Если вы изменяете строку параметра уже
являющегося IS_STRING или IS_ARRAY, сначала
придется использовать pval_destructor.
Функция может принимать неопределенное
количество аргументов. Например, в случае,
если ваша функция принимает два или три
аргумента, можно использовать следующий
код: Тип каждого аргумента означен в поле type
структуры pval. Этот тип может быть любым из
приведенных ниже:
Таблица 0-1. Типы переменных PHP Если вы получаете аргумент одного типа и
хотели бы использовать его как аргумент
другого типа, или если вы хотите жестко
определить тип аргумента - используйте одну
из преобразующих функций: convert_to_long(arg1); Эти функции только выполняют
преобразование аргумента, они не
возвращают значений.
Тип переменной обозначается в
объединении:
Память, необходимая внутри функции,
должна быть зарезервирована функциями
emalloc() или estrdup(). Это функции управления
памятью, которые выглядят и работают как
обычные malloc() и strdup(). Память освобождается с
помощью efree().
В программе могут быть использованы два
вида памяти: область памяти, которая будет
использована переменными, и временная
память для функций. Когда вы присваиваете
строковое значение переменной первого типа,
вы должны предварительно выделить область
памяти при помощи emalloc() or estrdup(). Вы НЕ должны
освобождать эту память, если только вы не
переписываете знаение переменной в той же
функции (это считается не очень хорошим
стилем программирования).
Для работы с временной/постоянной памятью
необходимо использовать три функции: emalloc(),
estrdup(), и efree(). Они работают ТАКЖЕ как их "двойники".
Память, выделенную с помощью emalloc() или estrdup()
вы должны освободить с помощью efree(), иначе
область памяти будет утеряна. Под словами
"также, как двойники" мы имеем в виду
следующее: если вы пытаетесь освободить
память, которая не была выделена с помощью
emalloc() или estrdup() вы скорее всего получите
ошибку сегментации (segmentation fault). Поэтому
будьте внимательны и не забывайте
освобождать память после использования.
Если вы выполняете компиляцию с опцией
"-DDEBUG", PHP3 выдаст список всех блоков
памяти, которые были выделены м помощью
emalloc() или estrdup(), но не будут освобождены
после завершения скрипта.
Для упрощения доступа к переменным в
таблице символов определены следующие
макросы:
SET_VAR_STRING(имя,значение) [1] SET_VAR_DOUBLE(имя,значение) SET_VAR_LONG(имя,значение) Таблицы символов в PHP 3.0 реализованы в виде
хэш-таблиц (hash table). В любой момент времени,
&symbol_table указывает на 'главную' таблицу
символов, а active_symbol_table указывает на
активную в данный момент (они идентичны при
запуске, или различны - внутри функции).
Следующие примеры используют 'active_symbol_table'.
Вам придется заменить это на &symbol_table ели
вы хотите работать с 'главной' таблицей
символов. Те же самые функции можно
применять и к массивам,как показано ниже. В PHP 3.0 маcсивы реализованы с
использованием тех же хэш-таблиц, что и в
таблицах символов. Это означает что
приведенные функции можно использовать и
для проверки переменных внутри массивов.
В том случае, если вы хотите определить
новое множество в таблице символов:
Сначала, вы можете проверить наличие,
используя hash_exists() или hash_find().
Потом инициализируйте множество: Объявление нового (пустого) массива $foo в
активной таблице символов.
Вот так вы можете добавить новые элементы: Если вы хотите изменить значение, в хэш-таблице,
вы должны сначала считать его. Для того
чтобы избежать этого на верхнем уровне, вы
можете добавлять pval ** к функции выполняющей
добавление (обновление произойдет с
адресом pval * добавляемого элемента). Если
это значение NULL (как в приведенных примерах)
- параметр будет проигнорирован.
hash_next_index_insert() использует примерно такую
же логику как и "$foo[] = bar;" в PHP 2.0.
Если вы создаете новый массив с целью
возврата его из функции, можно
инициализировать его так же как в примере
выше:
...и добавлять новые значения
вспомогательными функциями:
Конечно, если добавление не было
выполнено правильно после инициализации
множества, вероятно вам понадобится
проверить множество сначала: pval
*arr; Обратите внимание: hash_find получает лишь
ссылку на указатель на pval, а не сам
указатель на pval.
Практически любая hash-функция возвращает
SUCCESS или FAILURE (hash_exists() возвращает булево
значение).
Для упрощения возврата значений из
функций определены следующие макросы:
Макросы RETURN_* устанавливают значение
возвращаемое значение функции и возвращают
управление:
Макросы RETVAL_* устанавливают возвращаемое
значение, но не возвращает управление.
Все строковые макросы вызывают функцию
estrdup() для переданного аргумента, поэтому вы
можете спокойно освободить память, занятую
под аргумент после выполнения макроса, или
использовать статическую память.
Если ваша функция возвращает логическое
значение, используйте RETURN_TRUE и RETURN_FALSE.
Ваша функция может также возвращать и
сложные значения; такие как объект или
массив.
Возвращение объекта:
Регистрация метода выполняется следующим
образом:
Функции для добавления полей(свойств):
Возвращение массива:
Функции для добавления элементов:
В PHP 3.0 имеется стандартные методы для
работы с разными типами ресурсов. Это
сделано для замены локально связанных
списков в PHP 2.0.
Доступные функции:
Обычно эти функции используются
драйверами SQL, хотя и могут используваться в
любом другом месте, например, при работе с
файловыми дескрипторами.
Пример работы с этими функциями показан
ниже. Типы ресурсов должны быть
зарегистрированы в php3_list.h в списке list_entry_type.
Кроме того, вы должны написать деструктор
для каждого типа ресурсов в list_entry_destructor()
файла list.c. Если вы не предпринимаете
никаких дополнительных действий в
деструкторе, вы должны добавить пустой
деструктор.
В PHP 3.0 существует методы хранения
постоянных ресурсов (ресурсов, которые
сохраняются между вызовами). Один из
модулей, который использует эту
возможность - модуль MySQL, а также mSQL; вы
можете изучить правила использования
постоянных ресурсов читая код mysql.c. Следует
обратить внимание на функции: Основная идея таблиц постоянных ресурсов
заключается в следующем:
Если вы откроете файл mysql.c, вы заметите,
что переписывать ничего не пришлось, за
исключением более сложных функций связи.
Существует набор функций для работы с
таблицами постоянных ресурсов, в котором
функции для работы с таблицами постоянных
ресурсов аналогичны функциям для работы с
обычными списками ресурсов. В этом случае
'list' заменяется на 'plist':
Однако, эти функции могут оказаться
бесполезными когда вы создаете постоянный
модуль. Можно пользоваться тем, что
постоянные таблицы ресурсов реализованы
как хэш-таблицы. Например, в модулях MySQL/mSQL,
когда вызывается pconnect(), создается строка на
основе имени хоста, имени пользователя и
его пароля и эта строка помещается в хэш-таблицу
как ключ. В следующий раз когда будет
вызвана pconnect() с теми же параметрами хоста,
пользователя и пароля, будет сгенерирован
тот же самый ключ и SQL-связь будет найдено в
списке постоянных ресурсов.
Чтобы более полно понять работу функций
plist* с хэш-таблицами ознакомтесь с файлами
mysql.c или msql.c.
Внимание: ресурсы, предназначеные для
таблицы постоянных ресурсов НЕ ДОЛЖНЫ
создаваться с помощью менеджера памяти, т.е.
они не должны быть созданы с использованием
emalloc(), estrdup() и т.д. Вместо этого вы должные
использовать обычные malloc(), strdup() и т.д.
Причина этого проста: после исполнения
запроса каждый участок памяти, выделенный
меджером, удаляется. Следовательно не
можете использовать менеджер памяти, так
как список постоянных ресурсов не должен
быть удален в конце сеанса.
Когда вы регистрите ресурс, который
собираетесь добавить в таблицу постоянных,
вы должны добавить деструкторы для них и в
таблицу постоянных ресурсов, и обычных.
Дескриптор в таблице обычных ресурсов
должен быть пустым. Напротив, деструктор
постоянного ресурса должен правильно
освободить память, SQL-связи и т.д. Помните,
что вы обязаны предусмотреть деструктор
для любого типа ресурсов, даже если он будет
пустым. Помните так же о том, что из-за того,
что функции типа emalloc() не используются с
постоянными ресурсами, вы не должны
пользоваться в деструкторе функциями типа
efree().
Многие возможности PHP3 могут быть
сконфигурированы во время выполнения.
Конфигурационные директивы могут быть либо
в файле php3.ini, либо, в случае использования
Apache, в файлах .conf модуля Apache. Преимущесво
использования файлов .conf модуля Apache
заключается в том, что в этом случае можно
предусмотреть настройки для каждого
каталога в отдельности. Эта возможность
особенна полезна когда сервер поддерживает
несколько виртуальных хостов.
Ниже описаны действия, которые необходимо
предпринять для добавления директивы:
Для вызова пользовательских функций из
внутренней нужно использовать call_user_function().
Функция call_user_function() возвращает SUCCESS в
случае успеха, и FAILURE в том случае если
функция не найдена. Вы должны проверить
возвращенное значение! Если возврашен SUCCESS,
вы отвечаете за удаление retval и pval. В случае
возврата FAILURE, значение retval не определено.
Все внутренние функции должны быть
сконструированы так, чтобы возможно было
повторное использование ее. Это в частности
означает, что в них не должны
использоваться глобальные или статические
переменные.
Функция call_user_function() принимает шесть
аргументов:
Хэш-таблица в которой производится поиск
функции.
Указатель на объект, с которым вызывается
функция. NULL если вызывается глобальная
функция. В первом случае аргумент function_table
игнорируется и берется и определяется из
объекта. Объект может быть изменен функцией
(внутри функции он доступен через указатель
$this). Если вы не хотите, чтобы это произошло,
передайте копию объекта.
Имя вызываемой функции. Должно быть pval
IS_STRING со значениями function_name.str.val и
function_name.str.len установленными соответственно.
Значение function_name изменяется вызовом
call_user_function() - конвертируется в нижний
регистр (прописные буквы). Если вы этого не
хотите, передайте копию имени функции.
Указатель на структуру pval, в которую
записывается возвращаемое функцией
значение. Структура должна быть создана
заранее, call_user_function() сама по себе не
создает ничего.
Число параметров, передаваемое функции.
Массив указателей на значения, которые
передаются в вызываемую функцию; первый
аргумент имеет смещение 0, второй 1 и т.д.
Массив является массивом указателей на pval.
Аргументы пересылаются по ссылке, из чего
следует, что если функция меняет аргумент,
меняется и первоначальное значение. Опять
же, если вы хотите этого избежать, передайте
ссылку на копию объекта.
Чтобы выдать сообщение об ошибке внутри
функций вы должны использовать функкцию php3_error().
Она принимает как минимум два параметра --
первый это категория ошибки, второй -
форматирующая строка (как в стандартной
функции printf()), за
которым могут следовать аргументы
форматирующей строки. Ниже представлены
категории ошибок:
Сообщения этого типа по умолчанию не
выводятся и сигнализируют о том, что в
скрипте произошло что-то, что может
означать ошибку, но может случится и при
нормальном исполнении скрипта. Примерами
могут служить попытка обращения к
переменной, значение которой не определено,
или вызов stat() для
несуществующего файла.
Сообщения этого типа выводятся, но не
прерывают выполнение скрипта. Они сообщают,
что существует ошибка, которая должна быть
отслежена скриптом до того, как будет
сделан вызов. Примером служит вызов ereg()
с неправильным регулярным выражением.
Сообщения этого типа также выводятся по
умолчанию, и выполнение скрипта
прекращается. Они означают неустранимые
ошибки, такие как невозможность выделения
памяти.
Ошибки данного класса генерируются
исключительно синтаксическим анализатором.
Этот класс ошибок приведен здесь
исключительно для полноты изложения.
То же, что и E_ERROR, за исключением того, что
генерируются ядром PHP. В функциях не должны
генерироваться сообщения данного типа.
То же, что и E_WARNING, за исключением того, что
генерируются ядром PHP. В функциях не должны
генерироваться сообщения данного типа. Взгляд
вглубь PHP
Отладчик PHP полезен при отслеживании
неочевидных ошибок. Он работает через TCP
порт каждый раз, когда стартует PHP. Все
сообщения об ошибках из запроса будут
посланы по этому TCP соединению. Информация
этого раздела нужна при работе с такими
редакторами как Emacs, или в интегрированной
среде разработки (IDE).
Действия по установке отладчика:
Теперь все предупреждения, замечания и т.д.
будут показаны на этом сокете, даже если
вы выключили error_reporting().
Протокол отладчика основан на отдельных
строках. Каждая строка имеет свой тип;
несколько строк могут составлять сообщение.
Каждое сообщение начинается со строки с
типом start и заканчивается строкой с
типом end. PHP может посылать строки с
несколькими сообщениями одновременно.
Строка имеет следующий формат:
date time host(pid)
type: message-data
Таблица 0-1. Типы строк отладчика Таблица 0-2. Типы ошибок отладчика 1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice
Основные директивы
конфигурации
bit value
допустимые
сообщения
1
нормальные ошибки
2
нормальные
предупреждения
4
ошибки
синтаксического анализатора
8
некритичные
предупреждения стиля
include_path=.:/home/httpd/php-lib
Значением по умолчанию этой директивы
является . (только текущий
каталог).
include_path=".;c:\www\phplib"
Директивы Конфигурации
Почты
configure делает честную попытку
определить это за вас и устанавливает
значение по умолчанию, но в случае
неудачи вы можете установить это здесь.
Директивы Конфигурации
Safe Mode
Debugger Configuration Directives
Директивы Загрузки
Расширений(Extension Loading)
Директивы конфигурации MySQL
Директивы конфигурации mSQL
Директивы конфигурации
Postgres
Директивы Конфигурации Sybase
Директивы Конфигурации
Sybase-CT
Директивы Конфигурации BC
Math
Директивы Конфигурации
Возможностей Броузера
Директивы Конфигурации
Унифицированных ODBC
Модуль Apache
Директивы конфигурации
модуля Apache
Модуль CGI переадресации
module/action
CGI
Виртуальные хосты
Безопасность
С правильным выбором compile-time и runtime опций
конфигурации он дает вам как раз ту
комбинацию свободы и безопасности, которая
вам нужна.
CGI binary
Возможные
атаки
Вариант 1:
обслуживаются только общие(public) файлы
Вы все еще должны убедиться, что ваши
сценарии PHP не полагаются на этот или другой
путь вызова сценария, ни непосредственно http://my.host/cgi-bin/php/dir/script.php3,
ни переадресацией http://my.host/dir/script.php3.
Вариант 2:
использование --enable-force-cgi-redirect
Action php3-script /cgi-bin/php
AddHandler php3-script .php3
Вариант 3:
установка doc_root или user_dir
Вариант 4: PHP
синтаксический анализатор вне дерева web
#!/usr/local/bin/php
Модуль Apache
Глава 5. Синтаксис и
грамматика
Переход из HTML
1. <? echo("простейший способ, инструкция обработки SGML\n"); ?>
2. <?php echo("при работе с XML документами делайте так\n"); ?>
3. <script language="php">
echo ("некоторые редакторы (подобные FrontPage) не
любят обрабатывающие инструкции");
</script>;
4. <% echo("От PHP 3.0.4 можно факультативно применять ASP-тэги"); %>
Разделение инструкций
<php
echo "Это тест";
?>
<php echo "Это тест" ?>
Типы переменных
Инициализация переменной
Инициализация Массивов
$names[] = "Jill"; // $names[0] = "Jill"
$names[] = "Jack"; // $names[1] = "Jack"
Инициализация объектов
class foo {
function do_foo () {
echo "Doing foo.";
}
}
$bar = new foo;
$bar -> do_foo ();
Область Переменной
$a = 1; /* глобальная область */
Function Test () {
echo $a; /* ссылка на переменную локальной области */
}
Test ();
$a = 1;
$b = 2;
Function Sum () {
global $a, $b;
$b = $a + $b;
}
Sum ();
echo $b;
$a = 1;
$b = 2;
Function Sum () {
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum ();
echo $b;
Function Test () {
$a = 0;
echo $a;
$a++;
}
Function Test () {
static $a = 0;
echo $a;
$a++;
}
Function Test () {
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
Test ();
}
$count--;
}
Изменяемые переменные
$a = "hello";
$$a = "world";
echo "$a ${$a}";
echo "$a $hello";
Переменные вне PHP
HTML Формы (GET и POST)
<form action="foo.php3" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
<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>
Имена переменных РИСУНКА
АКТИВИЗАЦИИ
<input type=image src="image.gif" name="sub">
HTTP Кукисы
SetCookie ("MyCookie[]", "Testing", time()+3600);
$Count++;
SetCookie ("Count", $Count, time()+3600);
SetCookie ("Cart[$Count]", $item, time()+3600);
Переменные окружения
echo $HOME; /* Показывает переменную окружения HOME,
если она установлена. */
Директивы конфигурации сервера
Изменение типа
$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)
Определение типов переменных
Приведение типа
$foo = 10; // $foo is an integer
$bar = (double) $foo; // $bar is a double
$foo = (int) $bar;
$foo = ( int ) $bar;
Преобразование строк
$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'
Манипуляции с массивом
$a[0] = "abc";
$a[1] = "def";
$b["foo"] = 13;
$a[] = "hello"; // $a[2] == "hello"
$a[] = "world"; // $a[3] == "world"
Глава 6. Элементы языка
Константа
Пример 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!");
?>
Пример 6-2. Описание констант
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
undefine ("CONSTANT");
?>
Выражения
function foo () {
return 5;
}
{
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 */
IF
if ($a > $b)
print "a is bigger than b";
ELSE
if ($a > $b) {
print "a is bigger than b";
} else {
print "a is NOT bigger than b";
}
ELSEIF
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 :
IF(): ... ENDIF;
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
/* example 1 */
$i = 1;
while ($i <= 10) {
print $i++; }
/* example 2 */
$i = 1;
while ($i <= 10):
print $i;
$i++;
endwhile;
DO..WHILE
$i = 0;
do {
print $i;
} while ($i>0);
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
/* пример 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++) ;
BREAK
$i = 0;
while ($i < 10) {
if ($arr[$i] == "stop") {
break;
}
$i++;
}
CONTINUE
while (list($key,$value) = each($arr)) {
if ($key % 2) { // skip even members
continue;
}
do_something_odd ($value);
}
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;
}
/* пример 3 */
switch ($i) {
case 0:
print "i equals 0";
case 1:
print "i equals 1";
case 2:
print "i equals 2";
}
/* 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";
}
REQUIRE
INCLUDE
$files = array ('first.inc', 'second.inc', 'third.inc');
for ($i = 0; $i < count($files); $i++) {
include($files[$i]);
}
/* Это неправильно и не будет работать, как хотелось бы. */
if ($condition)
include($file);
else
include($other);
/* А вот это - верно. */
if ($condition) {
include($file);
} else {
include($other);
}
FUNCTION
function foo ($arg_1, $arg_2, ..., $arg_n) {
echo "Example function.\n";
return $retval;
}
Возвращение
результатов
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();
Аргументы
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.'
Значения
по умолчанию
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
<?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;
$cart->add_item("10", 1);
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this->owner = $name;
}
}
$ncart = new Named_Cart; // Создать корзину
$ncart->set_owner ("kris"); // Указать владельца
print $ncart->owner; // Распечатать имя владельца корзины
$ncart->add_item ("10", 1); // (унаследовано из обычной корзины)
class Auto_Cart extends Cart {
function Auto_Cart () {
$this->add_item ("10", 1);
}
}
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. Выражения
Операторы
Арифметические
операторы
пример
название
результат
$a + $b
Сложение
Сумма $a и $b.
$a - $b
Вычитание
Вычитает $b из $a.
$a * $b
Умножение
Произведение $a и $b.
$a / $b
Деление
Деление $a на $b.
$a % $b
Остаток деления
Остаток от деления $a на
$b.
Операторы строк
$a = "Hello ";
$b = $a . "World!"; // теперь $b = "Hello World!"
Операторы
присваивания
$a = ($b = 4) + 5; // теперь $a равно 9, а $b стало равным 4.
$b = "Hello ";
$b .= "There!"; // теперь $b равно "Hello
There!", как если бы мы написали $b = $b .
"There!";
Бинарные Операторы (Побитовые
Логические Операторы)
пример
название
результат
$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) */Логические операторы
пример
название
результат
$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.
Операторы Сравнения
пример
название
результат
$a == $b
равно
истина, если $a
эквивалентно $b.
$a != $b
Не равно
Истина, если $a не
эквивалентно $b.
$a < $b
Меньше чем
Истина если $a меньше
чем $b.
$a > $b
Больше чем
Истина если $a больше $b.
$a <= $b
Меньше или равно
Истина, если $a меньше
или равно $b.
$a >= $b
Больше или равно
Истина, если $a больше
или равно $b.
Adabas D функции
ada_afetch
Description
ada_autocommit
Description
ada_close
Description
ada_commit
Description
ada_connect
Description
ada_exec
Description
ada_fetchrow
Description
ada_fieldname
Description
ada_fieldnum
Description
ada_fieldtype
Description
ada_freeresult
Description
ada_numfields
Description
ada_numrows
Description
ada_result
Description
ada_resultall
Description
ada_rollback
Description
Специфичные функции Apache
apache_lookup_uri
Описание
class apache_lookup_uri
(string filename);
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_note
Описание
string apache_note
(string note_name, string
[note_value]);
getallheaders
Описание
array getallheaders
(void);
Этот пример покажет все заголовки
текущего запроса
$headers = getallheaders();
while (list($header, $value) = each($headers)) {
echo "$header: $value<br>\n";
}
virtual
Описание
int virtual
(string filename);
Функции обработки массивов
array
Описание
array 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")
);
array_walk
Описание
int array_walk
(array arr, string func);
$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' );
arsort
Описание
void arsort
(array array);
Пример нам покажет: fruits[a] =
orange fruits[d] = lemon fruits[b] = banana fruits[c] = apple
Фрукты показаны в обратном алфавитном
порядке, и поддерживаются связанные с ними
индексы.
$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";
}
asort
Описание
void asort
(array array);
Этот пример покажет: fruits[c] =
apple fruits[b] = banana fruits[d] = lemon fruits[a] = orange
Фрукты показаны в алфавитном порядке, и
поддерживаются индексы связанные с каждым
элементом массива.
$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";
}
count
Описание
int count
(mixed var);
current
Описание
mixed current
(array array);
each
Описание
array each
(array array);
$foo = array( "bob", "fred", "jussi", "jouni" );
$bar = each( $foo );
$foo = array( "Robert" => "Bob", "Seppo" => "Sepi" );
$bar = each( $foo );
echo "Values submitted via POST method:<br>";
while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {
echo "$key => $val<br>";
}
end
Описание
end
(array array);
key
Описание
mixed key
(array array);
ksort
Описание
int ksort
(array array);
Этот пример должен показать: fruits[a]
= orange fruits[b] = banana fruits[c] = apple fruits[d] = lemon
$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";
}
list
Описание
void 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>
next
Описание
mixed next
(array array);
pos
prev
Описание
mixed prev
(array array);
reset
Описание
mixed reset
(array array);
rsort
Описание
void rsort
(array array);
Этот пример покажет: fruits[0] =
orange fruits[1] = lemon fruits[2] = banana fruits[3] = apple Фрукты
отсортированы в обратном алфавитном
порядке.
$fruits = array("lemon","orange","banana","apple");
rsort($fruits);
for(reset($fruits); ($key,$value) = each($fruits); ) {
echo "fruits[$key] = ".$value."\n";
}
sizeof
sort
Описание
void sort
(array array);
Этот пример покажет: fruits[0] =
apple fruits[1] = banana fruits[2] = lemon fruits[3] = orange
Фрукты будут отсортированы повозрастанию
в алфавитном порядке.
$fruits = array("lemon","orange","banana","apple");
sort($fruits);
for(reset($fruits); $key = key($fruits); next($fruits)) {
echo "fruits[$key] = ".$fruits[$key]."\n";
}
uasort
Описание
void uasort
(array array, function
cmp_function);
uksort
Описание
void uksort
(array array, function
cmp_function);
Пример покажет: 20: twenty 10: ten 4:
four 3: three
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: $value\n";
}
usort
Описание
void usort
(array array, function
cmp_function);
Пример покажет: 0: 6 1: 5 2: 3 3: 2 4:
1 Очевидно, что в этом тривиальном
случае функция rsort()
было бы более соответствующей.
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: $value\n";
}
Математические BC (произвольной точности) функции
bcadd
Описание
bccomp
Описание
int bccomp(string левый операнд, string правый
операнд, int [масштаб]);
bcdiv
Описание
string bcdiv(string левый операнд, string правый
операнд, int [масштаб]);
bcmod
Описание
(string левый операнд, string модуль);
bcmul
Описание
(string левый операнд, string правый
операнд, int [масштаб]);
bcpow
Описание
(string x, string y, int [масштаб]);
bcscale
Описание
(int масштаб);
bcsqrt
Описание
(string операнд, int масштаб);
bcsub
Описание
(string левый операнд, string правый
операнд, int [масштаб]);
Календарные функции
JDToGregorian
JDToGregorian -- Преобразование дневного Юлианcкого
счета в Грегорианскую дату
Описание
string jdtogregorian
(int julianday);
GregorianToJD
GregorianToJD -- Преобразовывает Грегорианскую
дату на Дневный Юлианский cчет
Описание
int gregoriantojd
(int month, int day, int year);
<?php
$jd = GregorianToJD(10,11,1970);
echo("$jd\n");
$gregorian = JDToGregorian($jd);
echo("$gregorian\n");
?>
JDToJulian
JDToJulian -- преобразовывает дату Юлианского
календаря на дневный Юлианский счет
Описание
string jdtojulian
(int julianday);
JulianToJD
JulianToJD -- преобразовывает дату Юлианского
Календаря на дневной Юлианский счет
Описание
int juliantojd
(int month, int day, int year);
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);
JDMonthName
JDMonthName -- возвращает название месяца
Описание
string jdmonthname
(int julianday, int mode);
main
сообщает функции, в какой календарь нужно
преобразовать дневнрй Юлианский счет на, и
какой тип месячных имен должен быть
возвращен.
Способ
Значение
0
Грегорианский - apreviated
1
Грегорианский
2
Юлианский - apreviated
3
Юлианский
4
Еврейский
5
Французский
Республиканский
JDDayOfWeek
JDDayOfWeek -- Возвращает день недели
Описание
mixed jddayofweek
(int julianday, int mode);
string
) или int в зависимости
от способа(mode
).
Способ
Значение
0
возвращает дневной
номер как int (0=воскресенье, 1=понедельник,
и т.п.)
1
возврат string содержание
дня недели (английское-грегорианское)
2
возвращает string содержа
abreviated дени недели (английский-грегорианский)
Функции даты/времени
checkdate
Описание
int checkdate
(int month, int day, int
year);
date
Описание
string date
(string format, int timestamp);
Нераспознанные символы в форматной строке
будут печататься как есть.
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)));
$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);
strftime
Описание
string strftime
(string format, int
timestamp);
Пример будет работать, если у вас
установлены соответствующие locale.
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"));
getdate
Описание
array getdate
(int timestamp);
gmdate
Описание
string gmdate
(string format, int
timestamp);
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) );
mktime
Описание
int mktime
(int hour, int minute, int
second, int month, int day, int year);
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) );
gmmktime
Описание
int gmmktime
(int hour, int minute, int
second, int month, int day, int year);
time
Описание
int time
(void);
microtime
Описание
string microtime
(void);
Функции dBase
dbase_create
Описание
Если создание базы данных успешно, то
возвращает dbase_identifier(идентификатор базы
данных), в противном случае возвращает false(ложь).
L
Логическое. Не требует длину или
точность.
M
Мемо. (Помните, что они не
поддерживаются в PHP.) Не требует длину
или точность.
D
дата (сохраненная как ГГГГММДД). Не
требует длину или точность.
N
Числовое. Это поле имеет и длину и
точность(количество цифр после
десятичной точки).
C
Строка. Имеет длину и не требует
точность.
// "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_close
Описание
dbase_pack
Описание
dbase_add_record
Описание
dbase_delete_record
Описание
dbase_get_record
Описание
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
Описание
Функции dbm
$dbm = dbmopen("lastseen", "w");
if (dbmexists($dbm, $userid)) {
$last_seen = dbmfetch($dbm, $userid);
} else {
dbminsert($dbm, $userid, time());
}
do_stuff();
dbmreplace($dbm, $userid, time());
dbmclose($dbm);
dbmopen
Описание
int dbmopen(string filename, int flags);
dbmclose
Описание
bool dbmclose(int dbm_identifier);
dbmexists
Описание
bool dbmexists(int dbm_identifier, string key);
dbmfetch
Описание
string dbmfetch(int dbm_identifier, string key);
dbminsert
Описание
int dbminsert(int dbm_identifier, string key, string value);
dbmreplace
Описание
bool dbmreplace(int dbm_identifier, string key, string value);
dbmdelete
Описание
bool dbmdelete(int dbm_identifier, string key);
dbmfirstkey
Описание
string dbmfirstkey(int dbm_identifier);
dbmnextkey
Описание
string dbmnextkey(int dbm_identifier, string key);
$key = dbmfirstkey($dbm_id);
while ($key) {
echo "$key = " . dbmfetch($dbm_id, $key) . "\n";
$key = dbmnextkey($dbm_id, $key);
}
dblist
Описание
string dblist(void);
Функции для работы с каталогами
chdir
Описание
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
Описание
opendir
Описание
readdir
Описание
<?php
$handle=opendir('.');
echo "Directory handle: $handle\n";
echo "Files:\n";
while ($file = readdir($handle)) {
echo "$file\n";
}
closedir($handle);
?>
rewinddir
Описание
Функции динамической загрузки
dl
Описание
escapeshellcmd
Описание
system(EscapeShellCmd($cmd))
Функции запуска программ
exec
Описание
system
Описание
passthru
Описание
Функции работы с filePro
filepro
filepro -- читает и верифицирует map-файл
Описание
bool filepro
(string directory);
filepro_fieldname
filepro_fieldname -- получить имя поля
Описание
string filepro_fieldname
(int field_number);
filepro_fieldtype
filepro_fieldtype -- получить тип поля
Описание
string filepro_fieldtype
(int field_number);
filepro_fieldwidth
filepro_fieldwidth -- получить ширину поля
Описание
int filepro_fieldwidth
(int 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_rowcount
filepro_rowcount -- сколько строк в базе filePro?
Описание
int filepro_rowcount
(void);
Функции файловой системы
basename
basename -- возвращает из полного пути имя файла
Описание
string basename
(string path);
$path = "/home/httpd/html/index.php3";
$file = basename($path); // $file устанавливается в "index.php3"
chgrp
chgrp -- изменить файловую группу
Описание
int chgrp
(string filename, mixed group);
chmod
chmod -- изменить режим файла
Описание
int chmod
(string filename, int mode);
chmod( "/somedir/somefile", 755 ); // десятичный; возможно неправильныйt
chmod( "/somedir/somefile", 0755 ); // восьмиричный; корректное значение режима
chown
chown -- изменяет владельца файла
Описание
int chown
(string filename, mixed user);
clearstatcache
clearstatcache -- очистить кеш статистики файла
Описание
void clearstatcache
(void);
copy
copy -- скопировать файл
Описание
int copy
(string source, string dest);
if (!copy($file, $file.'.bak')) {
print("failed to copy $file...<br>\n");
}
dirname
dirname -- путь к файлу
Описание
string dirname
(string path);
$path = "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"
fclose
fclose -- close an open file pointer
Описание
int fclose
(int fp);
Указатель должен быть действующим и
указывать на файл, успешно открытый fopen()
или fsockopen().
feof
feof -- проверка на достижение указателем
конца файла
Описание
int feof
(int fp);
fgetc
fgetc -- получить символ из файла
Описание
string fgetc
(int fp);
fgets
fgets -- получить строку по указателю на файл
Описание
string fgets
(int fp, int length);
fgetss
fgetss -- получить строку по указателю файла и
вырезать HTML тэги
Описание
string fgetss
(int fp, int length);
file
file -- прочитать файл в массив
Описание
array file
(string filename);
file_exists
file_exists -- проверяет существование искомого
файла.
Описание
int file_exists
(string filename);
fileatime
fileatime -- время поледнего обращения к файлу
Описание
int fileatime
(string filename);
filectime
filectime -- время последнего изменения файла
Описание
int filectime
(string filename);
filegroup
filegroup -- группа файла
Описание
int filegroup
(string filename);
fileinode
fileinode -- inode файла
Описание
int fileinode
(string filename);
filemtime
filemtime -- время модификации файла
Описание
int filemtime
(string filename);
fileowner
fileowner -- владелец файла
Описание
int fileowner
(string filename);
fileperms
fileperms -- разрешения для файла
Описание
int fileperms
(string filename);
filesize
filesize -- размер файла
Описание
int filesize
(string filename);
filetype
filetype -- тип файла
Описание
string filetype
(string filename);
Возвращает тип файла. Возможные значения:
fifo, char, dir,
block, link, file, и
unknown.
fopen
fopen -- открыть файл или URL
Описание
int fopen
(string filename, string mode);
mode также может содержать символ 'b'.
Используется в системах, различающих
бинарные и текстовые файлы (не используется
в Unix). Если данное значение не имеет смысла,
оно игногрируется.
$fp = fopen("/home/rasmus/file.txt", "r");
$fp = fopen("http://www.php.net/", "r");
$fp = fopen("ftp://user:password@example.com/", "w");
$fp = fopen("c:\\data\\info.txt", "r");
fpassthru
fpassthru -- вывод всех данных из указателя файла
Описание
int fpassthru
(int fp);
fputs
fputs -- запись в файл
Описание
int fputs
(int fp, string str, int [length]);
fread
fread -- бинарное чтение файла
Описание
string fread
(int fp, int length);
// получить содержимое файла в строку
$filename = "/usr/local/something.txt";
$fd = fopen( $filename, "r" );
$contents = fread( $fd, filesize( $filename ) );
fclose( $fd );
fseek
fseek -- поиск в файле
Описание
int fseek
(int fp, int offset);
ftell
ftell -- текущая позиция указателя в файле
Описание
int ftell
(int fp);
fwrite
fwrite -- бинарная запись в файл
Описание
int fwrite
(int fp, string string, int [length]);
is_dir
is_dir -- filename - директория?
Описание
bool is_dir
(string filename);
is_executable
is_executable -- фавйл относится к классу
исполнимых
Описание
bool is_executable
(string filename);
is_file
is_file -- файл относится к классу обычных
файлов
Описание
bool is_file
(string filename);
is_link
is_link -- файл относится к файлу символических
ссылок
Описание
bool is_link
(string filename);
is_readable
is_readable -- файл относится к классу читаемых
Описание
bool is_readable
(string filename);
is_writeable
is_writeable -- файл относится к классу
записываемых
Описание
bool is_readable
(string filename);
link
link -- создать жесткую ссылку
Описание
int link
(string target, string link);
linkinfo
linkinfo -- информация о ссылке
Описание
int linkinfo
(string path);
mkdir
mkdir -- создать директорию
Описание
int mkdir
(string pathname, int mode);
mkdir("/path/to/my/dir", 0700);
pclose
pclose -- закрывает процесс файлового
указателя
Описание
int pclose
(int fp);
popen
popen -- открыть процесс файлофого указателя
Описание
int popen
(string command, string mode);
$fp = popen( "/bin/ls", "r" );
readfile
readfile -- вывод файла
Описание
int readfile
(string filename);
readlink
readlink -- цель символической ссылки
Описание
string readlink
(string path);
rename
rename -- переименовать файл
Описание
int rename
(string oldname, string newname);
rewind
rewind -- rewind the position of a file pointer
Описание
int rewind
(int fp);
rmdir
rmdir -- удалить директорию
Описание
int rmdir
(string dirname);
stat
stat -- информация о файле
Описание
array stat
(string filename);
* - тоьлко для систем, поддерживающих тип
st_blksize -- в других системах (i.e. Windows)
возвращается -1
lstat
lstat -- информация о файле или символической
ссылке
Описание
array lstat
(string filename);
* - тоьлко для систем, поддерживающих тип
st_blksize -- в других системах (i.e. Windows)
возвращается -1
symlink
symlink -- создать символическую ссылку
Описание
int symlink
(string target, string link);
tempnam
tempnam -- создать уникальное имя файла
Описание
string tempnam
(string dir, string prefix);
$tmpfname = tempnam( "/tmp", "FOO" );
touch
touch -- установить время модификации файла
Описание
int touch
(string filename, int time);
umask
umask -- изменить текущую umask
Описание
int umask
(int mask);
unlink
unlink -- удалить файл
Описание
int unlink
(string filename);
Функции, связанные с HTTP
header
header -- послать необработанный заголовок HTTP
Описание
int header
(string string);
Замечание: Помните, что функция Header()
должна быть вызвана перед любыми другими
операциями вывода, описанными стандартными
тэгами HTML или PHP. Наиболее общие ошибки в
коде - применение include()
с auto_prepend и пробелами или пустыми строками,
которые инициируеют вывод до вызова header().
Header("Location: http://www.php.net"); /* Редирект браузера на сайт PHP */
exit; /* Код, следующий ниже, не будет исполняться после редиректа. */
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("TestCookie","Test Value");
SetCookie("TestCookie",$value,time()+3600); /* истекает через час */
SetCookie("TestCookie",$value,time()+3600,"/~rasmus/",".utoronto.ca",1);
echo $TestCookie;
Функции работы с Hyperwave
Вступление
Интеграция с Apache
RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]
RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]
RewriteEngine on
Замечания
hw_Changeobject
Описание
int hw_changeobject
(int connection, int
object_to_change, string commands);
<addcmd> |
<remcmd> "\" <addcmd>
<remcmd> ::= "rem " <attribute> "=" <value>
<addcmd> ::= "add " <attribute> "=" <value>
Заметим, что в запросе на удаление или
перемещение атрибута, его старое значение
также поддерживается (некоторые атрибуты
могут иметь одновременно несколько
значений). Команда, подобная rem
attr=value\add attr=value позводяет модифицировать
атрибуты за одну операцию.
hw_Children
Описание
array hw_children
(int connection, int
objectID);
hw_ChildrenObj
Описание
array hw_childrenobj
(int connection, int
objectID);
hw_Close
Описание
int hw_close
(int connection);
hw_Connect
Описание
int hw_connect
(string host, int port, string
username, string password);
hw_Cp
Описание
int hw_cp
(int connection, array
object_id_array, int destination id);
hw_Deleteobject
Описание
int hw_deleteobject
(int connection, int
object_to_delete);
hw_DocByAnchor
Описание
int hw_docbyanchor
(int connection, int
anchorID);
hw_DocByAnchorObj
Описание
string hw_docbyanchorobj
(int connection, int
anchorID);
hw_DocumentAttributes
Описание
string hw_documentattributes
(int
hw_document);
hw_DocumentBodyTag
Описание
string hw_documentbodytag
(int hw_document);
hw_DocumentSize
Описание
int hw_documentsize
(int hw_document);
hw_ErrorMsg
Описание
string hw_errormsg
(int connection);
hw_EditText
Описание
int hw_edittext
(int connection, int
hw_document);
hw_Error
Описание
int hw_error
(int connection);
hw_Free_Document
Описание
int hw_free_document
(int hw_document);
hw_GetParents
Описание
array hw_getparentsobj
(int connection, int
objectID);
hw_GetParentsObj
Описание
array hw_getparentsobj
(int connection, int
objectID);
hw_GetChildColl
Описание
array hw_getchildcoll
(int connection, int
objectID);
hw_GetChildCollObj
Описание
array hw_getchildcollobj
(int connection, int
objectID);
hw_GetSrcByDestObj
Описание
array hw_getsrcbydestobj
(int connection, int
objectID);
hw_GetObject
Описание
array hw_getobject
(int connection, int
objectID);
hw_GetAndLock
Описание
string hw_getandlock
(int connection, int
objectID);
hw_GetText
Описание
int hw_gettext
(int connection, int objectID,
int rootID);
hw_GetObjectByQuery
Описание
array hw_getobjectbyquery
(int connection,
string query, int max_hits);
hw_GetObjectByQueryObj
Описание
array hw_getobjectbyqueryobj
(int connection,
string query, int max_hits);
hw_GetObjectByQueryColl
Описание
array hw_getobjectbyquerycoll
(int
connection, int objectID, string query, int max_hits);
hw_GetObjectByQueryCollObj
Описание
array hw_getobjectbyquerycollobj
(int
connection, int objectID, string query, int max_hits);
hw_GetChildDocColl
Описание
array hw_getchilddoccoll
(int connection, int
objectID);
hw_GetChildDocCollObj
Описание
array hw_getchilddoccollobj
(int connection,
int objectID);
hw_GetAnchors
Описание
array hw_getanchors
(int connection, int
objectID);
hw_GetAnchorsObj
Описание
array hw_getanchorsobj
(int connection, int
objectID);
hw_Mv
Описание
int hw_mv
(int connection, array object id
array, int source id, int destination id);
hw_Identify
Описание
int hw_identify
(string username, string
password);
hw_InCollections
Описание
array hw_incollections
(int connection, array
object_id_array, array collection_id array, int return_collections);
hw_Info
Описание
string hw_info
(int connection);
hw_InsColl
Описание
int hw_inscoll
(int connection, int objectID,
array object_array);
hw_InsDoc
Описание
int hw_insdoc
(int connection, int parentID,
string object_record, string text);
hw_InsertDocument
Описание
int hw_putdocument
(int connection, int
parent_id, int hw_document);
hw_New_Document
Описание
int hw_new_document
(string document_data,
string object_record, int document_size);
hw_Objrec2Array
Описание
array hw_objrec2array
(string object_record);
hw_OutputDocument
Описание
int hw_outputdocument
(int hw_document);
hw_pConnect
Описание
int hw_pconnect
(string host, int port,
string username, string password);
hw_PipeDocument
Описание
int hw_pipedocument
(int connection, int
objectID);
hw_Root
Описание
int hw_root
();
hw_Unlock
Описание
int hw_unlock
(int connection, int objectID);
hw_Username
Описание
string hw_getusername
(int connection);
Функции работы с изображениями
GetImageSize
GetImageSize -- получение размеров GIF, JPG или PNG
изображений
Описание
array getimagesize
(string filename, array [imageinfo]);
<?php $size = GetImageSize("img/flag.jpg"); ?>
<IMG SRC="img/flag.jpg" <?php echo $size[3]; ?>>
<?php
$size = GetImageSize("testimg.jpg",&$info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>
ImageArc
ImageArc -- рисует часть эллипса
Описание
int imagearc
(int im, int cx, int cy, int w, int h, int s, int e,
int col);
ImageChar
ImageChar -- рисует символы горизонтально
Описание
int imagechar
(int im, int font, int x, int y, string c, int col);
ImageCharUp
ImageCharUp -- рисует символы вертикально
Описание
int imagecharup
(int im, int font, int x, int y, string c, int col);
ImageColorAllocate
ImageColorAllocate -- определяет цвет изображения
Описание
int imagecolorallocate
(int im, int red, int green, int blue);
$white = ImageColorAllocate($im, 255,255,255);
$black = ImageColorAllocate($im, 0,0,0);
ImageColorTransparent
ImageColorTransparent -- определить цвет как
прозрачный
Описание
int imagecolortransparent
(int im, int [col]);
ImageCopyResized
ImageCopyResized -- копирует и изменяет размеры
части изображения
Описание
int imagecopyresized
(int dst_im, int src_im, int dstX, int dstY,
int srcX, int srcY, int dstW, int dstH, int srcW, int srcH);
ImageCreate
ImageCreate -- создать новое изображение
Описание
int imagecreate
(int x_size, int y_size);
ImageCreateFromGif
ImageCreateFromGif -- создать новое изображение из
файла или URL
Описание
int imagecreatefromgif
(string filename);
ImageDashedLine
ImageDashedLine -- нарисовать пунктирную линию
Описание
int imagedashedline
(int im, int x1, int y1, int x2, int y2, int
col);
ImageDestroy
ImageDestroy -- уничтожить изображение
Описание
int imagedestroy
(int im);
ImageFill
ImageFill -- заливка
Описание
int imagefill
(int im, int x, int y, int col);
ImageFilledPolygon
ImageFilledPolygon -- нарисовать закрашенный
многоугольник
Описание
int imagefilledpolygon
(int im, array points, int num_points, int
col);
points[0] = x0,
points[1] = y0, points[2] = x1,
points[3] = y1, etc.
num_points - общее число вершин.
ImageFilledRectangle
ImageFilledRectangle -- нарисовать закрашенный
прямоугольник
Описание
int imagefilledrectangle
(int im, int x1, int y1, int x2, int y2,
int col);
ImageFillToBorder
ImageFillToBorder -- заливка до указанного цвета
Описание
int imagefilltoborder
(int im, int x, int y, int border, int col);
ImageFontHeight
ImageFontHeight -- узнать высоту шрифта
Описание
int imagefontheight
(int font);
ImageFontWidth
ImageFontWidth -- узнать ширину шрифта
Описание
int imagefontwidth
(int font);
ImageGif
ImageGif -- вывести изображение на браузер или в
файл
Описание
int imagegif
(int im, string filename);
ImageInterlace
ImageInterlace -- включение/выключение чередования
(interlace)
Описание
int imageinterlace
(int im, int [interlace]);
ImageLine
ImageLine -- нарисовать линию
Описание
int imageline
(int im, int x1, int y1, int x2, int y2, int col);
ImageLoadFont
ImageLoadFont -- загрузить новый шрифт
Описание
int imageloadfont
(string file);
позиция байта
тип данных C
Описание
байты 0-3
int
число символов в шрифте
байты 4-7
int
значение первого
символа в шрифте (часто 32 для пробела)
байты 8-11
int
ширина символов в
пикселах
байты 12-15
int
высота символов в
пикселах
байты 16-
char
массив с данными на
символы, один байт на пиксел, для
каждого символа - nchars*width*height.
ImagePolygon
ImagePolygon -- нарисовать многоугольник
Описание
int imagepolygon
(int im, array points, int num_points, int col);
ImageRectangle
ImageRectangle -- нарисовать прямоугольник
Описание
int imagerectangle
(int im, int x1, int y1, int x2, int y2, int
col);
ImageSetPixel
ImageSetPixel -- установить один пиксел
Описание
int imagesetpixel
(int im, int x, int y, int col);
ImageString
ImageString -- нарисовать строку горизонтально
Описание
int imagestring
(int im, int font, int x, int y, string s, int col);
ImageStringUp
ImageStringUp -- нарисовать строку вертикально
Описание
int imagestringup
(int im, int font, int x, int y, string s, int
col);
ImageSX
ImageSX -- get image width
Описание
int imagesx
(int im);
ImageSY
ImageSY -- узнать высоту изображения
Описание
int imagesy
(int im);
ImageTTFBBox
ImageTTFBBox -- установить границы области для
текста, где используются шрифты TypeType
Описание
array ImageTTFBBox
(int size, int angle, string fontfile, string
text);
ImageTTFBBox() возвращает
массив из 8-и элементов, представляющих
четыре точки границы области текста:
0
нижний левый угол,
позиция X
1
нижний левый угол,
позиция Y
2
нижний правый угол,
позиция X
3
нижний правый угол,
позиция Y
4
верхний правый угол,
позиция X
5
верхний правый угол,
позиция Y
6
верхний левый угол,
позиция X
7
верхний левый угол,
позиция Y
ImageTTFText
ImageTTFText -- впсать текст в изображение,
используя TrueType шрифт
Описание
array ImageTTFText
(int im, int size, int angle, int x, int y, int
col, string fontfile, string text);
<?php
Header("Content-type: image/gif");
$im = imagecreate(400,30);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
ImageTTFText($im, 20, 0, 10, 20, $white, "/path/arial.ttf",
"Testing... Omega: Ω");
ImageGif($im);
ImageDestroy($im);
?>
ImageColorAt
ImageColorAt -- узнать индекс цвета пиксела
Описание
int imagecolorat
(int im, int x, int y);
ImageColorClosest
ImageColorClosest -- узнать индекс цвета, ближайшего
заданному
Описание
int imagecolorclosest
(int im, int red, int green, int blue);
ImageColorExact
ImageColorExact -- узнать индекс указанного цвета
Описание
int imagecolorexact
(int im, int red, int green, int blue);
ImageColorResolve
ImageColorResolve -- узнать индекс указанного цвета
или его ближайшую возможную альтернативу
Описание
int imagecolorresolve
(int im, int red, int green, int blue);
ImageColorSet
ImageColorSet -- установить цвет для указанного
индекса в палитре
Описание
bool imagecolorset
(int im, int index, int red, int green, int
blue);
ImageColorsForIndex
ImageColorsForIndex -- узнать цвет по индексу
Описание
array imagecolorsforindex
(int im, int index);
ImageColorsTotal
ImageColorsTotal -- количество цветов в палитре
изображения
Описание
int imagecolorstotal
(int im);
Функции IMAP
imap_append
Описание
int imap_append(int imap_stream, string mbox, string message, stringflags);
imap_base64
Описание
string imap_base64(string text);
imap_body
Описание
string imap_body(int imap_stream, int msg_number, int flags);
FT_PEEK - Не устанавливать флаг \Seen если он еще
не установлен.
FT_INTERNAL - Возвращаемая строка записана во
внутреннем формате и не может быть
приведена к канонической форме с CRLF.
imap_check
Описание
array imap_check(int imap_stream);
Driver : драйвер
Mailbox : название почтового ящика
Nmsgs : количество сообщений
Recent : количество недавно пришедших
сообщений
imap_close
Описание
int imap_close(int imap_stream, int flags);
imap_createmailbox
Описание
int imap_createmailbox(int imap_stream, string mbox);
imap_delete
Описание
int imap_delete(int imap_stream, int msg_number);
Функция imap_delete() помечает сообщение,
указанное через msg_number на удаление.
Настоящее удаление сообщений
осуществляется функцией imap_expunge().
imap_deletemailbox
Описание
int imap_deletemailbox(int imap_stream, string mbox);
imap_expunge
Описание
int imap_expunge(int imap_stream);
imap_fetchbody
Описание
string imap_fetchbody(int imap_stream, int msg_number, int part_number, flags flags);
FT_UID - msgono является UID'ом
FT_PEEK - не устанавливать флаг \Seen если он не
установлен
FT_UID - возвращаемая строка записана во
внутреннем формате, которое не может быть
канонизированна с помощью CRLF
imap_fetchstructure
Описание
array imap_fetchstructure(int imap_stream, int msg_number);
type
encoding
ifsubtype
subtype
ifdescription
description
ifid
id
lines
bytes
ifparameters
тип
кодировка
подтип интерфейса
подтип
описание интерфейса
описание
идентификатор интерфейса
идентификатор
строки
байты
параметры интерфейса
attribute
value
атрибут
величина
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
Описание
array imap_headers(int imap_stream);
imap_listmailbox
Описание
array imap_listmailbox(int imap_stream, string ref, string pat);
imap_listsubscribed
Описание
array imap_listsubscribed(int imap_stream, string ref, string pattern);
imap_mail_copy
Описание
int imap_mail_copy(int imap_stream, string msglist, string mbox, int flags);
CP_UID - номера в последовательности содержат
UID'ы
CP_MOVE - после копирования удалить сообщения
из текущего почтового ящика
imap_mail_move
Описание
int imap_mail_move(int imap_stream, string msglist, string mbox);
imap_num_msg
Описание
int imap_num_msg(void);
imap_num_recent
Описание
int imap_num_recent(int imap_stream);
imap_open
Описание
int imap_open(string mailbox, string username, string password, int flags);
$mbox = imap_open("{localhost:143}INBOX","user_id","password");
$mbox = imap_open("{localhost/pop3:110}INBOX","user_id","password");
$nntp = imap_open("{localhost/nntp:119}comp.test","","");
OP_READONLY - Открыть почтовый ящик в режим "только
чтение"
OP_ANONYMOUS - Не использовать или не обновлять
.newsrc при использовании новостей
OP_HALFOPEN - Для IMAP и NNTP устанавливает
соединение, но не открывает почтовый ящик
CL_EXPUNGE - Автоматически очищать почтовый
ящик при закрытии
imap_ping
Описание
int imap_ping(int imap_stream);
imap_renamemailbox
Описание
int imap_renamemailbox(int imap_stream, string old_mbox, string new_mbox);
imap_reopen
Описание
int imap_reopen(string imap_stream, string mailbox, string [flags]);
OP_READONLY - Открыть почтовый ящик в режиме
только чтение
OP_ANONYMOUS - Не использовать или не обновлять
.newsrc при работе с новостями
OP_HALFOPEN - Для IMAP и NNTP устанавливает связь но
не открывает почтовый ящик
CL_EXPUNGE - Очищает почтовый ящик при закрытии
imap_subscribe
Описание
int imap_subscribe(int imap_stream, string mbox);
imap_undelete
Описание
int imap_undelete(int imap_stream, int msg_number);
imap_unsubscribe
Описание
int imap_unsubscribe(int imap_stream, string mbox);
imap_qprint
Описание
string imap_qprint(string string);
imap_8bit
Описание
string imap_8bit(string string);
imap_binary
Описание
string imap_binary(string string);
imap_scanmailbox
Описание
array imap_scanmailbox(int imap_stream, string string);
imap_mailboxmsginfo
Описание
array imap_mailboxmsginfo(int imap_stream);
Date : дата сообщения
Driver : драйвер
Mailbox : название почтового ящика
Nmsgs : количество сообщений
Recent : количество недавно пришедших
сообщений
Unread : количество непрочитанных сообщений
Size : размер почтового ящика
imap_rfc822_write_address
Описание
string imap_rfc822_write_address(string mailbox, string host, string personal);
imap_rfc822_parse_adrlist
Описание
string imap_rfc822_parse_adrlist(string address, string default_host);
mailbox - название почтового ящика (имя
пользователя)
host - название хоста
personal - личное имя
adl - путь к домену-источнику
imap_setflag_full
Описание
string imap_setflag_full(int stream, string sequence, string flag, string options);
ST_UID Аргументы последовательности
содержат UIDы вместо номеров
imap_clearflag_full
Описание
string imap_clearflag_full(int stream, string sequence, string flag, string options);
ST_UID Аргументы последовательности
содержат UIDы вместо номеров
imap_sort
Описание
string imap_sort(int stream, int criteria, int reverse, int options);
SORTDATE по дате сообщения
SORTARRIVAL по дате поступления
SORTFROM по полю From
SORTSUBJECT по теме сообщения
SORTTO по полю To
SORTCC по полю cc
SORTSIZE по размеру
опции - битовая маска из
SE_UID Возвратить UIDы вместо номеров
последовательности
SE_NOPREFETCH Не извелекать заранее найденные
сообщения
imap_fetchheader
Описание
stringimap_fetchheader(int imap_stream, int msgno, int flags);
FT_UID msgno является UID'ом
FT_INTERNAL Возвращаемая строка записана во
внутреннем формате без каких-либо попыток
канонизировать ее с помощью CRLF
FT_PREFETCHTEXT RFC822. Текст должен быть
предварительно разобран. Это поможет
избежать эстренных задержек если
требуется извлечь полный текст сообщения (например,
в операции "сохранить в локальном файле")
imap_uid
Описание
string imap_uid(string mailbox, int msgno);
PHP опции и информация
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.
// Послать сообщение в системный лог, если не получено соединение с базой данных
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
Описание
значение
внутреннее имя
1
E_ERROR
2
E_WARNING
4
E_PARSE
8
E_NOTICE
16
E_CORE_ERROR
32
E_CORE_WARNING
getenv
Описание
$ip = getenv("REMOTE_ADDR"); // получить ip номер пользователя
get_cfg_var
Описание
get_current_user
Описание
get_magic_quotes_gpc
Описание
get_magic_quotes_runtime
Описание
getlastmod
Описание
// выводит что-то вроде этого 'Последнее изменение: March 04 1998 20:43:59.'
echo "Последнее изменение: ".date( "F d Y H:i:s.", getlastmod() );
getmyinode
Описание
getmypid
Описание
getmyuid
Описание
phpinfo
Описание
phpversion
Описание
// Печатает что-то вроде этого 'Текущая версия PHP: 3.0rel-dev'
echo "Текущая версия PHP: ".phpversion();
putenv
Описание
putenv("UNIQID=$uniqid");
set_magic_quotes_runtime
Описание
set_time_limit
Описание
Функции работы с Informix
ifx_connect
Описание
int ifx_connect
(string [database],
string [userid], string [password]);
$conn_id = ifx_pconnect (mydb@ol_srv1, "imyself", "mypassword");
ifx_pconnect
Описание
int ifx_pconnect
(string [database],
string [userid], string [password]);
ifx_close
Описание
int ifx_close
(int [link_identifier]);
$conn_id = ifx_connect (mydb@ol_srv, "itsme", "mypassword");
... несколько запросов и др. ...
ifx_close($conn_id);
ifx_query
Описание
int ifx_query
(string query, int [link_identifier],
int [cursor_type], mixed [blobidarray]);
ifx_textasvarchar(1); // использовать режим "text mode" для BLOBов
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
printf("Can't select orders : %s\n<br>%s<br>\n",
ifx_error();
ifx_errormsg();
die;
}
ifx_htmltbl_result($res_id, "border=\"1\");
ifx_free_result($res_id);
// создание идентификаторов 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
Описание
int ifx_prepare
(string query, int conn_id,
int [cursor_def], mixed blobidarray);
ifx_do
Описание
int ifx_do
(int result_id);
ifx_error
Описание
string ifx_error
(void);
ifx_errormsg
Описание
string ifx_errormsg
(int [errorcode]);
printf("%s\n<br>", ifx_errormsg(-201));
ifx_affected_rows
Описание
int ifx_affected_rows
(int result_id);
$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
Описание
array ifx_fetch_row
(int result_id, mixed [position]);
$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
Описание
int ifx_htmltbl_result
(int result_id, string
[html_table_options]);
$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
Описание
array ifx_fieldtypes
(int result_id);
$types = ifx_fieldtypes ($resultid);
if (! isset ($types)) {
... ошибка ...
}
for ($i = 0; $i < count($types); $i++) {
$fname = key($types);
printf("%s :\t type = %s\n", $fname, $types[$fname]);
next($types);
}
Описание
array ifx_fieldproperties
(int result_id);
$properties = ifx_fieldtypes ($resultid);
if (! isset($properties)) {
... ошибка ...
}
for ($i = 0; $i < count($properties); $i++) {
$fname = key ($properties);
printf ("%s:\t type = %s\n", $fname, $properties[$fname]);
next ($properties);
}
ifx_num_fields
Описание
int ifx_num_fields
(int result_id);
ifx_num_rows
Описание
int ifx_num_rows
(int result_id);
ifx_free_result
Описание
int ifx_free_result
(int result_id);
ifx_create_char
Описание
int ifx_create_char
(string param);
ifx_free_char
Описание
int ifx_free_char
(int bid);
ifx_update_char
Описание
int ifx_update_char
(int bid, string
content);
ifx_get_char
Описание
int ifx_get_char
(int bid);
ifx_create_blob
Описание
int ifx_create_blob
(int type, int mode,
string param);
ifx_copy_blob
Описание
int ifx_copy_blob
(int bid);
ifx_free_blob
Описание
int ifx_free_blob
(int bid);
ifx_get_blob
Описание
int ifx_get_blob
(int bid);
ifx_update_blob
Описание
ifx_update_blob
(int bid, string content);
ifx_blobinfile_mode
Описание
void ifx_blobinfile_mode
(int mode);
ifx_textasvarchar
Описание
void ifx_textasvarchar
(int mode);
ifx_byteasvarchar
Описание
void ifx_byteasvarchar
(int mode);
ifx_nullformat
Описание
void ifx_nullformat
(int mode);
ifxus_create_slob
Описание
int ifxus_create_slob
(int mode);
ifx_free_slob
Описание
int ifxus_free_slob
(int bid);
ifxus_close_slob
Описание
int ifxus_close_slob
(int bid);
ifxus_open_slob
Описание
int ifxus_open_slob
(long bid, int mode);
ifxus_tell_slob
Описание
int ifxus_tell_slob
(long bid);
ifxus_seek_slob
Описание
int ifxus_seek_blob
(long bid, int mode, long
offset);
ifxus_read_slob
Описание
int ifxus_read_slob
(long bid, long nbytes);
ifxus_write_slob
Описание
int ifxus_write_slob
(long bid, string
content);
Функции работы с InterBase
ibase_connect
Описание
ibase_connect
( );
ibase_pconnect
Описание
ibase_pconnect
( );
ibase_close
Описание
ibase_close
( );
ibase_query
Описание
ibase_query
( );
ibase_fetch_row
Описание
ibase_fetch_row
( );
ibase_free_result
Описание
ibase_free_result
( );
ibase_prepare
Описание
ibase_prepare
( );
ibase_bind
Описание
ibase_bind
( );
ibase_execute
Описание
ibase_execute
( );
ibase_free_query
Описание
ibase_free_query
( );
ibase_timefmt
Описание
ibase_timefmt
( );
LDAP функции
Введение в LDAP
organization = My Company
organizationalUnit = Accounts
commonName = John Smith
<?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_bind() // анонимный
или идентифицируемый "вход"
|
действия подобные поиску или
обновлению каталога
с выводом результата
|
ldap_close() // "выход"
Дополнительная информация
ldap_add
Описание
(целочисленный link_identifier,
строковое dn, массив записи);
запись["атрибут2"][0] = значение1
запись["атрибут2"][1] = значение2
<?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
Описание
(целое link_identifier, строковое
bind_rdn, строковое bind_password);
ldap_close
Описание
(целое link_identifier);
ldap_connect
Описание
(строковое hostname, целое port);
ldap_count_entries
Описание
(целое link_identifier, целое
result_identifier);
ldap_delete
Описание
(целое link_identifier, строковое
dn);
ldap_dn2ufn
Описание
(строковое dn);
ldap_explode_dn
Описание
(строковое dn, целое
with_attrib);
ldap_first_attribute
Описание
(целое link_identifier, целое
result_entry_identifier, целое ber_identifier);
ldap_first_entry
Описание
(целое link_identifier, целое
result_identifier);
ldap_free_result
Описание
(целое result_identifier);
ldap_get_attributes
Описание
(целое link_identifier, целое
result_entry_identifier);
return_value[0] = первый атрибут
return_value[n] = n-ый атрибут
return_value["attribute"]["count"] = количество
значений атрибута
return_value["attribute"][0] = первое
значение атрибута
return_value["attribute"][i] = i-тое значение
атрибута
// $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_get_dn
Описание
(целое link_identifier, целое
result_entry_identifier);
ldap_get_entries
Описание
(целое link_identifier, целое
result_identifier);
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_get_values
Описание
(целое link_identifier, целое
result_entry_identifier, строковое attribute);
return_value[0] = первое значение атрибута
return_value[i] = i-тое значение атрибута
// $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
Описание
(целое link_identifier, строковое
base_dn, строковое filter);
// $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
Описание
(целое link_identifier, строковое dn,
массив entry);
ldap_next_attribute
Описание
(целое link_identifier, целое
result_entry_identifier, целое ber_identifier);
ldap_next_entry
Описание
(целое link_identifier, целое
result_entry_identifier);
ldap_read
Описание
(целое link_identifier, строка base_dn,
строка filter, массив [attributes]);
ldap_search
Описание
(целое link_identifier, строковое
base_dn, строковое filter, массив [attributes]);
// $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>";
error_reporting (0); // выключает
предупреждение!
$sr = ldap_search ($ds, $dn, $searchfor);
$normerr = error_reporting ($normerr);
if (!$sr) {
print "слишком много
записей!";
} else .....
ldap_unbind
Описание
(целое link_identifier);
Почтовые функции
mail
mail -- шлет почту
Описание
bool mail(string to, string subject, string message, string
additional_headers);
Mail() автоматически посылает сообщение,
содержащееся в message адресату, указанному в
to.
Несколько получателей могут быть указаны в
поле to в виде строки с адресами,
разделенными пробелами.
Пример 1. Посылка почты.
mail("rasmus@lerdorf.on.ca", "Моя тема", "Строка
1\nСтрока 2\nСтрока 3");
mail("ssb@guardian.no", "the subject", $message,
"From: webmaster@$SERVER_NAME\nReply-To: webmaster@$SERVER_NAME\nX-Mailer:
PHP/" . phpversion());
Математические функции
Введение
Математические константы
Константа
Величина
Описание
M_PI
3.14159265358979323846
Значение ¶ (pi)
Abs
Описание
mixed abs
(mixed number);
Acos
Описание
float acos
(float arg);
Asin
Atan
Описание
float atan
(float arg);
Atan2
Описание
float atan2
(float y, float x);
base_convert
Описание
strin base_convert
(string number, int
frombase, int tobase);
$binary = base_convert($hexadecimal, 16, 2);
BinDec
Описание
int bindec
(string binary_string);
Ceil
Описание
int ceil
(float number);
Cos
DecBin
Описание
string decbin
(int number);
DecHex
Описание
string dechex
(int number);
DecOct
Описание
string decoct
(int number);
Exp
Floor
Описание
int floor
(float number);
getrandmax
Описание
int getrandmax
(void );
HexDec
Описание
int hexdec
(string hex_string);
Log
Описание
float log
(float arg);
Log10
Описание
float log10
(float arg);
max
Описание
mixed max
(mixed arg1, mixed arg2, mixed
argn);
min
Описание
mixed min
(mixed arg1, mixed arg2, mixed
argn);
mt_rand
Описание
int mt_rand
([int min],
[int max]);
mt_srand
Описание
void mt_srand
(int seed);
// инициализируется количеством микросекунд с посленей "целой" секунды
mt_srand((double)microtime()*1000000);
$randval = mt_rand();
mt_getrandmax
Описание
int mt_getrandmax
(void );
number_format
Описание
string number_format
(float number, int
decimals, string dec_point, string thousands_sep);
OctDec
Описание
int octdec
(string octal_string);
pi
Описание
double pi
(void );
pow
Описание
float pow
(float base, float exp);
rand
Описание
int rand
([int min],
[int max]);
round
Описание
double round
(double val);
$foo = round( 3.4 ); // $foo == 3.0
$foo = round( 3.5 ); // $foo == 4.0
$foo = round( 3.6 ); // $foo == 4.0
Sin
Sqrt
Описание
float sqrt
(float arg);
srand
Описание
void srand
(int seed);
// инициализируется числом микросекунд с последней "целой" секунды
srand((double)microtime()*1000000);
$randval = rand();
Tan
Возможности PHP3
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
Описание
<?php
$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
or die "unable to open file ($filename)";
?>
exit
Описание
iptcparse
Описание
leak
Описание
pack
Описание
a строка NUL-заполнений
$binarydata = pack(" nvc* ", 0x1234, 0x5678, 65, 66);
Возникающая в результате двоичная
строка будет длиной 6 байтов и
содержать последовательность байтов
0x12, 0x34, 0x78, 0x56, 0x41, 0x42.
register_shutdown_function
Описание
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
Описание
unpack
Описание
$array = unpack("c2chars/nint", $binarydata);
Возникающий в результате массив
будет содержать "chars1", "chars2"
и "int".
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
Описание
$token = md5(uniqid("")); // Не произвольно
$better_token = md5(uniqid(random())); // Намного лучше, труднее подобрать
usleep
Описание
Функции mSQL
msql
Описание
int msql
(string database, string query, int
link_identifier);
msql_affected_rows
Описание
int msql_affected_rows
(int
query_identifier);
msql_close
Описание
int msql_close
(int link_identifier);
msql_connect
Описание
int msql_connect
(string hostname);
msql_create_db
Описание
int msql_create_db
(string database name,
int [ link_identifier ] );
msql_createdb
Описание
int msql_createdb
(string database name, int
[ link_identifier ] );
msql_data_seek
Описание
int msql_data_seek
(int query_identifier,
int row_number);
msql_dbname
Описание
string msql_dbname
(int query_identifier,
int i);
msql_drop_db
Описание
int msql_drop_db
(string database_name, int
link_identifier);
msql_dropdb
Описание
msql_error
Описание
string msql_error
( );
msql_fetch_array
Описание
int msql_fetch_array
(int query_identifier);
msql_fetch_field
Описание
object msql_fetch_field
(int
query_identifier, int field_offset);
msql_fetch_object
Описание
int msql_fetch_object
(int
query_identifier);
msql_fetch_row
Описание
array msql_fetch_row
(int query_identifier);
msql_fieldname
Описание
string msql_fieldname
(int query_identifier,
int field);
msql_field_seek
Описание
int msql_field_seek
(int query_identifier,
int field_offset);
msql_fieldtable
Описание
int msql_fieldtable
(int query_identifier,
int field);
msql_fieldtype
Описание
string msql_fieldtype
(int query_identifier,
int i);
msql_fieldflags
Описание
string msql_fieldflags
(int
query_identifier, int i);
msql_fieldlen
Описание
int msql_fieldlen
(int query_identifier, int
i);
msql_free_result
Описание
int msql_free_result
(int query_identifier);
msql_freeresult
Описание
msql_list_fields
Описание
int msql_list_fields
(string database,
string tablename);
msql_listfields
Описание
msql_list_dbs
Описание
int msql_list_dbs
(void);
msql_listdbs
Описание
msql_list_tables
Описание
int msql_list_tables
(string database);
msql_listtables
Описание
msql_num_fields
Описание
int msql_num_fields
(int query_identifier);
msql_num_rows
Описание
int msql_num_rows
(int query_identifier);
msql_numfields
msql_numrows
msql_pconnect
Описание
int msql_pconnect
(string hostname);
msql_query
Описание
int msql_query
(string query, int
link_identifier);
msql_regcase
Описание
msql_result
Описание
int msql_result
(int query_identifier, int
i, mixed field);
msql_select_db
Описание
int msql_select_db
(string database_name,
int link_identifier);
msql_selectdb
Описание
msql_tablename
Описание
string msql_tablename
(int query_identifier,
int field);
<?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_rows
Описание
int mysql_affected_rows
(int [link_identifier]
);
mysql_close
Описание
int mysql_close
(int [link_identifier]
);
mysql_connect
Описание
int mysql_connect
(string [hostname]
[:port] , string [username]
, string [password] );
mysql_create_db
Описание
int mysql_create_db
(string database name,
int [link_identifier] );
mysql_data_seek
Описание
int mysql_data_seek
(int result_identifier,
int row_number);
mysql_db_query
Описание
int mysql_db_query
(string database, string
query, int [link_identifier] );
mysql_drop_db
Описание
int mysql_drop_db
(string database_name, int
[link_identifier] );
mysql_errno
Описание
int mysql_errno
(int [link_identifier]
);
<?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
Описание
string mysql_error
(int [link_identifier]
);
<?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_fetch_array
Описание
array mysql_fetch_array
(int result);
select t1.f1 as foo t2.f1 as bar from t1, t2
<?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_field
Описание
object mysql_fetch_field
(int result, int [field_offset]
);
mysql_fetch_lengths
Описание
array mysql_fetch_lengths
(int result);
mysql_fetch_object
Описание
object mysql_fetch_object
(int result);
<?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_row
Описание
array mysql_fetch_row
(int result);
mysql_field_name
Описание
string mysql_field_name
(int result, int
field_index);
mysql_field_seek
Описание
int mysql_field_seek
(int result, int
field_offset);
mysql_field_table
Описание
string mysql_field_table
(int result, int
field_offset);
mysql_field_type
Описание
string mysql_field_type
(int result, int
field_offset);
<?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_field_flags
Описание
string mysql_field_flags
(int result, int
field_offset);
mysql_field_len
Описание
int mysql_field_len
(int result, int
field_offset);
mysql_free_result
Описание
int mysql_free_result
(int result);
mysql_insert_id
Описание
int mysql_insert_id
(int [link_identifier]
);
mysql_list_fields
Описание
int mysql_list_fields
(string database_name,
string table_name, int [link_identifier] );
mysql_list_dbs
Описание
int mysql_list_dbs
(int [link_identifier]
);
mysql_list_tables
Описание
int mysql_list_tables
(string database, int [link_identifier]
);
mysql_num_fields
Описание
int mysql_num_fields
(int result);
mysql_num_rows
Описание:
int mysql_num_rows
(int result);
mysql_pconnect
Описание
int mysql_pconnect
(string [hostname]
[:port] , string [username]
, string [password] );
mysql_query
Описание
int mysql_query
(string query, int [link_identifier]
);
mysql_result
Описание
int mysql_result
(int result, int row, mixed
field);
mysql_select_db
Описание
int mysql_select_db
(string database_name,
int [link_identifier] );
mysql_tablename
Описание
string mysql_tablename
(int result, int i);
<?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
Описание
int sybase_affected_rows
(int [link_identifier] );
sybase_close
Описание
int sybase_close
(int link_identifier);
sybase_connect
Описание
int sybase_connect
(string servername, string username, string
password);
sybase_data_seek
Описание
int sybase_data_seek
(int result_identifier, int row_number);
sybase_fetch_array
Описание
int sybase_fetch_array
(int result);
sybase_fetch_field
Description
object sybase_fetch_field
(int result, int field_offset);
sybase_fetch_object
Описание
int sybase_fetch_object
(int result);
sybase_fetch_row
Описание
array sybase_fetch_row
(int result);
sybase_field_seek
Описание
int sybase_field_seek
(int result, int field_offset);
sybase_free_result
Описание
int sybase_free_result
(int result);
sybase_num_fields
Описание
int sybase_num_fields
(int result);
sybase_num_rows
Описание
int sybase_num_rows
(string result);
sybase_pconnect
Описание
int sybase_pconnect
(string servername, string username, string
password);
sybase_query
Описание
int sybase_query
(string query, int link_identifier);
sybase_result
Описание
int sybase_result
(int result, int i, mixed field);
sybase_select_db
Описание
int sybase_select_db
(string database_name, int link_identifier);
Сетевые функции
fsockopen
Описание
int fsockopen
(string hostname, int port, int
[errno], string [errstr]);
$fp = fsockopen("www.php.net", 80, &$errno, &$errstr);
if(!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
fputs($fp,"GET / HTTP/1.0\n\n");
while(!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
set_socket_blocking
Описание
int set_socket_blocking
(int socket
descriptor, int mode);
gethostbyaddr
Описание
string gethostbyaddr
(string ip_address);
gethostbyname
Описание
string gethostbyname
(string hostname);
gethostbynamel
Описание
array gethostbynamel
(string hostname);
checkdnsrr
Описание
int checkdnsrr
(string host, string [type]);
getmxrr
Описание
int getmxrr
(string hostname, array mxhosts,
array [weight]);
openlog
Описание
int openlog
(string ident, int option, int
facility);
syslog
Описание
int syslog
(int priority, string message);
closelog
Описание
int closelog
(void);
debugger_on
Описание
int debugger_on
(string address);
debugger_off
Описание
int debugger_off
(void);
Функции ODBC
odbc_autocommit
Описание
int odbc_autocommit
(int connection_id, int
[ OnOff ]);
odbc_binmode
Описание
int odbc_binmode
(int result_id, int mode);
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_close
Описание
void odbc_close
(int connection_id);
odbc_close_all
Описание
void odbc_close_all
(void);
odbc_commit
Описание
int odbc_commit
(int connection_id);
odbc_connect
Описание
int odbc_connect
(string dsn, string user,
string password);
odbc_cursor
Описание
string odbc_cursor
(int result_id);
odbc_do
Описание
string odbc_do
(int conn_id, string query);
odbc_exec
Описание
int odbc_exec
(int connection_id, string
query_string);
odbc_execute
Описание
int odbc_execute
(int result_id, array [
parameters_array ]);
odbc_fetch_into
Описание
int odbc_fetch_into
(int result_id, int [
rownumber ], array result_array);
odbc_fetch_row
Описание
int odbc_fetch_row
(int result_id, int [
row_number ]);
odbc_field_name
Описание
string odbc_fieldname
(int result_id, int
field_number);
odbc_field_type
Описание
string odbc_field_type
(int result_id, int
field_number);
odbc_field_len
Описание
string odbc_field_type
(int result_id, int
field_number);
odbc_free_result
Описание
int odbc_free_result
(int result_id);
odbc_longreadlen
Описание
int odbc_longreadlen
(int result_id, int
length);
odbc_num_fields
Описание
int odbc_num_fields
(int result_id);
odbc_pconnect
Описание
int odbc_pconnect
(string dsn, string user,
string password);
odbc_prepare
Описание
int odbc_prepare
(int connection_id, string
query_string);
odbc_num_rows
Описание
int odbc_num_rows
(int result_id);
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_all
Описание
int odbc_result_all
(int result_id, string [
format ]);
odbc_rollback
Описание
int odbc_rollback
(int connection_id);
Функции Oracle
Ora_Bind
Описание
int ora_bind
(int cursor, string PHP
variable name, string SQL parameter name, int length, int [
type ]);
<?php
ora_parse($curs, "declare tmp INTEGER; begin tmp := :in; :out := tmp; :x := 7.77; end;");
ora_bind($curs, "result", ":x", $len, 2);
ora_bind($curs, "input", ":in", 5, 1);
ora_bind($curs, "output", ":out", 5, 2);
$input = 765;
ora_exec($curs);
echo "Result: $result<BR>Out: $output<BR>In: $input";
?>
Ora_Close
Описание
int ora_close
(int cursor);
Ora_ColumnName
Описание
string Ora_ColumnName
(int cursor, int
column);
Ora_ColumnType
Описание
string Ora_ColumnType
(int cursor, int
column);
"VARCHAR2"
"VARCHAR"
"CHAR"
"NUMBER"
"LONG"
"LONG RAW"
"ROWID"
"DATE"
"CURSOR"
Ora_Commit
Описание
int ora_commit
(int conn);
Ora_CommitOff
Описание
int ora_commitoff
(int conn);
Ora_CommitOn
Описание
int ora_commiton
(int conn);
Ora_Error
Описание
string Ora_Error
(int cursor);
Ora_ErrorCode
Описание
int Ora_ErrorCode
(int cursor);
Ora_Exec
Описание
int ora_exec
(int cursor);
Ora_Fetch
Описание
int ora_fetch
(int cursor);
Ora_GetColumn
Описание
mixed ora_getcolumn
(int cursor, mixed
column);
Ora_Logoff
Описание
int ora_logoff
(int connection);
Ora_Logon
Описание
int ora_logon
(string user, string
password);
$conn = Ora_Logon("user
@TNSNAME
", "pass");
Ora_Open
Описание
int ora_open
(int connection);
Ora_Parse
Описание
int ora_parse
(int cursor_ind, string
sql_statement, int defer);
Ora_Rollback
Описание
int ora_rollback
(int connection);
Функции PDF
PDF_get_info
Описание
info pdf_get_info
(string filename);
<?php $info = PDF_get_info();
PDF_set_info_creator($info, "Name of Author") ?>
PDF_set_info_creator
Описание
void pdf_set_info_creator
(info info, string
creator);
PDF_set_info_title
Описание
void pdf_set_info_title
(info info, string
title);
PDF_set_info_subject
Описание
void pdf_set_info_subject
(info info, string
subject);
PDF_set_info_keywords
Описание
void pdf_set_info_keywords
(info info,
string keywords);
PDF_set_info_author
Описание
void pdf_set_info_author
(info info, string
author);
PDF_open
Описание
int pdf_open
(int descripterfile, int info);
PDF_close
Описание
void pdf_close
(int pdf document);
PDF_begin_page
Описание
void pdf_begin_page
(int pdf document,
double height, double width);
PDF_end_page
Описание
void pdf_end_page
(int pdf document);
PDF_show
Описание
void pdf_show
(int pdf document, string
text);
PDF_show
Описание
void pdf_show_xy
(int pdf document, string
text, double x-koor, double y-koor);
PDF_set_font
Описание
void pdf_set_font
(int pdf document, string
font name, double size, string encoding);
PDF_set_leading
Описание
void pdf_set leading
(int pdf document,
double distance);
PDF_set_text_rendering
Описание
void pdf_set_text_rendering
(int pdf
document, int mode);
PDF_set_horiz_scaling
Описание
void pdf_set_horiz_scaling
(int pdf
document, double scale);
PDF_set_text_rise
Описание
void pdf_set_text_rise
(int pdf document,
double value);
PDF_set_text_matrix
Описание
void pdf_set_text_matrix
(int pdf document,
array matrix);
PDF_set_text_pos
Описание
void pdf_set_text_pos
(int pdf document,
double x-koor, double y-koor);
PDF_set_char_spacing
Описание
void pdf_set_char_spacing
(int pdf document,
double space);
PDF_set_word_spacing
Описание
void pdf_set_word_spacing
(int pdf document,
double space);
PDF_continue_text
Описание
void pdf_continue_text
(int pdf document,
string text);
PDF_stringwidth
Описание
double pdf_stringwidth
(int pdf document,
string text);
PDF_save
Описание
void pdf_save
(int pdf document);
PDF_restore
Описание
void pdf_restore
(int pdf document);
<?php PDF_save($pdf);
// делает все виды вращений, трансформаций...
PDF_restore($pdf) ?>
PDF_translate
Описание
void pdf_translate
(int pdf document, double
x-koor, double y-koor);
PDF_scale
Описание
void pdf_scale
(int pdf document, double
x-scale, double y-scale);
PDF_rotate
Описание
void pdf_rotate
(int pdf document, double
angle);
PDF_setflat
Описание
void pdf_setflat
(int pdf document, double
value);
PDF_setlinejoin
Описание
void pdf_setlinejoin
(int pdf document, long
value);
PDF_setlinecap
Описание
void pdf_setlinecap
(int pdf document, int
value);
PDF_setmiterlimit
Описание
void pdf_setmiterlimit
(int pdf document,
double value);
PDF_setlinewidth
Описание
void pdf_setlinewidth
(int pdf document,
double width);
PDF_setdash
Описание
void pdf_setdash
(int pdf document, double
white, double black);
PDF_moveto
Описание
void pdf_moveto
(int pdf document, double
x-koor, double y-koor);
PDF_curveto
Описание
void pdf_curveto
(int pdf document, double
x1, double y1, double x2, double y2, double x3, double y3);
PDF_lineto
Описание
void pdf_lineto
(int pdf document, double
x-koor, double y-koor);
PDF_circle
Описание
void pdf_circle
(int pdf document, double
x-koor, double y-koor, double radius);
PDF_arc
Описание
void pdf_arc
(int pdf document, double
x-koor, double y-koor, double radius, double start, double end);
PDF_rect
Описание
void pdf_rect
(int pdf document, double
x-koor, double y-koor, double width, double height);
PDF_closepath
PDF_stroke
Описание
void pdf_stroke
(int pdf document);
PDF_closepath_stroke
Описание
void pdf_closepath_stroke
(int pdf
document);
PDF_fill
Описание
void pdf_fill
(int pdf document);
PDF_fill_stroke
Описание
void pdf_fill_stroke
(int pdf document);
PDF_closepath_fill_stroke
Описание
void pdf_closepath_fill_stroke
(int pdf
document);
PDF_endpath
Описание
void pdf_endpath
(int pdf document);
PDF_clip
Описание
void pdf_clip
(int pdf document);
PDF_setgray_fill
Описание
void pdf_setgray_fill
(int pdf document,
double value);
PDF_setgray_stroke
Описание
void pdf_setgray_stroke
(int pdf document,
double gray value);
PDF_setgray
Описание
void pdf_setgray
(int pdf document, double
gray value);
PDF_setrgbcolor_fill
Описание
void pdf_setrgbcolor_fill
(int pdf document,
double red value, double green value, double blue value);
PDF_setrgbcolor_stroke
Описание
void pdf_setrgbcolor_stroke
(int pdf
document, double red value, double green value, double blue value);
PDF_setrgbcolor
Описание
void pdf_setrgbcolor
(int pdf document,
double red value, double green value, double blue value);
PDF_add_outline
Описание
void pdf_add_outline
(int pdf document,
string text);
PDF_set_transition
Описание
void pdf_set_transition
(int pdf document,
int transition);
PDF_set_duration
Описание
void pdf_set_duration
(int pdf document,
double duration);
Функции PostgreSQL
Postmaster
PHP
Статус
postmaster &
pg_connect("", "",
"", "", "dbname");
OK
postmaster -i &
pg_connect("", "",
"", "", "dbname");
OK
postmaster &
pg_connect("localhost",
"", "", "", "dbname");
Невозможно соедениться
с сервером PostgreSQL: сбой connectDB(): Запущен
ли postmaster и разрешено ли соединение TCP/IP (с
флагом -i) на 'localhost' порт '5432'? в /path/to/file.php3
с строке 20.
postmaster -i &
pg_connect("localhost",
"", "", "", "dbname");
OK
<?php
$database = pg_Connect ("", "", "", "", "jacarta");
pg_exec ($database, "begin");
$oid = pg_locreate ($database);
echo ("$oid\n");
$handle = pg_loopen ($database, $oid, "w");
echo ("$handle\n");
pg_lowrite ($handle, "gaga");
pg_loclose ($handle);
pg_exec ($database, "commit")
pg_exec ($database, "end")
?>
pg_Close
pg_Close -- закрывает соединение PostgreSQL
Описание
bool pg_close
(int connection);
pg_cmdTuples
pg_cmdTuples -- возвращает число вызванных tuples
Описание
int pg_cmdtuples
(int result_id);
<?php
$result = pg_exec($conn, "INSERT INTO verlag VALUES ('Autor')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples . " <- cmdtuples affected.";
?>
pg_Connect
pg_Connect -- открывает соединение
Описание
int pg_connect
(string host, string port, string options, string
tty, string dbname);
pg_DBname
pg_DBname -- имя базы данных
Описание
string pg_dbname
(int connection);
pg_ErrorMessage
pg_ErrorMessage -- сообщение об ошибке
Описание
string pg_errormessage
(int connection);
pg_Exec
pg_Exec -- запускает запрос
Описание
int pg_exec
(int connection, string query);
pg_Fetch_Array
pg_Fetch_Array -- возвращает запись как массив
Описание
array pg_fetch_array
(int result, int row);
<?php
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
echo "An error occured.\n";
exit;
}
$arr = pg_fetch_array ($result, 0);
echo $arr[0] . " <- array\n";
$arr = pg_fetch_array ($result, 1);
echo $arr["author"] . " <- array\n";
?>
pg_Fetch_Object
pg_Fetch_Object -- возвращает запись как объект
Описание
object pg_fetch_object
(int result, int row);
<?php
$database = "verlag";
$db_conn = pg_connect ("localhost", "5432", "", "", $database);
if (!$db_conn): ?>
<H1>Ошибка соединения с базой <? echo $database ?></H1> <?
exit;
endif;
$qu = pg_exec ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // postgres необходим счетчик записей, в отличие от других СУБД
while ($data = pg_fetch_object ($qu, $row)):
echo $data->autor." (";
echo $data->jahr ."): ";
echo $data->titel."<BR>";
$row++;
endwhile; ?>
<PRE><?
$fields[] = Array ("autor", "Author");
$fields[] = Array ("jahr", " Year");
$fields[] = Array ("titel", " Title");
$row= 0; // postgres необходим счетчик записей, в отличие от других
while ($data = pg_fetch_object ($qu, $row)):
echo "----------\n";
reset ($fields);
while (list (,$item) = each ($fields)):
echo $item[1].": ".$data->$item[0]."\n";
endwhile;
$row++;
endwhile;
echo "----------\n"; ?>
</PRE>
pg_Fetch_Row
pg_Fetch_Row -- получает запись как нумерованный
массив
Описание
array pg_fetch_row
(int result, int row);
<?php
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
echo "Произошла ошибка.\n";
exit;
}
$row = pg_fetch_row ($result, 0);
echo $row[0] . " <- row\n";
$row = pg_fetch_row ($result, 1);
echo $row[0] . " <- row\n";
$row = pg_fetch_row ($result, 2);
echo $row[1] . " <- row\n";
?>
pg_FieldIsNull
pg_FieldIsNull -- Проверяет поле на нулевое
значение
Описание
int pg_fieldisnull
(int result_id, int row, mixed field);
pg_FieldName
pg_FieldName -- возвращает имя поля
Описание
string pg_fieldname
(int result_id, int field_number);
pg_FieldNum
pg_FieldNum -- возвращает номер столбца
Описание
int pg_fieldnum
(int result_id, string field_name);
pg_FieldPrtLen
pg_FieldPrtLen -- Возвращает печатную длину
Описание
int pg_fieldprtlen
(int result_id, int row_number, string
field_name);
pg_FieldSize
pg_FieldSize -- возвращает внутренний размер
хранения именованного поля
Описание
int pg_fieldsize
(int result_id, string field_name);
pg_FieldType
pg_FieldType -- возвращает тип соответствующего
именованного поля
Описание
int pg_fieldtype
(int result_id, int field_number);
pg_FreeResult
pg_FreeResult -- освобождает память
Описание
int pg_freeresult
(int result_id);
pg_GetLastOid
pg_GetLastOid -- возвращает идентификатор
последнего объекта
Описание
int pg_getlastoid
(int result_id);
pg_Host
pg_Host -- возвращает имя узла
Описание
string pg_host
(int connection_id);
pg_loclose
pg_loclose -- закрывает большой объект
Описание
void pg_loclose
(int fd);
pg_locreate
pg_locreate -- создает большой объект
Описание
int pg_locreate
(int conn);
pg_loopen
pg_loopen -- открывает большой объект
Описание
int pg_loopen
(int conn, int objoid, string mode);
pg_loread
pg_loread -- считывает большой объект
Описание
string pg_loread
(int fd, int len);
pg_loreadall
pg_loreadall -- считывает весь большой объект
Описание
void pg_loreadall
(int fd);
pg_lounlink
pg_lounlink -- удаляет большой объект
Описание
void pg_lounlink
(int conn, int lobjid);
pg_lowrite
pg_lowrite -- записывает в большой объект
Описание
int pg_lowrite
(int fd, string buf);
pg_NumFields
pg_NumFields -- возвращает количество полей
Описание
int pg_numfields
(int result_id);
pg_NumRows
pg_NumRows -- возвращает число записей
Описание
int pg_numrows
(int result_id);
pg_Options
pg_Options -- возвращает настройки
Описание
string pg_options
(int connection_id);
pg_pConnect
pg_pConnect -- устанавливает устойчивое
соединение с базой данных
Описание
int pg_pconnect
(string host, string port, string options, string
tty, string dbname);
pg_Port
pg_Port -- возвращает номер порта
Описание
int pg_port
(int connection_id);
pg_Result
pg_Result -- возвращает данные из идентификатора
результата
Описание
mixed pg_result
(int result_id, int row_number, mixed fieldname);
pg_tty
pg_tty -- возвращает имя tty
Описание
string pg_tty
(int connection_id);
Функции регулярных выражений
ereg
ereg -- парное значение регулярного выражения
Описание
int ereg
(string pattern, string string, array [regs]);
if ( ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs ) ) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Invalid date format: $date";
}
ereg_replace
ereg_replace -- заменяет регулярное выражение
Описание
string ereg_replace
(string pattern, string replacement, string
string);
См. также ereg(), eregi(),
и eregi_replace().
$string = "This is a test";
echo ereg_replace( " is", " was", $string );
echo ereg_replace( "( )is", "\\1was", $string );
echo ereg_replace( "(( )is)", "\\2was", $string );
eregi
eregi -- нечувствительный к регистру поиск
парных значений в регулярных выражениях
Описание
int eregi
(string pattern, string string, array [regs]);
eregi_replace
eregi_replace -- замена регулярного выражения без
учета регистра
Описание
string eregi_replace
(string pattern, string replacement, string
string);
split
split -- разбивает строку на массив по
регулярному выражению
Описание
array split
(string pattern, string string, int [limit]);
$passwd_list = split( ":", $passwd_line, 5 );
sql_regcase
sql_regcase -- подготавливает регулярное
выражение к поиску без учета регистра
Описание
string sql_regcase
(string string);
Будет выдано
echo sql_regcase( "Foo bar" );
[Ff][Oo][Oo][ ][Bb][Aa][Rr]
.
Функции семафоров и разделяемой памяти
sem_get
Описание
int sem_get
(int key, int [
max_acquire ] , int [ perm ] );
sem_acquire
Описание
int sem_acquire
(int sem_identifier);
sem_release
Описание
int sem_release
(int sem_identifier);
shm_attach
Описание
int shm_attach
(long key, long memsize, long
perm);
shm_detach
Описание
int shm_detach
(long id);
shm_put_var
Описание
int shm_put_var
(int id, long variable_key,
mixed variable);
shm_put_var
Описание
mixed shm_get_var
(int id, long
variable_key);
shm_remove_var
Описание
int shm_remove_var
(int id, long
variable_key);
shm_remove
Описание
int shm_remove
(long key);
Solid (надёжные) функции
solid_close
solid_close -- закрывает Solid-соединение
Описание
solid_connect
solid_connect -- соединяет с Solid-источником данных
Описание
solid_exec
solid_exec -- запускает Solid-запрос
Описание
solid_fetchrow
solid_fetchrow -- выдяляет строку данных из Solid-запроса
Descriptio
solid_fieldname
solid_fieldname -- возвращает имя столбца из Solid-запроса
Описание
solid_fieldnum
solid_fieldnum -- возвращает номер столбца из Solid-запроса
Описание
solid_freeresult
solid_freeresult -- освобождает память результата
Solid-запроса
Описание
solid_numfields
solid_numfields -- возвращат число полей в Solid-результате
Описание
solid_numrows
solid_numrows -- возвращает число записей в Solid-результате
Описание
solid_result
solid_result -- возвращает данные из Solid-результата
Описание
Функции SNMP
snmpget
Описание
int snmpget
(string hostname, string
community, string object_id);
snmpwalk
Описание
array snmpwalk
(string hostname, string
community, string object_id);
$a = snmpwalk("127.0.0.1", "public", "");
for($i=0; $i<count($a); $i++) {
echo $a[$i];
}
Строковые функции
AddSlashes
AddSlashes -- выделяет строку обратной чертой
Описание
string addslashes
(string str);
Chop
Chop -- удаляет повторяющиеся пробелы
Описание
string chop
(string str);
$trimmed = Chop($line);
Chr
Chr -- возвращает специалный символ
Описание
string chr
(int ascii);
Эта функция дополняет функцию ord().
См. также sprintf() с
форматирующей строкой %c.
$str .= chr(27); /* добавляет символ ESC в конец $str */
/* Часто это более полезно */
$str = sprintf("The string ends in escape: %c", 27);
chunk_split
chunk_split -- разбивает строку на мелкие части
Описание
string chunk_split
(string string, int [chunklen] ,
string [end] );
Эта функция значительно быстрее, чем ereg_replace().
# format $data using RFC 2045 semantics
$new_string = chunk_split(base64_encode($data));
convert_cyr_string
convert_cyr_string -- переводит из одной русской
кодовой таблицы в другую
Описание
string convert_cyr_string
(string str, string from, string to);
crypt
crypt -- шифрует строку методом DES
Описание
string crypt
(string str, string [salt]);
echo
echo -- выводит одно или более строк
Описание
echo
(string arg1, string [argn]...);
echo "Hello World";
explode
explode -- разбивает строку на строки
Описание
array explode
(string separator, string string);
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
flush
flush -- освобождает буферы вывода
Описание
void flush
(void);
get_meta_tags
get_meta_tags -- Извлекает все содержимое
атрибутов тег meta из файла и возвращает в
массиве
Описание
array get_meta_tags
(string filename, int [use_include_path]);
(обратите внимание на окончание строк - PHP3
использует интеллектуальную функцию для
обработки входного потока, поэтому файлы MAC
не будут работать на Unox).
<meta name="author" content="name">
<meta name="tags" content="php3 documentation">
</head> <!-- parsing stops here -->
htmlspecialchars
htmlspecialchars -- Переводит специальные символы в
коды HTML
Описание
string htmlspecialchars
(string string);
htmlentities
htmlentities -- Переводит все возможные символы в
коды HTML.
Описание
string htmlentities
(string string);
implode
implode -- Объединяет массив элементов в строку
Описание
string implode
(array pieces, string glue);
$colon_separated = implode($array, ":");
join
join -- Присоединяет элементы массива к строке
Описание
string join
(array pieces, string glue);
ltrim
ltrim -- Удаляет пробелы из начала строки.
Описание
string ltrim
(string str);
md5
md5 -- Вычисляет значение md5 для строки
Описание
string md5
(string str);
nl2br
nl2br -- Переводит символы новой строки в HTML-тег
разрыва строки
Описание
string nl2br
(string string);
Ord
Ord -- Возвращает ASCII-значение символа
Описание
int ord
(string string);
if (ord($str) == 10) {
echo("The first character of \$str is a line feed.\n");
}
parse_str
parse_str -- Разбирает строку на переменные
Описание
void parse_str
(string str);
$str = "first=value&second[]=this+works&second[]=another";
parse_str($str);
echo $first; /* prints "value" */
echo $second[0]; /* prints "this works" */
echo $second[1]; /* prints "another" */
print
print -- выводит строку
Описание
print
(string arg);
printf
printf -- выводит форматированную строку
Описание
int printf
(string format, mixed [args]...);
quoted_printable_decode
quoted_printable_decode -- переводит строку в кавычках
в 8-битную строку
Описание
string quoted_printable_decode
(string str);
QuoteMeta
QuoteMeta -- выделяет meta символы
Описание
int quotemeta
(string str);
. \\ + * ? [ ^ ] ( $ )
rawurldecode
rawurldecode -- декодирует URL-кодированную строку
Описание
string rawurldecode
(string str);
foo%20bar%40baz
будет заменена на
foo bar@baz
rawurlencode
rawurlencode -- URL-кодирует строку в соответствии с
RFC1738
Описание
string rawurlencode
(string str);
-_.
заменяются на знак (%) с последующими
двумя шестнадцатиричными цифрами. Это
кодирование, описанное в RFC1738, применяется
для защиты символов от интерпритации их как
особых разделителей URL, и для защиты URL от
искажения системами передачи данных с
переводом символов (как некоторые e-mail
системы). Например, если вы хотите включить
пароль в ftp URL:
Или, если передаете информацию в качестве
части URL:
echo '<A HREF="ftp://user:', rawurlencode ('foo @+%/'),
'@ftp.my.com/x.txt">';
echo '<A HREF="http://x.com/department_list_script/',
rawurlencode ('sales и marketing/Miami'), '">';
setlocale
setlocale -- Устанавливает локальную информацию
Описание
string setlocale
(string category, string locale);
soundex
soundex -- вычисляет soundex ключ для строки
Описание
string soundex
(string str);
soundex("Euler") == soundex("Ellery") == 'E460';
soundex("Gauss") == soundex("Ghosh") == 'G200';
soundex("Knuth") == soundex("Kant") == 'H416';
soundex("Lloyd") == soundex("Ladd") == 'L300';
soundex("Lukasiewicz") == soundex("Lissajous") == 'L222';
sprintf
sprintf -- возвращает форматированную строку
Описание
sprintf
(string format, mixed [args]...);
% - символ процента. Аргумент не
требуется.
b - аргумент трактуется как integer
и представляется как двоичное число.
c - аргумент трактуется как integer
и представляется как символ с ASCII
значением.
d - аргумент трактуется как integer
и представляется как десятичное
число.
f - аргумент трактуется как double
и представляется как число с
плавающей точкой.
o - аргумент трактуется как integer
и представляется как восьмиричное
число.
s - аргумент трактуется и
представляется как строка.
x - аргумент трактуется как integer
и представляется как
шестнадцатиричное число (с буквами в
нижнем регистре).
X - аргумент трактуется как integer
и представляется как
шестнадцатиричное число (с буквами в
верхнем регистре).
Примеры
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$formatted = sprintf ("%01.2f", $money);
// echo $formatted will output "123.10"
strchr
strchr -- Находит первое появление символа.
Описание
string strchr
(string haystack, string needle);
strcmp
strcmp -- Двоичное сравнение строк (безопасное)
Описание
int strcmp
(string str1, string str2);
strcspn
strcspn -- находит длину нечального сегмента, не
совпадающего с маской
Описание
int strcspn
(string str1, string str2);
StripSlashes
StripSlashes -- удаляет символы \ из строки
Описание
string stripslashes
(string str);
strlen
strlen -- Возвращает длину строки
Описание
int strlen
(string str);
strrpos
strrpos -- Находит позицию последего появления
символа в строке
Описание
int strrpos
(string haystack, char needle);
strpos
strpos -- Находит позицию первого появления
строки.
Описание
int strpos
(string haystack, string needle, int [offset]);
strrchr
strrchr -- Находит последнее появление символа
в строке
Описание
string strrchr
(string haystack, string needle);
// получение последней директории в $PATH
$dir = substr( strrchr( $PATH, ":" ), 1 );
// получение всего после последней новой строки
$text = "Line 1\nLine 2\nLine 3";
$last = substr( strrchr( $text, 10 ), 1 );
strrev
strrev -- Переворачивает строку
Описание
string strrev
(string string);
strspn
strspn -- Находит длину начального сегмента,
отвечающего маске
Описание
int strspn
(string str1, string str2);
strstr
strstr -- Находит первое появление строки
Описание
string strstr
(string haystack, string needle);
strtok
strtok -- Разбивает строку
Описание
string strtok
(string arg1, string arg2);
$string = "This is an example string";
$tok = strtok($string," ");
while($tok) {
echo "Word=$tok<br>";
$tok = strtok(" ");
}
strtolower
strtolower -- Переводит строку в нижний регистр
Описание
string strtolower
(string str);
strtoupper
strtoupper -- Переводит строку в верхний регистр
Описание
string strtoupper
(string string);
str_replace
str_replace -- Заменяет все вхождения строки на
указанную строку
Описание
string str_replace
(string needle, string str, string haystack);
$bodytag = str_replace("%body%", "black", "<body text=%body%>");
strtr
strtr -- Переводит определенные символы
Описание
string strtr
(string str, string from, string to);
$addr = strtr($addr, "дец", "aao");
substr
substr -- Возвращает часть строки
Описание
string substr
(string string, int start, int [length]);
$rest = substr("abcdef", 1); // вернет "bcdef"
$rest = substr("abcdef", 1, 3); // вернет "bcd"
$rest = substr("abcdef", -1); // вернет "f"
$rest = substr("abcdef", -2); // вернет "ef"
$rest = substr("abcdef", -3, 1); // вернет "d"
$rest = substr("abcdef", -1, -1); // вернет "bcde"
trim
trim -- Обрезает пробелы с начала и с конца
строки
Описание
string trim
(string str);
ucfirst
ucfirst -- Переводит первый символ строки в
верхний регистр
Описание
string ucfirst
(string str);
ucwords
ucwords -- Переводит в верхний регистр первые
символы каждого слова в строке
Описание
string ucwords
(string str);
Функции URL
parse_url
parse_url -- обрабатывает URL и возвращает его
компоненты
Описание
array parse_url
(string url);
urldecode
urldecode -- декодирует URL-закодированную строку
Описание
string urldecode
(string str);
$a = split ('&', $querystring);
$i = 0;
while ($i < count ($a)) {
$b = split ('=', $a [$i]);
echo 'Value for parameter ', htmlspecialchars (urldecode ($b [0])),
' is ', htmlspecialchars (urldecode ($b [1])), "<BR>";
$i++;
}
urlencode
urlencode -- кодирует URL строку
Описание
string urlencode
(string str);
echo '<A HREF="mycgi?foo=', urlencode ($userinput), '">';
base64_encode
base64_encode -- кодирует данные в кодировке MIME base64
Описание
string base64_encode
(string data);
base64_decode
base64_decode -- декодирует данные, закодированные
в кодировке MIME base64
Описание
string base64_decode
(string encoded_data);
Функции переменных
gettype
gettype -- Получает тип переменной.
Описание
string gettype
(mixed var);
См. также: settype().
intval
intval -- Возвращает целочисленное значение
переменной.
Описание
int intval
(mixed var, int [base]);
doubleval
doubleval -- Получает значение переменной в
формате double.
Описание
double doubleval
(mixed var);
empty
empty -- определяет, присвоено ли у переменной
какое либо значение
Описание
int empty
(mixed var);
is_array
is_array -- Определяет, входит ли переменная в
массив.
Описание
int is_array
(mixed var);
is_double
is_double -- Определяет, является ли переменная
типа double.
Описание
int is_double
(mixed var);
is_float
is_float -- Определяет, является ли переменная
типа float.
Описание
int is_float
(mixed var);
is_int
is_int -- Определяет, является ли переменная
типа integer.
Описание
int is_int
(mixed var);
is_integer
is_integer -- Определяет, является ли переменная
типа integer.
Описание
int is_integer
(mixed var);
is_long
is_long -- Определяет, является ли переменная
типа integer.
Описание
int is_long
(mixed var);
is_object
is_object -- Определяет, является ли переменная
типа object.
Описание
int is_object
(mixed var);
is_real
is_real -- Определяет, является ли переменная
типа real.
Описание
int is_real
(mixed var);
is_string
is_string -- Определяет, является ли переменная
типа string.
Описание
int is_string
(mixed var);
isset
isset -- Определяет, существует ли переменная
Описание
int isset
(mixed var);
$a = "test";
echo isset($a); // true
unset($a);
echo isset($a); // false
settype
settype -- Устанавливает тип переменной.
Описание
int settype
(string var, string type);
strval
strval -- Получает строковое значение
переменной.
Описание
string strval
(mixed var);
unset
unset -- Удаляет указанную переменную
Описание
int unset
(mixed var);
unset( $foo );
unset( $bar['quux'] );
Функции Vmailmgr
O ok
1 плохой
2 ошибка
3 ошибка соединения
<?php
dl("php3_vmailmgr.so"); //load the shared library
$vdomain="vdomain.com";
$basepwd="password";
?>
vm_adduser
Описание
int vm_adduser
(string vdomain, string
basepwd, string newusername, string newuserpassword);
vm_addalias
Описание
int vm_addalias
(string vdomain, string
basepwd, string username, string alias);
vm_passwd
Описание
int vm_passwd
(string vdomain, string
username, string password, string newpassword);
vm_delalias
Описание
int vm_delalias
(string vdomain, string
basepwd, string alias);
vm_deluser
Описание
int vm_deluser
(string vdomain, string
username);
Функции Gz-файлов
gzclose
gzclose -- закрывает открытый указатель gz-файла
Описание
int gzclose
(int zp);
gzeof
gzeof -- проверяет достигнут ли конец файла
указателя gz-файла
Описание
int gzeof
(int zp);
gzfile
gzfile -- читает весь gz-файл в массив
Описание
array gzfile
(string filename);
gzgetc
gzgetc -- возвращает символ из указателя gz-файла
Описание
string gzgetc
(int zp);
gzgets
gzgets -- Считывает строку из указателя файла
Описание
string gzgets
(int zp, int length);
gzgetss
gzgetss -- Считывает строку из указателя файла и
обрезает HTML-теги
Описание
string gzgetss
(int zp, int length);
gzopen
gzopen -- открывает gz-файл
Описание
int gzopen
(string filename, string mode);
$fp = gzopen("/tmp/file.gz", "r");
gzpassthru
gzpassthru -- Выводит все оставшиеся данные в
указателе gz-файла
Описание
int gzpassthru
(int zp);
gzputs
gzputs -- записывает в указатель gz-файла
Описание
int gzputs
(int zp, string str, int [length]);
gzread
gzread -- Двоично-безопасное чтение из gz-файла
Описание
string gzread
(int zp, int length);
// считывание содержимого gz-файла в строку
$filename = "/usr/local/something.txt.gz";
$zd = gzopen( $filename, "r" );
$contents = gzread( $zd, 10000 );
gzclose( $zd );
gzrewind
gzrewind -- перемешает позицию указателя gz-файла
Описание
int gzrewind
(int zp);
gzseek
gzseek -- Сдвигает указатель gz-файла
Описание
int gzseek
(int zp, int offset);
gztell
gztell -- Возвращает позицию чтения/записи
указателя gz-файла
Описание
int gztell
(int zp);
readgzfile
readgzfile -- выводит gz-файл
Описание
int readgzfile
(string filename);
gzwrite
gzwrite -- Двоично-безопасная запись gz-файла
Описание
int gzwrite
(int zp, string string, int [length]);
Приложение 0. Переход от PHP/FI 2.0
к PHP 3.0
Несовместимость в 3.0
Открывающий и
закрывающий тэги
Пример 0-1. Изменение: старые
открывающий и закрывающий тэги:
<? echo "This is PHP/FI 2.0 code.\n"; >
Пример 0-2. Изменение: новые
открывающий и закрывающий тэги, первый
вариант:
<? echo "This is PHP 3.0 code!\n"; ?>
Пример 0-3. Изменение: новые тэги
начала и конца, второй вариант:
<?php echo "This is PHP 3.0 code!\n"; ?>
Пример 0-4. Изменение: новые тэги
начала и конца, третий вариант:
<script language="php">
echo "This is PHP 3.0 code!\n";
</script>
Синтаксис операторов
if..endif
Пример 0-5. Изменение: старый
синтаксис if..endif:
if ($foo);
echo "yep\n";
elseif ($bar);
echo "almost\n";
else;
echo "nope\n";
endif;
Пример 0-6. Изменение: новый синтаксис
if..endif:
if ($foo):
echo "yep\n";
elseif ($bar):
echo "almost\n";
else:
echo "nope\n";
endif;
Синтаксис while
Пример 0-7. Изменения: старый, while..endwhile
синтаксис:
while ($more_to_come);
...
endwhile;
Пример 0-8. Изменения: новый синтаксис
while..endwhile:
while ($more_to_come):
...
endwhile;
Внимание!
Используя устаревший синтаксис в PHP 3.0
вы получите бесконечный цикл.
Типы выражений
$a[0]=5;
$a[1]=7;
$key = key($a);
while ("" != $key) {
echo "$keyn";
next($a);
}
while ((string)$key != "") {
Изменены сообщения об
ошибках
Сокращенная операция
вычисления логических выражений
Пример 0-9. Изменения 2.0: возвращаемые
значения, старый код:
$fp = fopen($file, "r");
if ($fp == -1);
echo("Could not open $file for reading<br>\n");
endif;
Пример 0-10. Изменения 2.0: возвращаемые
значения, новый код:
$fp = @fopen($file, "r") or print("Could not open $file for reading<br>\n");
Прочие изменения
Пример 0-11. Изменения 2.0: сложение для
строковых переменных
echo "1" + "1";
echo "1"."1";
$a = 1;
$b = 1;
echo $a + $b;
$a = 1;
$b = 1;
echo $a.$b;
Приложение 0. Программирование
на PHP
Добавление функций в PHP3
Прототип функции
void php3_foo(INTERNAL_FUNCTION_PARAMETERS) {
}
Аргументы
Пример 0-1. Объявление переменных:
pval *arg1, *arg2;
if (ARG_COUNT(ht) != 2 || getParameters(ht,2,&arg1,&arg2)==FAILURE) {
WRONG_PARAM_COUNT;
}
Функции с переменным
числом аргументов
Пример 0-2. Функции, принимающие
несколько аргументов
pval *arg1, *arg2, *arg3;
int arg_count = ARG_COUNT(ht);
if (arg_count < 2 || arg_count > 3 ||
getParameters(ht,arg_count,&arg1,&arg2,&arg3)==FAILURE) {
WRONG_PARAM_COUNT;
}
Использование
аргументов функции
IS_STRING
String
IS_DOUBLE
Double-precision floating point
IS_LONG
Long integer
IS_ARRAY
Array
IS_EMPTY
None
IS_USER_FUNCTION
??
IS_INTERNAL_FUNCTION
?? (если не может быть передана в
функцию - удаляется)
IS_CLASS
??
IS_OBJECT
??
convert_to_double(arg1);
convert_to_string(arg1);
convert_to_boolean_long(arg1); /* Если строка равна ""
или "0" возвращает 0, во всех иных
случаях 1 */
convert_string_to_number(arg1); /* Преобразует строку к LONG
или DOUBLE в зависимости от содержания */
Управление памятью в
функциях
Установка переменных в
таблице символов
Пример 0-3. Проверка наличия $foo в
таблице символов
if (hash_exists(active_symbol_table,"foo",sizeof("foo"))) { существует... }
else { не существует }
Пример 0-4. Вычисление размера
переменной в таблице символов
hash_find(active_symbol_table,"foo",sizeof("foo"),&pvalue);
check(pvalue.type);
Пример 0-5. инициализация нового
множества
pval arr;
if (array_init(&arr) == FAILURE) { failed... };
hash_update(active_symbol_table,"foo",sizeof("foo"),&arr,sizeof(pval),NULL);
Пример 0-6. Добавление элементов к
массиву
pval entry;
entry.type = IS_LONG;
entry.value.lval = 5;
/* определяет $foo["bar"] = 5 */
hash_update(arr.value.ht,"bar",sizeof("bar"),&entry,sizeof(pval),NULL);
/* определяет $foo[7] = 5 */
hash_index_update(arr.value.ht,7,&entry,sizeof(pval),NULL);
/* определяет следующее свободное место в $foo[],
* $foo[8], to be 5 (работает как и в php2)
*/
hash_next_index_insert(arr.value.ht,&entry,sizeof(pval),NULL);
if (array_init(return_value) == FAILURE) { failed...; }
add_next_index_long(return_value,long_value);
add_next_index_double(return_value,double_value);
add_next_index_string(return_value,estrdup(string_value));
if (hash_find(active_symbol_table,"foo",sizeof("foo"),(void
**)&arr)==FAILURE) { can't find... }
else { use arr->value.ht... }
Возврат значений
простых типов
Возврат значений
сложных типов
add_method( return_value, function_name, function_ptr );
Использование списка ресурсов
Пример 0-7. Добавление нового ресурса
RESOURCE *resource;
/* ...выделение памяти под ресурс и создание его... */
/* добавление ресурса в список */
return_value->value.lval = php3_list_insert((void *) resource, LE_RESOURCE_TYPE);
return_value->type = IS_LONG;
Пример 0-8. Использование
существующего ресурса pval
*resource_id;
RESOURCE *resource;
int type;
convert_to_long(resource_id);
resource = php3_list_find(resource_id->value.lval, &type);
if (type != LE_RESOURCE_TYPE) {
php3_error(E_WARNING,"ресурс с номером %d:
неправильный тип",resource_id->value.lval);
RETURN_FALSE;
}
/* ...использование ресурса... */
Пример 0-9. Удаление ресурса
pval *resource_id;
RESOURCE *resource;
int type;
convert_to_long(resource_id);
php3_list_delete(resource_id->value.lval);
Использование таблиц постоянных
ресурсов
php3_mysql_do_connect
php3_mysql_connect()
php3_mysql_pconnect()
Директивы времени выполнения (runtime)
Вызов пользовательских функций
HashTable *function_table
pval *object
pval *function_name
pval *retval
int param_count
pval *params[]
Сообщения об ошибках
E_NOTICE
E_WARNING
E_ERROR
E_PARSE
E_CORE_ERROR
E_CORE_WARNING
Приложение 0. Отладчик PHP
Использование отладчика
Протокол отладчика
Тип
Значенне
start
Сообщает получающей программе, что
в этом месте начинается сообщение.
Содержимое строки data
содержит тип сообщения об ошибке (см.
ниже).
message
Сообщение об ошибке.
location
Имя файла и номер строки, содержащей
ошибку. Первая строка location
содержит местоположение, data
содержит информацию file:line.
Строка location всегда следует
после строки message и function.
frames
Число кадров в дампе стека. Если их
четыре, ожидается информация о
четырех уровнях вызываемых функций.
Если эта строка отсутствует, глубина
предполагается нулевой (ошибка
произошла на высшем уровне
вложенности).
function
Имя функции, содержащей ошибку.
Повторяется один раз для каждого
уровня в стеке вызовов функции.
end
Сообщает получающей программе, что
сообщение отладчика закончено.
Отладчик
Внутренняя в PHP
warning
E_WARNING
error
E_ERROR
parse
E_PARSE
notice
E_NOTICE
core-error
E_CORE_ERROR
core-warning
E_CORE_WARNING
unknown
(любая другая)
Пример 0-1. Пример сообщения об ошибке
1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: (null):7
1998-04-05 23:27:400966 lucifer.guardian.no(20481) frames: 1
1998-04-05 23:27:400966 lucifer.guardian.no(20481) function: display
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: /home/ssb/public_html/test.php3:10
1998-04-05 23:27:400966 lucifer.guardian.no(20481) end: noticeВ переводе принимали участие