|
|
|
LDAP is the Lightweight Directory Access Protocol, and is a protocol
used to access "Directory Servers". The Directory is a special kind of
database that holds information in a tree structure.
The concept is similar to your hard disk directory structure, except that
in this context, the root directory is "The world" and the first level
subdirectories are "countries". Lower levels of the directory structure
contain entries for companies, organisations or places, while yet lower
still we find directory entries for people, and perhaps equipment or
documents.
To refer to a file in a subdirectory on your hard disk, you might use
something like
/usr/local/myapp/docs
The forwards slash marks each division in the reference, and the
sequence is read from left to right.
The equivalent to the fully qualified file reference in LDAP is
the "distinguished name", referred to simply as "dn". An example dn
might be.
cn=John Smith,ou=Accounts,o=My Company,c=US
The comma marks each division in the reference, and the sequence is
read from right to left. You would read this dn as ..
country = US
organization = My Company
organizationalUnit = Accounts
commonName = John Smith
In the same way as there are no hard rules about how you organise
the directory structure of a hard disk, a directory server manager can
set up any structure that is meaningful for the purpose. However,
there are some conventions that are used. The message is that you
can not write code to access a directory server unless you know
something about its structure, any more than you can use a database
without some knowledge of what is available.
Complete code example
Retrieve information for all entries where the surname starts with "S"
from a directory server, displaying an extract with name and email
address.
Example 1. LDAP search example
<?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."<p>";
if ($ds) {
echo "Binding ...";
$r=ldap_bind($ds); // this is an "anonymous" bind, typically
// read-only access echo "Bind result is
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 server</h4>";
}
?>
Using the PHP LDAP calls
You will need to get and compile LDAP client libraries from either the
University of Michigan ldap-3.3 package or the Netscape Directory SDK.
You will also need to recompile PHP with LDAP support enabled before
PHP's LDAP calls will work.
Before you can use the LDAP calls you will need to know ..
The name or address of the directory server you will use
The "base dn" of the server (the part of the world directory that is held
on this server, which could be "o=My Company,c=US")
Whether you need a password to access the server (many servers will
provide read access for an "anonymous bind" but require a password
for anything else)
The typical sequence of LDAP calls you will make in an application will
follow this pattern:
ldap_connect() // establish connection to server
|
ldap_bind() // anonymous or authenticated "login"
|
do something like search or update the directory
and display the results
|
ldap_close() // "logout"
More Information
Lots of information about LDAP can be found at
Netscape
University of Michigan
OpenLDAP Project
LDAP World
The Netscape SDK contains a helpful Programmer's Guide in .html
format.
|
|
| Windows 2003 Active Directory User Query (Ldap) Categories : PHP, LDAP | | | A web-based php3 IMAP email client supporting address books, attachements (downloading and sending), LDAP searching, and much much more. Categories : Email, PHP, LDAP | | | Authentication script to authenticate users in Active Directory through LDAP. Categories : LDAP, Authentication, Cookies, PHP | | | ldap_add -- Add entries to LDAP directory Categories : PHP, PHP Functions, LDAP | | | Query2Report : Generating Html, Pdf and Csv Reports from SQL Query Categories : PHP, PHP, HTML, PDF, Excel | | | Authenticator for Exchange Server LDAP Categories : PHP, Authentication, LDAP, Security, Sessions | | | How to query a directory server using LDAP.
Keywords: ldap_connect ldap_search Categories : LDAP, Network, PHP | | | Cut your MySQL Connections to 1 line of code Categories : PHP, Beginner Guides, Databases, MySQL | | | A simple class with some HTML output functions that would come in handy for consistent page layout etc. Categories : PHP, PHP Classes, HTML and PHP, HTML, Navigation | | | recode -- Recode a string according to a recode request Categories : PHP, PHP Functions, Recode | | | PhpIBadmin - Web interface to Interbase RBDMS , this is a port of
phpMyadmin Categories : Databases, InterBase, PHP | | | PHP-MySQL shopping cart
Categories : PHP, Ecommerce, Complete Programs | | | phpAds, a complete banner and ad management system with detailled tracking and stats. Categories : MySQL, Complete Programs, Ecommerce, PHP, Databases | | | Point and Click Interface ala MS Access for creating SQL statements. Categories : MySQL, Complete Programs, General SQL, PHP, Databases | | | crop and resize image class using gd library function Categories : PHP, PHP Classes, GD image library, Graphics | |
|
|
|