la pregunta es simple y a la vez muy tonta pero es que llevo toda la santa tarde investigando como realizar una misera query con PEAR y no me ha quedado mas remedio que preguntar a ver si alguien sabe como se realiza.
A continuación os pongo un trozo del código el cual conecta con el ldap y obtengo unas entradas de él sin ningún problema:
Código PHP:
$ldap_host = "ldap.baylor.edu";
$base_dn = "ou=Third Year,ou=Student,ou=People,o=Baylor University,c=US";
$filter = "(cn=*)";
$ldap_user = "";
$ldap_pass = "";
$connect = ldap_connect( $ldap_host, $ldap_port)
or exit(">>Could not connect to LDAP server<<");
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($connect, $ldap_user, $ldap_pass)
or exit(">>Could not bind to $ldap_host<<");
$read = ldap_search($connect, $base_dn, $filter)
or exit(">>Unable to search ldap server<<");
$info = ldap_get_entries($connect, $read);
echo $info["count"]." entries returned<p>";
$ii=0;
for ($i=0; $ii<$info[$i]["count"]; $ii++){
$data = $info[$i][$ii];
echo $data.": ".$info[$i][$data][0]."<br>";
}
ldap_close($connect);
El problema surge cuando quiero pasar esas funciones y trabajar con PEAR, el código es el siguiente, aun no he puesto que muestre el resultado porque no creo que esté bien hecho, en el código anterior me da como resultado 11 entradas y en el código con PEAR da 1 entrada y ningún error, por tanto algo mal he hecho en la query.
Código PHP:
$dsn = "ldap://ldap.baylor.edu/ou=People,o=Baylor University,c=US";
$options = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
);
$db =& DB::connect($dsn, $options);
if (PEAR::isError($db)) {
die($db->getMessage());
}
$result =& $db->query("(cn=*)");
if (PEAR::isError($result)) {
die($result->getMessage());
}
$db->disconnect();
En cuanto a la funcion query empleada no he encontrado mucho mas lo que pone en la documentación:
Código:
query [line 592] LDAP_result &query( string $query, [array $data = array()], [string $action = null], [array $params = array()]) Executes a query substituting variables if any are present * Return: object or DB Error object if no result * See: DB_common::prepare() $this->execute()$this->simpleQuery() Parameters: string $query — text of the request to send to the LDAP server array $data — query variables values to substitute string $action — type of request to perform, defaults to search (ldap_search()) array $params — array of additional parameters to pass to the PHP ldap function requested
No se si alguien puede echarme una mano, le estaría muy agradecido.
Muchas gracias.