Главная Статьи Написать
 
Начнём
Введение
Инсталяция
Конфигурирование
Безопасность
Справочник Языка
Базовый синтаксис
Типы
Переменные
Константы
Выражения
Операции
Структуры управления
Функции
Классы и Объекты
Ссылки. Разъяснение.
Возможности
Обработка Ошибок
Создание изображений и манипуляции с ними
HTTP-аутентификация в PHP
Куки
Обработка загрузки файлов
Использование удалённых файлов
Обслуживание соединений
Постоянные соединения с базами данных
Безопасный режим
Использование PHP из командной строки
Функции. Справочник.
Функции, специфические для Apache
Array-функции
Aspell-функции [не рекомендуются]
BCMath математические функции произвольной точности
Bzip2 Compression-функции
Calendar-функции
CCVS API-функции
Функции поддержки COM для Windows
Class/Object-функции
ClibPDF-функции
Crack-функции
CURL, Client URL Library-функции
Cybercash payment-функции
Crédit Mutuel CyberMUT-функции
Cyrus IMAP -функции администрирования
Функции типов символов
Функции абстрактного слоя БД (dbm-стиль)
Дата и Время
dBase-функции
DBM-функции
dbx-функции
DB++-функции
Direct IO-функции
Функции директорий
DOM XML-функции
.NET-функции
Обработка ошибок и логинг
FrontBase-функции
filePro-функции
Функции файловой системы
Forms Data Format-функции
FriBiDi-функции
FTP-функции
Функции работы с функциями
Gettext
GMP-функции
HTTP-функции
Hyperwave-функции
Hyperwave API-функции
ICAP-функции [не рекомендуются]
iconv-функции
Image-функции
IMAP, POP3 и NNTP-функции
Informix-функции
InterBase-функции
Ingres II-функции
IRC Gateway-функции
Java
LDAP-функции
Mail-функции
mailparse-функции
Mathematical-функции
Многобайтные строки
MCAL-функции
Mcrypt Encryption-функции
Mhash-функции
Mimetype-функции
Microsoft SQL Server-функции
Ming-функции для Flash
Прочие функции
mnoGoSearch-функции
mSQL-функции
MySQL-функции
Mohawk Software -функции обработчика сессии
muscat-функции
Network-функции
Ncurses -функции управления терминалом
Lotus Notes-функции
Unified ODBC-функции
Oracle 8-функции
OpenSSL-функции
Oracle-функции
Ovrimos SQL-функции
Управление выводом
Перегрузка свойств объектов и вызовов методов
PDF-функции
Verisign Payflow Pro-функции
PHP. Опции & Информация
POSIX-функции
PostgreSQL-функции
Управление процессом
Выполнение программы
Printer-функции
Pspell-функции
GNU Readline
GNU Recode-функции
Функции регулярных выражений (Perl-совместимые)
qtdom-функции
Функции регулярных выражений (POSIX расширенная)
Semaphore, Shared Memory и IPC-функции
SESAM database-функции
Обслуживание сессий
Shared Memory-функции
Shockwave Flash-функции
SNMP-функции
Socket-функции
String-функции
Sybase-функции
URL-функции
Функции переменных
vpopmail-функции
W32api-функции
WDDX-функции
XML parser-функции
XMLRPC-функции
XSLT-функции
YAZ-функции
YP/NIS-функции
Zip File-функции (доступ только для чтения)
Zlib Compression-функции
Расширение PHP 4.0
Обзор
Возможность расширения
Строение исходного кода
Система автоматического построения РНР
Создание расширений
Использование расширений
Решение проблем
Исходные Ресурсы. Обсуждение.
Приём аргументов
Создание переменных
Дублирование содержимого переменной: конструктор Copy
Возвращаемые значения
Печать информации
Startup и Shutdown-функции
Вызов пользовательских функций
Поддержка файлов инициализации
Что дальше?
Справочник: некоторые макросы конфигурации
Макросы API
FAQ: Frequently Asked Questions
Общая информация
Списки рассылки
Получение PHP
Вопросы о базах данных
Инсталяция
Проблемы построения
Использование PHP
PHP и HTML
PHP и COM
PHP и другие языки
Переход от PHP 2 к PHP 3
Переход от PHP 3 к PHP 4
Другие вопросы
Приложения
История PHP и смежных проектов
Переход от PHP 3 к PHP 4
Переход от PHP/FI 2 к PHP 3
Отладка PHP
Расширение PHP
Список псевдонимов функций
Список зарезервированных слов
Список типов ресурсов
Список лексем разборщика
Об этом учебнике




Полный пример кода

Запрашиваем информацию для всех вхождений, где фамилия начинается с "S", с сервера директорий и отображаем их с именем и email-адресом.

Пример 1. Пример поиска LDAP
<?php
// базовая последовательность в LDAP это: соединиться, связать, найти, интерпретировать
// результат поиска, закрыть соединение

echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ds=ldap_connect("localhost");  // обязан быть правильный LDAP-сервер!
echo "connect result is ".$ds."<p>";

if ($ds) { 
    echo "Binding ..."; 
    $r=ldap_bind($ds);     // это "anonymous" связка, обычно с доступом read-only

    echo "Bind result is ".$r."<p>";

    echo "Searching for (sn=S*) ...";
    // Search surname entry
    $sr=ldap_search($ds,"o=My Company, c=US", "sn=S*");  
    echo "Search result is ".$sr."<p>";

    echo "Number of entires returned is ".ldap_count_entries($ds,$sr)."<p>";

    echo "Getting entries ...<p>";
    $info = ldap_get_entries($ds, $sr);
    echo "Data for ".$info["count"]." items returned:<p>";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn is: ". $info[$i]["dn"] ."<br>";
        echo "first cn entry is: ". $info[$i]["cn"][0] ."<br>";
        echo "first email entry is: ". $info[$i]["mail"][0] ."<p>";
    }

    echo "Closing connection";
    ldap_close($ds);

} else {
    echo "<h4>Unable to connect to LDAP-сервер</h4>";
}
?>

Использование вызовов PHP LDAP

Вам нужно получить и скомпилировать клиентские библиотеки LDAP из пакета ldap-3.3 University of Michigan или Netscape Directory SDK 3.0. Вам нужно также перекомпилировать PHP с включённой поддержкой LDAP, прежде чем вызовы PHP к LDAP заработают.

Прежде чем начать использование вызовов LDAP, вам необходимо знать:

  • Имя или адрес сервера директорий, который вы будете использовать

  • "base dn" сервера (часть world-директории, которая содержится на этом сервере, которая может быть "o=My Company,c=US")

  • Нужен ли вам пароль для доступа к этому серверу (многие серверы предоставляют доступ для чтения для "anonymous bind", но требуют пароля для других действий)

Типичная последовательность вызова LDAP в вашем приложении будет соответствовать такому патэрну:

ldap_connect()    // установить соединение с сервером
     |
ldap_bind()       // anonymous/анонимный или аутентифицированный "login"
     |
сделать что-нибудь типа поиска или обновления директории
  и вывести результаты
     |
ldap_close()      // "logout"

Дополнительная информация

Большое количество информации о LDAP можно найти на:

Netscape SDK содержит хороший Programmer's Guide в формате .html.

Содержание
ldap_8859_to_t61 - транслирует 8859-символы в t61-символы
ldap_add - добавляет вхождения в LDAP-директорию
ldap_bind - связывает с LDAP-директорией
ldap_close - закрывает ссылку на LDAP-сервер
ldap_compare - сравнивает значение атрибута, найденного во вхождении, специфицированном с помощью DN
ldap_connect - соединяет с LDAP-сервером
ldap_count_entries - подсчитывает количество вхождений при поиске
ldap_delete - удаляет вхождение их директории
ldap_dn2ufn - конвертирует DN в формат User Friendly Naming
ldap_err2str - конвертирует номер ошибки LDAP в строку сообщения об ошибке
ldap_errno - возвращает номер ошибки LDAP последней команды LDAP
ldap_error - возвращает сообщение об ошибке LDAP последней команды LDAP
ldap_explode_dn - делит DN на части-компоненты
ldap_first_attribute - возвращает первый атрибут
ldap_first_entry - возвращает первый результирующий id
ldap_first_reference - возвращает первую ссылку
ldap_free_result - освобождает память результата
ldap_get_attributes - получает атрибуты из вхождения результата поиска
ldap_get_dn - получает DN результирующего вхождения
ldap_get_entries - получает все результирующие вхождения
ldap_get_option - получает текущее значение данной опции
ldap_get_values_len - получает все бинарные значения из результирующего вхождения
ldap_get_values - получает все значения из результирующего вхождения
ldap_list - одноуровневый поиск
ldap_mod_add - добавляет значения атрибутов текущим атрибутам
ldap_mod_del - удаляет значения атрибутов из текущих атрибутов
ldap_mod_replace - заменяет значения атрибутов новыми
ldap_modify - модифицирует LDAP-вхождение
ldap_next_attribute - получает следующий атрибут в результате
ldap_next_entry - получает следующее результирующее вхождение
ldap_next_reference - получает следующую ссылку
ldap_parse_reference - извлекает информацию из вхождения ссылки
ldap_parse_result - извлекает информацию из результата
ldap_read - читает вхождение
ldap_rename - модифицирует имя вхождения
ldap_search - ищет дерево LDAP
ldap_set_option - устанавливает значение данной опции
ldap_set_rebind_proc - устанавливает callback-функцию для выполнения повторных связок при referral chasing
ldap_sort - сортирует результирующие вхождения LDAP
ldap_start_tls - стартует TLS
ldap_t61_to_8859 - транслирует t61-символы в 8859-символы
ldap_unbind - отвязывает от LDAP-директории