ldap_set_option

(PHP 4 >= 4.0.4, PHP 5)

ldap_set_optionModifie la valeur d'une option LDAP

Description

bool ldap_set_option ( resource $link_identifier , int $option , mixed $newval )

Modifie la valeur de l'option option en remplaçant la valeur courante par newval.

Liste de paramètres

link_identifier

Un identifiant de lien LDAP, retourné par la fonction ldap_connect().

option

Le paramètre option peut prendre l'une des valeurs suivantes :

Option Type Disponible depuis
LDAP_OPT_DEREF entier  
LDAP_OPT_SIZELIMIT entier  
LDAP_OPT_TIMELIMIT entier  
LDAP_OPT_NETWORK_TIMEOUT entier PHP 5.3.0
LDAP_OPT_PROTOCOL_VERSION entier  
LDAP_OPT_ERROR_NUMBER entier  
LDAP_OPT_REFERRALS booléen  
LDAP_OPT_RESTART booléen  
LDAP_OPT_HOST_NAME chaîne de caractères  
LDAP_OPT_ERROR_STRING chaîne de caractères  
LDAP_OPT_MATCHED_DN chaîne de caractères  
LDAP_OPT_SERVER_CONTROLS tableau  
LDAP_OPT_CLIENT_CONTROLS tableau  

Les options LDAP_OPT_SERVER_CONTROLS et LDAP_OPT_CLIENT_CONTROLS requièrent une liste de contrôles, ce qui signifie que la valeur doit être un tableau de contrôles. Un contrôle est constitué d'un oid l'identifiant, une valeur optionnelle value, et un flag optionnel de "criticalité" (criticality). En PHP, un contrôle est défini sous la forme d'un tableau, donc les clés sont oid avec une chaîne comme valeur, et deux clés optionnelles. Ces clés sont value avec une chaîne comme valeur, et iscritical avec une valeur booléenne. Par défaut, iscritical vaut FALSE. Voir le fichier » draft-ietf-ldapext-ldap-c-api-xx.txt pour plus de détails. Reportez-vous au second exemple pour une illustration.

newval

La nouvelle valeur pour l'option option spécifiée.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

Exemple #1 Modification de la version du protocole

<?php
// $ds doit être une ressource de connexion valide
if (ldap_set_option($dsLDAP_OPT_PROTOCOL_VERSION3)) {
    echo 
"Version LDAPv3";
} else {
    echo 
"Impossible de modifier la version du protocole à 3";
}
?>

Exemple #2 Modification des contrôles du serveur

<?php
// $ds doit être une ressource de connexion valide de
// contrôle sans valeur
$ctrl1 = array("oid" => "1.2.752.58.10.1""iscritical" => true);
// iscritical vaut par défaut FALSE
$ctrl2 = array("oid" => "1.2.752.58.1.10""value" => "magic");
// tente d'utiliser les deux contrôles
if (!ldap_set_option($dsLDAP_OPT_SERVER_CONTROLS, array($ctrl1$ctrl2))) {
    echo 
"Impossible de modifier les contrôles du serveur";
}
?>

Notes

Note:

Cette fonction n'est disponible que lorsque vous utilisez OpenLDAP 2.x.x ou Netscape Directory SDK x.x.

Voir aussi

add a note add a note

User Contributed Notes 7 notes

up
1
hansfn at gmail dot com
8 years ago
Luckily you can turn on debugging before you open a connection:

  ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

This way you at least can see in the logs if the connection fails...
up
1
soulbros at yahoo dot com
12 years ago
As john.hallam@compaq.com above mentioned ,one  has to set option LDAP_OPT_PROTOCOL_VERSION=3
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);
to use the ldap_rename function.

However, the ldap_set_option() line has to be written immediately after ldap_connect() and before ldap_bind() statements.

Christos Soulios
up
0
badbo_5834 at hotmail dot com
11 months ago
I have the following code, but you do not rename the cn, that may be?

    $TheDN = "cn=Nombre,ou=Addressbook,dc=axia-ldap,dc=net";
    $newRDN = "cn=bill";
    $newParent = "ou=Addressbook,dc=axia-ldap,dc=net";
    ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);
    $result = ldap_rename($ds, $TheDN, $newRDN, $newParent, TRUE);
up
0
technosophos
7 years ago
The following flags are valid integer values for the LDAP_OPT_DEREF (as taken from the documentation for ldap_read()):

LDAP_DEREF_NEVER (int 0) - (default) aliases are never dereferenced.

LDAP_DEREF_SEARCHING (int 1) - aliases should be dereferenced during the search but not when locating the base object of the search.

LDAP_DEREF_FINDING (int 2) - aliases should be dereferenced when locating the base object but not during the search.

LDAP_DEREF_ALWAYS (int 3) - aliases should be dereferenced always.

Example:
<?php
ldap_set_option
($ds, LDAP_OPT_DEREF, LDAP_DEREF_ALWAYS);
?>

These are defined in the draft C API (presumably from the original LDAP API). See draft-ietf-ldapext-ldap-c-api-xx.txt included in the OpenLDAP source code distribution.
up
0
minusf at gmail dot com
9 years ago
it seems that ldap_set_option returns 1 for bogus ldap_connect -ions also.
ldap_connect always returns a resource (documented in the
comments of ldap_connect) so it is not possible to check if the
ldap server is there or alive or what.  and because ldap_set_option
must be between ldap_connect and ldap_bind, there seems to
be no sense in checking the return value.

it is a bit strange that ldap_bind is the first function which can
really check if a ldap resource is usable because it is the third
function in line to use when working with openldap.

<?php
$connect
= ldap_connect("whatever");
$set = ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
echo
$set;
?>
up
0
john dot hallam at compaq dot com
12 years ago
To get this to work I had to set the LDAP version to 3 using ldap_set_option. Here is an example that might help:

$TheDN = "cn=john smith,ou=users,dc=acme,dc=com";
$newRDN = "cn=bill brown";
$newParent = "ou=users,dc=acme,dc=com";
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);
@$result = ldap_rename($ds, $TheDN, $newRDN, $newParent, TRUE);
To Top