Hola de nuevo, estoy intentando con otro código , donde $userActual es el usuario logueado, y $username es el usuario a ingresar y a comprobar
Código PHP:
function busquedaLDAP($userActual, $password, $username){
$ldapconn = conectarLDAP();
// Verificación del establecimiento de la conexión con algún servidor
if(!$ldapconn[0] && !$ldapconn[1]) {
// Conexión Fallida. Devuelve código de error asociado (1)
return 1;
// Alguna conexión Exitosa
} else {
// Nombre Relativo Distinguido del usuario en el LDAP (
$ldaprdn = $userActual;
// Contraseña del usuario en el Directorio Activo
$ldappass = $password;
// Realizando la autenticación del usuario en el(los) servidor(es) LDAP
// conectado(s)
$ldapbind = autenticarLDAP($ldapconn[0], $ldaprdn, $ldappass);
$ldapbind2 = autenticarLDAP($ldapconn[1], $ldaprdn, $ldappass);
// Verificación del enlace resultante
if ($ldapbind || $ldapbind2) {
$binddn = "ou=Users,dc=intra";
$filter = "(&(samaccountname=".$userActual.") (objectClass=user)(objectCategory=person) )";
$fields = array("samaccountname");
$search=ldap_search($ldapconn, $binddn, $filter, $fields);
//$search=ldap_search($ldapconn,"ou=Users,dc=intra", "samaccountname=$username");
if($search==false) {
echo"Hay algun error</br>";
desconectarLDAP($ldapconn[0]);
desconectarLDAP($ldapconn[1]);
// Autenticación Fallida (usuario no pertenece a directorio Activo). Devuelve código de error asociado (2)
return 2;
}
else {
echo "El resultado de la busqueda es ".$search."<p>";
print_r($search);
echo "El numero de entradas devueltas es ".ldap_count_entries($ldapconn,$search)."<p>";
echo "Recuperando entradas ...<p>";
$datosldap = ldap_get_entries($ldapconn, $search);
echo "Devueltos datos de ".$datosldap["count"]." entradas:<p>";
//ver nombre de los atributos
$entrada = ldap_first_entry($ldapconn, $search);
$atributos = ldap_get_attributes($ldapconn, $entrada);
echo $atributos["count"]." atributos contenidos en esta entrada:<p>";
for ($i=0; $i < $atributos["count"]; $i++)
echo $atributos[$i]."<br>";
//comparación con usuario
$dn = $datosldap[0]["dn"];
$r=ldap_compare($ldapconn,$dn,"samaccountname", $username);
if ($r === -1) {
$msg = "Error datos"; //Contraseña incorrecta
}
elseif ($r === true) {
echo"Correcto</br>";
desconectarLDAP($ldapconn[0]);
desconectarLDAP($ldapconn[1]);
return 0;
}
}
} else {
desconectarLDAP($ldapconn[0]);
desconectarLDAP($ldapconn[1]);
// Autenticación Fallida (usuario no pertenece a directorio Activo). Devuelve código de error asociado (2)
return 2;
}
}
}
Pero me aparecen estos errores :
Cita: El resultado de la busqueda es Array
Array ( [0] => Resource id #11 [1] => Resource id #12 )
Warning: ldap_count_entries(): supplied argument is not a valid ldap link resource
El numero de entradas devueltas es
Recuperando entradas ...
Warning: ldap_get_entries(): supplied argument is not a valid ldap link resource
Devueltos datos de entradas:
Warning: ldap_first_entry(): supplied argument is not a valid ldap link resource
Warning: ldap_get_attributes(): supplied argument is not a valid ldap link resource
atributos contenidos en esta entrada:
Warning: ldap_compare(): supplied argument is not a valid ldap link resource