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
Last revisionBoth sides next revision
v5:database:ldap [2020/01/13 13:06] – Add tier2 tag dregadv5:database:ldap [2023/11/18 23:43] – [Connection Parameters] 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.7, 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:+
  
-  * [[v5:reference:connection:getassoc|getAssoc()]] 
-  * [[v5:reference:connection:selectdb|selectDb()]] 
-  * [[v5:dictionary:serverinfo|serverInfo()]] 
-  * [[v5:reference:connection: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.7, 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 tier2]}}+{{tag>active tier2 ]}}
  
v5/database/ldap.txt · Last modified: 2023/11/18 23:45 by mnewnham