Tharla sé sin go raibh go leor oifigí iargúlta ag feachtas mór (réasúnta) le líon réasúnta úsáideoirí. Tá na hoifigí go léir nasctha in aon líonra amháin le fearann coiteann, sainíodh gach oifig san Eolaire Gníomhach (dá ngairtear AD anseo feasta) mar Aonad Eagraíochta (OU), inar cruthaíodh úsáideoirí cheana féin.
Bhí sé riachtanach deis a thabhairt d'úsáideoirí faisnéis teagmhála an fhostaí riachtanach a fháil go tapa agus gan stró ó AD, agus riarthóirí córais a shaoradh ón ngnáthamh eagarthóireacht a dhéanamh ar chomhad téacs a raibh ról an leabhair seoltaí aige.
Ní raibh aon roghanna oiriúnacha réamhdhéanta chun an fhadhb a réiteach, agus mar sin bhí orm gach rud a dhéanamh le mo lámha agus mo cheann féin.
Let tús leis an bhfíric go bhfuil ar dtús is gá duit a chinneadh cad a úsáid, tá sé simplí - ba chóir an t-eolaire deiridh a bheith ar fáil d'úsáideoirí go léir an fhearainn trí bhrabhsálaí. Is é an chéad rud a thagann chun cuimhne PHP i gcomhar le ldap, agus úsáidfimid iad. Measaim gurb é an buntáiste mór a bhaineann le PHP a úsáid ná a simplíocht choibhneasta - beidh aon riarthóir córais le fiú beagán tuisceana in ann na hathruithe riachtanacha a dhéanamh ar an gcód, más gá, gan brú go háirithe.
Mar sin, déanaimis tosú. Ar dtús, socróimid na paraiméadair chun nascadh leis an bhfearann:
$srv ="SERVER";
$srv_domain ="DOMAIN.COM";
$srv_login ="USERNAME@".$srv_domain;
$srv_password ="PASSWORD";
Is é an chéad phointe eile a chinneadh cén OU a chuardóidh muid d’úsáideoirí. Déanfaimid é seo trí luachanna a idircheapadh ó $_GET['áit']. Mar shampla, má théann an t-úsáideoir chuig an seoladh
$place = (@$_GET['place']);
$doscript=true;
switch($place){
case "first" :
$dn ="OU=ou1,OU=DOMAIN,dc=DOMAIN,dc=COM";
break;
case "second":
$dn ="OU=ou2,OU=DOMAIN,dc=DOMAIN,dc=COM";
break;
//здесь можно добавить ещё условий.
default:
$doscript=false;
break;
}
if (!$doscript) include "main_table.html";
Athróg $doscript is gá chun an luach a stóráil - cibé an bhfuil an OU sainmhínithe againn ina gcuirfimid cuardach ar úsáideoirí nó nach bhfuil. Mura bhfuil aon mheaitse liostaithe sa “cás lasc”, ansin $doscript=bréagach, ní dhéanfar príomhchuid na scripte a rith, agus taispeánfar an leathanach tosaigh “main_table.html” ( inseoidh mé duit faoi sé ag an deireadh).
Má tá OU sainmhínithe againn, leanaimid ar aghaidh chuig gníomhaíochtaí breise: tosaímid ar leathanach eolaire a tharraingt don úsáideoir:
else if ($doscript) {
{echo "
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<link rel='shortcut icon' href='ico.png'>
<meta charset='windows-1251/ '>
Áirímid stíleanna le haghaidh cuma níos taitneamhaí (tá, d'fhéadfaí iad a áireamh mar chomhad css, ach níl roinnt leaganacha de IE ag iarraidh glacadh le stíleanna atá leagtha síos ar an mbealach seo, mar sin caithfidh tú iad a scríobh go díreach isteach sa script):
<style>
*{text-align: center; font-family:tahoma; font-size:14px;}
a{text-decoration: none; color: #000;}
a:hover{text-decoration: underline; color: #0059FF;}
#bold{text-decoration: none; font-weight: 600;font-size:20px;}
#table,tr,td{border-style:solid;border-width:1px; border-collapse:collapse;padding:5px; height:22px;border-color:#7d7d7d;}
/* Нечетные строки */#table tbody tr:nth-child(odd){background: #fff;}
/* Четные строки */ #table tbody tr:nth-child(even){background: #F7F7F7;}
#noborder{border-width: 0 px; border-style: none;}
#sp30px{text-indent: 30px;text-align: justify;}
#smallsize{font-family:tahoma; text-indent: 5px; text-align:left; font-size:12px;}
#top {background: #ffffff;
text-align: center;
left:0;
top:0px;
table-layout: fixed;
border-style:solid;
border-width:0px;
border-collapse:collapse;
padding:0px;
height:22px;
border: 0px;
z-index: 99999;
display:block;
width:80px;
opacity: 0.6;
filter: alpha(Opacity=60);
height:100%;
position:fixed;}
#top:hover{background: #afafaf;opacity: 100;filter: alpha(Opacity=100);text-decoration: none;color: #000000;}
.smalltext{padding-top: 1px;
padding-bottom: 1px;
text-align: bottom;
font-family:tahoma;
color: #a0a0a0;
line-height: 7px;
font-size: 10px;}
.smalltext:hover{color: #0000ff;}
.transition-rotate {position: relative;
z-index: 2;
margin: 0 auto;
padding: 5px;
text-align: center;
max-width: 500px;
cursor: pointer;
transition: 0.1s linear;}
.transition-rotate:hover {-webkit-transform: rotate(-2deg); transform: rotate(-2deg);}
#lineheight{
text-align: left;
line-height: 1px;
text-decoration: none;
font-weight: 600;
font-size:20px;}
</style>
Táimid críochnaithe leis na stíleanna, anois scríobhaimid teideal an táb agus tarraingimid nasc áisiúil chun filleadh ar an bpríomhleathanach:
<title>Adressbook of «YourMegaCompanyName»</title>
</head>
<body style='background-color:#ffffff;'>";
}
echo "
<table id='top'><tr><td id='top'>
<a href='index.php?place=main' id='top' >
<br><br><br>
<img src='back_to_main.png' alt='' border='0' width='75' height='60'/>
<p>На главную</p></a>
</td></tr></table>
";
Sainmhínímid scagairí cuardaigh de réir AD agus faighimid sonraí faoin OU:
$filter ="(&(objectcategory=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))"; //все пользователи, кроме отключенных.
$filter2 ="(objectCategory=OrganizationalUnit)"; // для получения информации о OU
$ds=ldap_connect($srv);
if ($ds) {
$r=ldap_bind($ds,$srv_login,$srv_password);;
ldap_set_option($ds,LDAP_OPT_REFERRALS, 0);
ldap_set_option($ds,LDAP_OPT_PROTOCOL_VERSION,3);
$sr=ldap_search($ds,$dn ,$filter );
ldap_sort($ds,$sr, "givenname");
$info = ldap_get_entries($ds, $sr);
$sr2=ldap_search($ds,$dn ,$filter2 );
$placeinfo = ldap_get_entries($ds, $sr2);
$PlaceName = $placeinfo[0]["l"][0]; // name of place
$PlaceAddres = $placeinfo[0]["street"][0]; // address of place
$PlaceMail = $placeinfo[0]["description"][0]; // mail of place
$PlacePhone = $placeinfo[0]["st"][0]; // phone of plase
Ansin dearadh muid barr an leathanaigh:
echo"<table align='center' height = '80'>
<td id='noborder' ><div id='lineheight'>". $PlaceName ."</div></td></tr>
<tr><td id='noborder' >". $PlaceAddres ."</td></tr>
</table>
<table align='center' id='table'>
<tr><td width='35' bgcolor = #f0f0e4> № </td>
<td width='300' bgcolor = #f0f0e4> Name </td>
<td width='250' bgcolor = #f0f0e4> E-mail </td>
<td width='60' bgcolor = #f0f0e4> Phone </td>
<td width='150' bgcolor = #f0f0e4> Mobile </td></tr>
<tr><td></td><td> Данные OU </td><td>";
echo "<div class='transition-rotate'><a href=mailto:" . $PlaceMail .">" . $PlaceMail ." </a></div>";
echo "</td><td width='150'> " . $PlacePhone ." </td><td> - </td></tr>";
Ansin, faighimid agus próiseálann muid sonraí úsáideora i lúb, agus chun roinnt cuntas (mar shampla, seirbhís) a cheilt, ní dhéanaimid ach “folaigh” a chur isteach sa réimse “seomra” i sonraí an úsáideora in AD, ní bheidh úsáideoirí den sórt sin ann. ar taispeáint san eolaire:
for ($i=0; $i<$info["count"];$i++) {
$UserHide = $info[$i]["physicaldeliveryofficename"][0];
if ($UserHide != 'hide') {
$UserName = $info[$i]["cn"][0]; //Имя пользователя
$UserPosition = $info[$i]["title"][0]; // Должность
$UserMail = $info[$i]["mail"][0]; //mail
if (!$UserMail)) $UserMail = "-"; //если нет данных о ящике в AD, то отображаем прочерк
$UserIpPhone = $info[$i]["ipphone"][0]; //ip phone
if (!$UserIpPhone) $UserIpPhone = "-"; //если нет данных о ящике в AD, то отображаем прочерк
$UserMobile = $info[$i]["mobile"][0]; //mobile
if (!$UserMobile) $UserMobile = "-"; //если нет данных о ящике в AD, то отображаем прочерк
Dála an scéil, más gá duit luach tréith eile a fháil, cuimhnigh (tá sé seo tábhachtach):
san iarratas cuirimid an t-ainm aitreabúide cás íochtair litreacha, ar shlí eile ní oibreoidh sé.
Agus cuir isteach na sonraí a fuarthas sa tábla:
echo "<tr>
<td>". $n+=1 ."</td>
<td> ". $UserName ."<br> <div class='smalltext'>". $UserPosition ."</div></td><td>"; // Имя пользователя и должность
if ($UserMail !='-') echo "<div class='transition-rotate'><a href=mailto:'$UserMail'>$UserMail </a></div>"; // если у пользователя есть e-mail создаём ссылку на отправку письма
else echo "-"; //если нет e-mail - ставим прочерк.
echo "<td> ". $UserIpPhone ." </td>
<td> ". $UserMobile ." </td></tr>";
}
}
echo "</table>";
Ansin, dúnann muid an nasc ldap, nó taispeánaimid teachtaireacht faoin dodhéanta nascadh leis an bhfreastalaí:
ldap_close($ds);
}
else echo "<h4>Unable to connect to LDAP server</h4>";
echo '<br><br><br></body></html>';}
Is leathanach simplí html é an comhad “main_table.html” ón taobh istigh le naisc, agus tá cuma air mar seo:
<head>
<link rel="shortcut icon" href="ico.png"/>
<meta charset="windows-1251"/>
<title>Adressbook of «YourMegaCompanyName»</title>
</head>
<body style='background-color:#ffffff;'>
<center><a href=index.php><IMG border="none" src="logo.png"/></a></center>
<center><b>Places and offices</b></center>
<br>
<table border="0" width="450" bgcolor="#dddddd" align="center" valign="middle" CELLSPACING="0">
<tr id="space"><td></td></tr>
<tr><td align="left" id="abz"><a href="index.php?place=ou1">OU1</a></td></tr>
<tr id="space"><td></td></tr>
<tr><td align="left" id="abz"><a href="index.php?place=ou2">OU2</a></td></tr>
</table></body></html>
Má chabhraíonn mo chód le duine ar bith, beidh áthas orm, bain úsáid as!
Is féidir leat freisin é a chur in eagar go héasca mar is mian leat (feabhsaigh / níos measa) agus é a dháileadh ar aon mhodh.
Go raibh maith agat as bhur n-aire!
Foinse: will.com