17.3. Протокол LDAP
LDAP (Lightweight Directory Access Protocol - облегченный протокол службы каталогов) - это универсальный метод хранения информации о каталогах, являющийся частичной реализацией стандарта X.500. Протокол LDAP был впервые описан в документах RFC 1777 и RFC 1778.
С помощью протокола TCP/IP клиенты могут получить доступ к централизованной адресной книге, содержащей контактную информацию, публичные ключи шифрования и другую подобную информацию. В Internet имеется множество серверов LDAP. На узле <http://www.dante.net/np/pdi.html> некоммерческая организация Dante ведет учет серверов LDAP, учрежденных в США. Полное обсуждение протокола LDAP выходит за рамки этой книги, но достаточно полную информацию о нем можно почерпнуть из Internet. Для начала можно ознакомиться с основными положениями проекта OpenLDAP на узле <http://www.openldap.org/>.
Функции, описанные в этом разделе, требуют компилирования поддержки LDAP при компиляции модуля PHP или загрузки модуля расширения с помощью dl. Модуль LDAP появился в результате плодотворного сотрудничества Эмитея Исаакса (Amitay Isaacs), Расмуса Лердорфа (Rasmus Lerdorf), Геррита Томпсона (Gerrit Thomson) и Эрика Варнке (Eric Warnke).
boolean ldap_add(resource connection, string dn, array entry)
Функция ldap_add (листинг 17.3) предназначена для добавления на уровне объекта записей в заданный DN (отличительное имя). Аргументом entry является массив значений атрибутов. Если атрибут может иметь несколько значений, то элемент массива сам становится массивом (обратите внимание на атрибут mail в листинге 17.3). Если необходимо добавить атрибуты на уровне атрибутов, воспользуйтесь возможностями, предоставляемыми функцией ldap_mod_add.
Листинг 17.3. Функция ldapadd
<?php
// подключиться к серверу LDAP if(!($ldap=ldap_connect("localhost"))) {
die("Невозможно подключиться к серверу LDAP!");
}
//задать DN регистрации
$dn="cn=Manager,dc=leonatkinson,dc=com"; // попытка подключиться к DN с использованием пароля if(!ldap_bind($ldap, $dn, "secret"))
{
die("Невозможно связаться с '$dn'!"),-
}
// создать запись $entry["cn"]="Barry Bat"; $entry["objectClass"]="inetOrgPerson"; $entry["sn"]="Barry";
$entry["mail"][0] = "barry@example.com",-$entry["mail"][1] = "bat@example.com",-
$entry["initials"]="BB";
$entry["homePhone"]="123-123-1234"; $entry["mobile"]="123-123-1234"; // создать DN для новой записи $dn = "cn=Barry Bat,dc=leonatkinson,dc=com"; // добавить запись if(ldap_add($ldap, $dn, $entry))
{
print("Запись добавлена!");
}
else
{
print(" Ошибка операции добавления записи!");
}
// Закрыть соединение ldap_close($ldap);
boolean ldap_bind(resource connection, string dn, string password)
Функция ldap_bind предназначена для привязки каталога. Необязательные аргументы dn и password предназначены для идентификации. Обычно серверы требуют аутентификации для любой команды, изменяющей содержимое каталога.
boolean ldap_close(resource connection)
Функция ldap_close закрывает соединение с сервером каталога.
boolean ldap_compare(resource connection, string dn, string attribute, string value)
Функция ldap_compare сравнивает запись с заданным значением.
integer ldap_connect(string host, integer port)
Функция ldap_connect возвращает идентификатор соединения LDAP или значение FALSE в случае возникновения ошибки. Оба аргумента являются необязательными. Без аргументов ldap_connect функция возвращает идентификатор текущего открытого соединения. Если аргумент port не указан, работа ведется с портом 389.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Базы данных. Часть Пятая.
14-03-2015
<< Предыдущая статья | Следующая статья >> |
PHP. Базы данных. Часть Четвёртая. | PHP. Базы данных. Часть Шестая. |