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.
ldap_set_option
(PHP 4 >= 4.0.4, PHP 5)
ldap_set_option — Establece el valor de la opción indicada
Descripción
Establece el valor de la opción especificada al valor del parámetro nuevo_valor . Devuelve TRUE si todo se llevó a cabo correctamente, FALSE en caso de fallo. en caso de error.
El parámetro opcion puede contener uno de los siguientes valores: LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN, LDAP_OPT_SERVER_CONTROLS, LDAP_OPT_CLIENT_CONTROLS. Para obtener una descripción de cada uno de ellos consulte la siguiente dirección » draft-ietf-ldapext-ldap-c-api-xx.txt.
Las opciones LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION y LDAP_OPT_ERROR_NUMBER tienen valores numericos enteros, LDAP_OPT_REFERRALS y LDAP_OPT_RESTART deben contener valores booleanos, y las opciones LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING y LDAP_OPT_MATCHED_DN deben ser cadenas de texto. El primer ejemplo muestra la forma de emplearlos. Las opciones LDAP_OPT_SERVER_CONTROLS y LDAP_OPT_CLIENT_CONTROLS requieren una lista de controles, por lo que su valor debe ser un array de controles. Los controles están formados por un oid que identifica el control, un parámetro valor opcional, y un último parámetro que indica si el cotrol es crítico. En PHP, los controles se construyen mediante un array asociativo que contenga un elemento con la clave oid y su valor como cadena de texto, y otros 2 parámetros opcionales. Estos 2 parámetros se indican como un elemento de clave value y valor una cadena de texto y un elemento con clave iscritical y un valor booleano. El valor por defecto de iscritical es FALSE. Vea también el segundo ejemplo que se muestra a continuación.
Note: Esta función solamente está disponible si se utilizan servidores OpenLDAP 2.x.x o Netscape Directory SDK x.x, y se incluyó en la versión de PHP 4.0.4.
Example #1 Establecer la versión del protocolo
<?php
// $ds es un identificador de conexion valido
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
echo "Se esta empleando LDAPv3";
} else {
echo "No se ha podido establecer el protocolo a LDAP version 3";
}
?>
Example #2 Establecer controles de servidor
<?php
// $ds es un identificador de conexion valido
// control sin valor
$ctrl1 = array("oid" => "1.2.752.58.10.1", "iscritical" => true);
// iscritical tiene un valor FALSE por defecto
$ctrl2 = array("oid" => "1.2.752.58.1.10", "value" => "magic");
// establecer los 2 controles a la vez
if (!ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array($ctrl1, $ctrl2)))
echo "No se han podido establecer los controles de servidor";
?>
Vea también ldap_get_option().
ldap_set_option
07-Mar-2007 11:00
23-May-2006 01:23
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...
31-Oct-2005 10:59
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;
?>
27-Feb-2002 12:56
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
28-Jan-2002 07:00
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);
