Основы PHP
  Что такое PHP?
  Возможности PHP
  Преимущества PHP
  История развития
  Что нового в PHP5?
  «Движок» PHP
  Переход на PHP 5.3
New Переход на PHP 5.6
  Введение в PHP
  Изучение PHP
  Основы CGI
  Синтаксис PHP
  Типы данных PHP
  Переменные в PHP
  Константы PHP
  Выражения PHP
  Операторы PHP
  Конструкции PHP
  Ссылки в PHP
  PHP и ООП
  Безопасность
  Функции PHP
  Функции по категориям
  Функции по алфавиту
  Стандартные функции
  Пользовательские
  PHP и HTTP
  Работа с формами
  PHP и Upload
  PHP и Cookies
  PHP и базы данных
  PHP и MySQL
  Документация MySQL
  Учебники
  Учебники по PHP
  Учебники по MySQL
  Другие учебники
  Уроки PHP
  Введение
  Самые основы
  Управление
  Функции
  Документация
  Математика
  Файлы
  Основы SQL
  Дата и время
  CURL
  Изображения
  Стили
  Безопасность
  Установка
  Проектирование БД
  Регулярные выражения
  Подготовка к работе
  Быстрый старт
  Установка PHP
  Установка MySQL
  Конфигурация PHP
  Download / Скачать
  Скачать Apache
  Скачать PHP
  Скачать PECL
  Скачать PEAR
  Скачать MySQL
  Редакторы PHP
  Полезные утилиты
  Документация
  PHP скрипты
  Скачать скрипты
  Инструменты
  PHP в примерах
  Новости портала
 Главная   »  Функции PHP
 
 

Функции LDAP

Введение в LDAP

LDAP это Lightweight Directory Access Protocol - протокол, используемый для доступа к "Directory Servers". Directory это особый вид базы данных, которая содержит информацию как древовидную структуру.

Концепция аналогична структуре директорий жёсткого диска, но в данном контексте root/корневая директория это "The world/Земной шар", а первый уровень поддиректорий это "countries/страны". Ещё ниже идут уровни структуры директорий, содержащие вхождения для companies/компаний, organisations/организаций или мест, а ещё ниже находятся вхождения директорий для people/людей и, возможно, оборудования или документов.

Чтобы обратиться к файлу в поддиректории на жёстком диске, вы вводите что-нибудь вроде


  /usr/local/myapp/docs
 

Слэш отделяет каждое подразделение ссылки, а последовательность читается слева направо.

Эквивалентом для полной квалифицированной ссылки на файл в LDAP является "distinguished name/различительное имя", называемое просто "dn". Примером dn может быть:


    cn=John Smith,ou=Accounts,o=My Company,c=US
 

Запятая работает как слэш, а последовательность читается справа налево. Вы можете прочитать это dn как ...


    country = US
    organization = My Company
    organizationalUnit = Accounts
    commonName = John Smith
 

Точно так же, поскольку нет твёрдых правил организации структуры директорий на жёстком диске, directory server manager (менеждер сервера директорий) может настроить любую структуру, необходимую для осуществления поставленных задач. Однако есть некоторые соглашения, которые при этом используются: вы не можете записать код для доступа к серверу директорий, если не знаете его структуру, хотя можете использовать БД без знания того, что доступно.

Примеры LDAP можете найти здесь:

Netscape SDK содержит Programmer's Guide в формате HTML.

Требования

Вам необходимо получить и скомпилировать клиентские библиотеки LDAP с ресурса OpenLDAP или Bind9.net в дополнении к компиляции PHPс поддержкой LDAP.

Установка

Поддержка LDAP в PHP не включена по умолчанию. Вам необходимо использовать опцию --with-ldap[=DIR] при компиляции PHP, для установки поддержки LDAP. DIR - базовая директория установленного LDAP. Для активизации поддержки SASL необходима опция при компиляции PHP: --with-ldap-sasl[=DIR] и файл sasl.h в системе.

Примечания для пользователей Windows: Кроме основной библиотеки LDAP вам также потребуется скопировать некоторые файлы из PHP/Win32 в директорию SYSTEM вашей Windows. (например: C:\WINNT\SYSTEM32, или C:\WINDOWS\SYSTEM). Для PHP <= 4.2.0 копируйте libsasl.dll, для PHP >= 4.3.0 копируйте libeay32.dll и ssleay32.dll в директорию SYSTEM вашей Windows.

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

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

Пример 1. Пример поиска LDAP

<?php
// basic sequence with LDAP is connect, bind, search, interpret search
// result, close connection

echo "<h3>LDAP query test</h3>";
echo 
"Connecting ...";
$ds=ldap_connect("localhost");  // must be a valid LDAP server!
echo "connect result is " $ds "<br />";

if (
$ds) { 
    echo 
"Binding ..."
    
$r=ldap_bind($ds);     // this is an "anonymous" bind, typically
                           // read-only access
    
echo "Bind result is " $r "<br />";

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

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

    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] . "<br /><hr />";
    }

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

} else {
    echo 
"<h4>Unable to connect to LDAP server</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 можно найти на:

Содержание

 
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_sasl_bind - связывает с директорией LDAP, используя SASL
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-директории
 
 
 Функции по алфавиту 
   Содержание   
 Функции по категориям 
Есть еще вопросы или что-то непонятно - добро пожаловать на наш  форум портала PHP.SU 
 

 
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS