max246
06-07-2006, 16:15
Prometto che questo codice non è mio e lo sto modificando per farlo funzioanre su piu domini
Il mio problema è che devo farlo funzioan su piu domini, il dominio principale è pippo.ch e funziona invece quando cerco di farlo su pippo2.pippo.ch mi da qualche errore, ovvero non riesco a connettermi.
Qualcuno mi da dare una mano?
function getDomainUsers($domin) {
// Get name value to search for from submitted form.
//if ($domin == "pippo2") $serv = "sr-001b";
//if ($domin == "pippo3") $serv = "sr-001c";
//if ($domin == "pippo4") $serv = "sr-001d"; $auth_user = "$domin\\oper"; $auth_pass = "oper";
if ($domin == "pippo") $serv = "pippo";
$ldap_server = "ldap://$serv";
$auth_user = "$domin\\oper";
$auth_pass = "oper";
// Set the base dn to search the entire microsoft.com directory.
$base_dn = "DC=$domin, DC=ch";
/* filter the search for logged user*/
$filter = "(&(objectClass=user)(objectCategory=person)(cn=*))";
$attr = array("samaccountname", "cn", "groupType");
// connect to server
if (!($connect=ldap_connect($ldap_server))) {
die("Could not connect to ldap server");
}
// bind to server
if (!($bind=ldap_bind($connect, $auth_user, $auth_pass))) {
die("Unable to bind to server");
}
// search active directory
if (!($search=@ldap_search($connect, $base_dn, $filter))) {
die("Unable to search ldap server");
}
$number_returned = ldap_count_entries($connect,$search);
$info = ldap_get_entries($connect, $search);
/*echo "<pre>";
print_r($info);
echo "</pre>"; */
$a = 0;
$gruppi = array();
$gruppi[0] = "";
for ($i=0; $i<$info["count"]; $i++) {
$user[$i][0] = $info[$i]['cn'][0];
$user[$i][1] = $domin. "\\" . $info[$i]['samaccountname'][0];
for ($x=0; $x < @$info[$i]["memberof"]["count"]; $x++) {
$cut_start = strpos($info[$i]["memberof"][$x], "=") + 1;
$cut_lenght = strpos($info[$i]["memberof"][$x], ",") - $cut_start;
//$user[$x]['GROUPS']=
$gruppo = @substr($info[$i]["memberof"][$x], $cut_start, $cut_lenght);
for ($y = 0;$y < count($gruppi);$y++) {
if ($gruppi[$y] == $gruppo) {
$insert = 0;
break;
}
else {
$insert = 1;
}
}
if ($insert == 1) {
$gruppi[$a] = $gruppo;
$a++;
}
//echo $user[$i][0]." <br>";
//print $USER[3][$x]."<br>";
}
}
sort($user);
$numfinale = $info["count"] + 1;
sort($gruppi);
for ($y = 0;$y<count($gruppi);$y++) {
if ($y == 0) {
$user[$numfinale][1] = "gruppi";
$user[$numfinale][0] = "gruppi";
}
else {
$user[$numfinale][1] = $domin. "\\" . $gruppi[$y];
$user[$numfinale][0] = $gruppi[$y];
}
$numfinale++;
}
ldap_close($connect);
reset($user);
return $user;
}
Il mio problema è che devo farlo funzioan su piu domini, il dominio principale è pippo.ch e funziona invece quando cerco di farlo su pippo2.pippo.ch mi da qualche errore, ovvero non riesco a connettermi.
Qualcuno mi da dare una mano?
function getDomainUsers($domin) {
// Get name value to search for from submitted form.
//if ($domin == "pippo2") $serv = "sr-001b";
//if ($domin == "pippo3") $serv = "sr-001c";
//if ($domin == "pippo4") $serv = "sr-001d"; $auth_user = "$domin\\oper"; $auth_pass = "oper";
if ($domin == "pippo") $serv = "pippo";
$ldap_server = "ldap://$serv";
$auth_user = "$domin\\oper";
$auth_pass = "oper";
// Set the base dn to search the entire microsoft.com directory.
$base_dn = "DC=$domin, DC=ch";
/* filter the search for logged user*/
$filter = "(&(objectClass=user)(objectCategory=person)(cn=*))";
$attr = array("samaccountname", "cn", "groupType");
// connect to server
if (!($connect=ldap_connect($ldap_server))) {
die("Could not connect to ldap server");
}
// bind to server
if (!($bind=ldap_bind($connect, $auth_user, $auth_pass))) {
die("Unable to bind to server");
}
// search active directory
if (!($search=@ldap_search($connect, $base_dn, $filter))) {
die("Unable to search ldap server");
}
$number_returned = ldap_count_entries($connect,$search);
$info = ldap_get_entries($connect, $search);
/*echo "<pre>";
print_r($info);
echo "</pre>"; */
$a = 0;
$gruppi = array();
$gruppi[0] = "";
for ($i=0; $i<$info["count"]; $i++) {
$user[$i][0] = $info[$i]['cn'][0];
$user[$i][1] = $domin. "\\" . $info[$i]['samaccountname'][0];
for ($x=0; $x < @$info[$i]["memberof"]["count"]; $x++) {
$cut_start = strpos($info[$i]["memberof"][$x], "=") + 1;
$cut_lenght = strpos($info[$i]["memberof"][$x], ",") - $cut_start;
//$user[$x]['GROUPS']=
$gruppo = @substr($info[$i]["memberof"][$x], $cut_start, $cut_lenght);
for ($y = 0;$y < count($gruppi);$y++) {
if ($gruppi[$y] == $gruppo) {
$insert = 0;
break;
}
else {
$insert = 1;
}
}
if ($insert == 1) {
$gruppi[$a] = $gruppo;
$a++;
}
//echo $user[$i][0]." <br>";
//print $USER[3][$x]."<br>";
}
}
sort($user);
$numfinale = $info["count"] + 1;
sort($gruppi);
for ($y = 0;$y<count($gruppi);$y++) {
if ($y == 0) {
$user[$numfinale][1] = "gruppi";
$user[$numfinale][0] = "gruppi";
}
else {
$user[$numfinale][1] = $domin. "\\" . $gruppi[$y];
$user[$numfinale][0] = $gruppi[$y];
}
$numfinale++;
}
ldap_close($connect);
reset($user);
return $user;
}