ADOdb

Database Abstraction Layer for PHP

User Tools

Site Tools


v5:database:ldap

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
database:ldap [2015/11/28 00:00] mnewnhamv5:database:ldap [2023/11/18 23:45] (current) mnewnham
Line 1: Line 1:
 ====== LDAP ====== ====== LDAP ======
 ~~NOTOC~~ ~~NOTOC~~
 +<WRAP important>
 +Use of ADODB_FETCH_NUM is strongly discouraged because AD records returned in queries may not all contain the same number of fields
 +</WRAP>
 +
 <WRAP right box round 300px> <WRAP right box round 300px>
 == Specification == == Specification ==
 ^Driver Name|ldap| ^Driver Name|ldap|
 ^Data Provider|ldap| ^Data Provider|ldap|
-^Status|Inactive((This driver is not actively supported or enhanced by ADOdb project members, but you can provide fixes and enhancements if you have the expertise))|+^Status|Active((This driver is actively supported or enhanced by ADOdb project members))|
 ^Windows|Yes| ^Windows|Yes|
 ^Unix|Perhaps((We have never tried it except against Microsoft LDAP servers from Windows))| ^Unix|Perhaps((We have never tried it except against Microsoft LDAP servers from Windows))|
Line 13: Line 17:
 </WRAP> </WRAP>
 ===== Description ===== ===== Description =====
-The ''ldap'' driver provides a small subset of ADOdb commands allowing **read-only** access to an LDAP database. +From ADOdb Versions 5.22.8 and 5.23.0, the LDAP driver can be used in the same way as all the other drivers. Simply replace the SQL statement with a valid AD Query String
-===== Available Methods ===== +
-The following methods are available for use with the LDAP driver:+
  
-  * [[reference:getassoc|getAssoc()]] 
-  * [[reference:selectdb|selectDb()]] 
-  * [[dictionary:serverinfo|serverInfo()]] 
-  * [[reference:getrowassoc|getRowAssoc()]] 
-   
-Calls to other methods when used with this driver may produce unexpected results or program failure.  
 ===== Usage ===== ===== Usage =====
 +
 +You must use standard [[https://ldap.com/ldap-filters/|LDAP filter terms]] rather than SQL statements when executing a query. Any value provided in the //$bindvars// parameter is ignored,
 +------------------------------------------------------------
 <code php> <code php>
-$db = newAdoConnection('ldap');+DEFINE('ADODB_ASSOC_CASE',ADODB_ASSOC_CASE_UPPER);
  
 +$db = ADOnewConnection('ldap');
 +
 +$db->setFetchMode(ADODB_FETCH_ASSOC);
 +
 +$baseDN   = 'dc=example,dc=com';
 +$adServer = 'example.com';
 +$user     = 'adodb@example.com';
 +$password = 'adodb!';
 +
 +$db->connect($adServer,$user,$password,$baseDN);
 +
 +/*
 +* Find the first 2 records where the given name is adodb
 +*/
 +$result = $db->selectLimit('(givenname=adodb)',2);
 +
 +while ($r = $result->fetchRow())
 +{
 +    print_r($r);
 +    
 +}
 </code> </code>
  
-===== Custom Functionality ===== +Returns the following data. Note that some elements may contain **array** or **binary** data. In this example, the 1st record contains 29 columns, and the second 30. 
-If defined prior to connectionthe following variables will be passed as input bind variables+ 
-Valid Domain Values for LDAP Options+<code> 
-  LDAP_OPT_DEREF (integer+Array 
-  LDAP_OPT_SIZELIMIT (integer) +
-  LDAP_OPT_TIMELIMIT (integer) +    [CN] => ADODb Tester 
-  LDAP_OPT_PROTOCOL_VERSION (integer) +    [SN] => Tester 
-  LDAP_OPT_ERROR_NUMBER (integer) +    [GIVENNAME] => ADODb 
-  LDAP_OPT_REFERRALS (boolean) +    [DISTINGUISHEDNAME] => CN=ADODb Tester,CN=Users,DC=test,DC=loc 
-  LDAP_OPT_RESTART (boolean) +    [INSTANCETYPE] => 4 
-  LDAP_OPT_HOST_NAME (string) +    [WHENCREATED] => 20231116231826.0Z 
-  LDAP_OPT_ERROR_STRING (string) +    [WHENCHANGED] => 20231116231828.0Z 
-  LDAP_OPT_MATCHED_DN (string) +    [DISPLAYNAME] => ADODb Tester 
-  LDAP_OPT_SERVER_CONTROLS (array) +    [USNCREATED] => 12794 
-  LDAP_OPT_CLIENT_CONTROLS (array)+    [USNCHANGED] => 12801 
 +    [NAME] => ADODb Tester 
 +    [OBJECTGUID] => 
 +    [USERACCOUNTCONTROL] => 66048 
 +    [BADPWDCOUNT] => 0 
 +    [CODEPAGE] => 0 
 +    [COUNTRYCODE] => 0 
 +    [BADPASSWORDTIME] => 0 
 +    [LASTLOGOFF] => 0 
 +    [LASTLOGON] => 0 
 +    [PWDLASTSET] => 133446503074682533 
 +    [PRIMARYGROUPID] => 513 
 +    [OBJECTSID] => 
 +    [ACCOUNTEXPIRES] => 9223372036854775807 
 +    [LOGONCOUNT] => 0 
 +    [SAMACCOUNTNAME] => adodb 
 +    [SAMACCOUNTTYPE] => 805306368 
 +    [USERPRINCIPALNAME] => adodb@test.loc 
 +    [OBJECTCATEGORY] => CN=Person,CN=Schema,CN=Configuration,DC=test,DC=loc 
 +    [DSCOREPROPAGATIONDATA] => Array 
 +        ( 
 +            [0] => 20231116231827.0Z 
 +            [1] => 16010101000000.0Z 
 +        ) 
 + 
 +    [OBJECTCLASS] => Array 
 +        ( 
 +            [0] => top 
 +            [1] => person 
 +            [2] => organizationalPerson 
 +            [3] => user 
 +        ) 
 + 
 +
 +Array 
 +
 +    [CN] => ADOdb N. Tester 
 +    [SN] => Tester 
 +    [GIVENNAME] => ADOdb 
 +    [INITIALS] => N 
 +    [DISTINGUISHEDNAME] => CN=ADOdb N. Tester,CN=Users,DC=test,DC=loc 
 +    [INSTANCETYPE] => 4 
 +    [WHENCREATED] => 20231118172808.0Z 
 +    [WHENCHANGED] => 20231118172809.0Z 
 +    [DISPLAYNAME] => ADOdb N. Tester 
 +    [USNCREATED] => 16413 
 +    [USNCHANGED] => 16420 
 +    [NAME] => ADOdb N. Tester 
 +    [OBJECTGUID] =>  
 +    [USERACCOUNTCONTROL] => 66048 
 +    [BADPWDCOUNT] => 0 
 +    [CODEPAGE] => 0 
 +    [COUNTRYCODE] => 0 
 +    [BADPASSWORDTIME] => 0 
 +    [LASTLOGOFF] => 0 
 +    [LASTLOGON] => 0 
 +    [PWDLASTSET] => 133448020890659722 
 +    [PRIMARYGROUPID] => 513 
 +    [OBJECTSID] =>  
 +    [ACCOUNTEXPIRES] => 9223372036854775807 
 +    [LOGONCOUNT] => 0 
 +    [SAMACCOUNTNAME] => adodb2 
 +    [SAMACCOUNTTYPE] => 805306368 
 +    [USERPRINCIPALNAME] => adodb2@test.loc 
 +    [OBJECTCATEGORY] => CN=Person,CN=Schema,CN=Configuration,DC=test,DC=loc 
 +    [DSCOREPROPAGATIONDATA] => Array 
 +        ( 
 +            [0] => 20231118172809.0Z 
 +            [1] => 16010101000000.0Z 
 +        ) 
 + 
 +    [OBJECTCLASS] => Array 
 +        ( 
 +            [0] => top 
 +            [1] => person 
 +            [2] => organizationalPerson 
 +            [3] => user 
 +        ) 
 + 
 +
 +</code> 
 +==== URI Connections ==== 
 +The **//Server//** definition can be set in the form ''ldap://server-name''You must use this if you want to: 
 +  - Use an alternate connection port ''ldap:⁄⁄server-name:3389'' 
 +  - Use ldap over SSL - ''ldaps:⁄⁄server-name'' 
 + 
 + 
 + 
 + 
 +===== Connection Parameters ===== 
 + 
 +The following values may be injected into the connection via the use of [[v5:reference:connection:getrowassoc|setConnectionParameter()]] 
 + 
 + 
 +^ OPTION_NAME ^ Type ^ 
 +| ''LDAP_OPT_DEREF'' | integer | 
 +| ''LDAP_OPT_SIZELIMIT''integer | 
 +| ''LDAP_OPT_TIMELIMIT''integer | 
 +| ''LDAP_OPT_PROTOCOL_VERSION''integer | 
 +| ''LDAP_OPT_ERROR_NUMBER''integer | 
 +| ''LDAP_OPT_REFERRALS''boolean | 
 +| ''LDAP_OPT_RESTART''boolean | 
 +| ''LDAP_OPT_HOST_NAME''string | 
 +| ''LDAP_OPT_ERROR_STRING''string | 
 +| ''LDAP_OPT_MATCHED_DN''string | 
 +| ''LDAP_OPT_SERVER_CONTROLS''array | 
 +| ''LDAP_OPT_CLIENT_CONTROLS''array 
 + 
 + 
 +From ADOdb 5.22.8 and 5.23.0, default values set are as follows 
 + 
 +^Parameter^Value^ 
 +|LDAP_OPT_PROTOCOL_VERSION|3| 
 +|LDAP_OPT_REFERRALS|0| 
 + 
 +These values can be changed with **//setConnectionParameter()//** 
 + 
 +The following usage method is deprecated in PHP8.2 and will not work with PHP 8.3. Use **//setConnectionParameter()//** instead. 
  
-Make sure to set this BEFORE calling Connect() 
-Example: 
 <code php> <code php>
 $LDAP_CONNECT_OPTIONS = Array( $LDAP_CONNECT_OPTIONS = Array(
Line 62: Line 197:
  ),  ),
  Array (  Array (
- "OPTION_NAME"=>LDAP_OPT_PROTOCOL_VERSION,+ "OPTION_NAME"=>,
  "OPTION_VALUE"=>3  "OPTION_VALUE"=>3
  ),  ),
Line 80: Line 215:
 </code> </code>
  
-{{tag>[dormant]}}+{{tag>active tier2 ]}}
  
v5/database/ldap.1448665247.txt.gz · Last modified: 2017/04/21 11:25 (external edit)