No infatti hai ragione, a che serve sapere la password?
Però almeno, estrapolare:
- Nome e Cognome
Come si fà?
grazie e buona giornata
No infatti hai ragione, a che serve sapere la password?
Però almeno, estrapolare:
- Nome e Cognome
Come si fà?
grazie e buona giornata
fai un $link = ldap_search($connessione, $dn, 'uid=' . $nome_utente);
poi fai un $risultati = ldap_get_entries($connessione,$link);
poi nel $risultati avrai un array multidimensionale. Da questo array dovrai estrapolare gli attributi sn - cognome, givenName - nome, e mail - email (e se ti sevono altri, prendi in mano qualche tutorial su ldap)
gli attributi li devi prendere in questo modo:
se ad esempio la chiave givenName la trovi nel $risultati[$contatore_entry][$contatore_attributi]
il suo valore lo troverai in $risultati[$contatore_entry]["attribute"][$contatore_attributi]
ciao... :|
allora tra tutti gli attributi non ho visto nessun givenName oppure e mail:
ho fatto come mi hai detto:
cmq facendo in questo modo mi ha riestituito questo risultato:Codice PHP:$ds=ldap_connect($ldapconfig['host'],$ldapconfig['port']) or die ("Impossibile effettuare la connessione");
//echo $ldapconfig['basedn'];
$r = @ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $PHP_AUTH_USER);
if ($r)
{
$result = ldap_get_entries( $ds, $r);
var_dump($result[0]['dn']);
if ($result[0])
{
if (@ldap_bind( $ds, $result[0]['dn'], $PHP_AUTH_PW) )
{
/*var_dump($result[0]);
echo "
";
var_dump($result[0]["e mail"][5]);*/
return $result[0];
exit;
}
}
}
scusami ancora :|Codice PHP:var_dump($result[0]['dn']);
string(39) "uid=a.cassano,ou=Users,dc=azienda,dc=it"
Perche' fai il dump del $result[0]['dn'] ? Se fai un tentativo di leggere il manuale, scopri che result[0]['dn'] contiene solo il dn della prima entry.
var_dump($result[0]) cosa ti restituisce?
Io purtroppo non ho al momento un php con ldap sotto mano per controllare, e l'ultima volta ho lavorato con questo abbinamento 4 anni fa. Quindi non posso darti il codice esatto, posso solo sugertirti cosa e dove cercare..
ho visto sul manuale e ci sono altri paramentri da inserire per la ricerca e sono:
praticamente inserendo questi parametri qui dovrebbe funzionare, invece no:Codice PHP:$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");
facendo in questo modo mi da questo errore:Codice PHP:function ldap_authenticate()
{
global $ldapconfig;
global $PHP_AUTH_USER;
global $PHP_AUTH_PW;
$PHP_AUTH_USER = $_POST['txtUserName'];
$PHP_AUTH_PW = $_POST['txtPassword'];
if ($PHP_AUTH_USER != "" && $PHP_AUTH_PW != "")
{
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");
$ds=ldap_connect($ldapconfig['host'],$ldapconfig['port']) or die ("Impossibile effettuare la connessione");
$r = @ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $PHP_AUTH_USER, $filter, $justthese);
$info = ldap_get_entries($ds, $r);
echo $info["count"]." entries returned\n";
oddio che robaCodice PHP:Warning: ldap_get_entries(): supplied argument is not a valid ldap result resource on line 71
//e la riga 71 è questa
$info = ldap_get_entries($ds, $r);
grazie ancora per la pazienza....
Ma scusa, tu la variabile person non ce l'hai da nessuna parte, tu la devi recuperare in base all'uid..
Ripeto la domanda di sopra: var_dump($result) cosa ti dava su quel codice? Senza filtri, senza nient'altro..
cosi:
non ti da un array con tutti gli attributi dell'utente, da dove estrapolare quelli che ti servono?Codice PHP:$ds=ldap_connect($ldapconfig['host'],$ldapconfig['port']) or die ("Impossibile effettuare la connessione");
$r = @ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $PHP_AUTH_USER);
if ($r)
{
$result = ldap_get_entries( $ds, $r);
var_dump($result);
}
ciao bubi1, dopo mesi mi ritrovo a combattere con la stessa cosa....
allora riprendendo il tuo ultimo post.
Facendo il var_dump di result mi da un array con una marea di roba...che non sto qui a postare.
Oppure dimmi per favore qual'è la parte che ti interessa..
Vorrei chiederti anche, l'attributo che identifica la password è userPassword e fin qui ok.
Ora, com'è che viene codificata?In md5 o in sha1?
Perchè questo valore $_POST['password'] per essere confrontato con quello in LDAP lo dovrò sicuramente criptare giusto?
Una cosa che non ho capito per niente, anche se sto cercando di documentarmi, ma il confronto con la username e password digitata come avviene?
Perchè facendo in questo modo:
Facendo in questo modo, qualsiasi password che digito mi fa entrare, controllando soltanto la Username che digito tralasciando la password.Codice PHP:function ldap_authenticate()
{
global $ldapconfig;
global $PHP_AUTH_USER;
global $PHP_AUTH_PW;
$PHP_AUTH_USER = $_POST['uname'];
$_SESSION['SessUserName'] = $PHP_AUTH_USER;
$PHP_AUTH_PW = $_POST['passw'];
$_SESSION['SessUserPass'] = $PHP_AUTH_PW;
if ($PHP_AUTH_USER != "" && $PHP_AUTH_PW != "")
{
$ds=ldap_connect($ldapconfig['host'],$ldapconfig['port']) or die ("Impossibile effettuare la connessione");
$r = @ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $PHP_AUTH_USER);
if ($r)
{
$result = ldap_get_entries( $ds, $r);
//var_dump($result);exit;
if ($result[0])
{
var_dump($result[0]['dn']);exit;
if (@ldap_bind( $ds, $result[0]['dn'], $PHP_AUTH_PW) )
{
echo "Dentro bind\n
";
var_dump($result);exit;
return $result[0];
}
echo "Fuori bind\n
";
var_dump($result[0]);exit;
}
}
}
return NULL;
}//end function
if (($result = ldap_authenticate()) == NULL)
{
switch($status){
case AUTH_NOT_LOGGED:
//include 'include/alert.php';
exit;
break;
}
}
Quindi:come faccio a confrontare anche la password?
Dopo mesi, grazie ancora![]()
ti da "Dentro bind" con qualsiasi password??
No, adesso con la modifichetta che ho fatto, se digito una password sbagliata mi va nel ramo else "Non autenticato",e quindi...sembra funzionare...
Però non mi spiego perchè, il valore di $result è sempre NULL, faccio cosi:
PErchè mi restituisce sempre NULL?Codice PHP://ho modificato qualcosa
if ($r)
{
$result = ldap_get_entries( $ds, $r );
if ($result)
{
$ldapBind = @ldap_bind( $ds, $result[0]['dn'], $PHP_AUTH_PW);
if ($ldapBind)
{
echo "Autenticato\n
";
return $result;
}
else{
echo "Non autenticato\n
";
return NULL;
}
}
}
}
//return NULL;
}//end function
if (($result = ldap_authenticate()) == NULL)
{
switch($status){
case AUTH_NOT_LOGGED:
include 'include/alert.php';
break;
}
}
grazie ancora![]()
non ho capito una mina.
In quale punto esatto del programma $result e' null e tu ti aspetti che non lo sia (ovviamente se hai inserito user/pass giusti)?