Kwenzeka ukuthi inkampani enkulu (ngokuqhathaniswa) inamahhovisi amaningi akude, ngalinye lihlala inani elibalulekile labasebenzisi. Wonke amahhovisi ayexhunywe kunethiwekhi eyodwa enesizinda esifanayo, futhi ihhovisi ngalinye lachazwa ku-Active Directory (ngemuva kwalokhu AD) njenge-Organization Unit (OU), eyayinabasebenzisi kakade.
Kwakudingeka ukunikeza abasebenzisi ikhono lokuthola ngokushesha futhi kalula imininingwane yokuxhumana yesisebenzi esidingekayo esivela ku-AD, kanye nokukhulula abaphathi besistimu ohlelweni lokuhlela ifayela lombhalo elisebenza njengencwadi yamakheli.
Zazingekho izinketho ezifanele esezenziwe kakade zokuxazulula umsebenzi, ngakho kwakufanele ngizenzele yonke into mina.
Ake siqale ngokunquma ukuthi sizosebenzisa ini. Lokhu kulula: uhla lwemibhalo oluwumphumela kufanele lufinyeleleke kubo bonke abasebenzisi besizinda ngesiphequluli. Into yokuqala efika emqondweni i-PHP ehlanganiswe ne-LDAP, ngakho-ke yilokho esizokusebenzisa. Ngibheka inzuzo enkulu yokusebenzisa i-PHP njengokulula kwayo—noma yimuphi umlawuli wesistimu onokuqonda okuncane angenza ukuhlela okudingekayo kukhodi ngaphandle komzamo omkhulu.
Ngakho, ake siqale. Okokuqala, ake simise imingcele yokuxhumeka kwesizinda:
$srv ="SERVER";
$srv_domain ="DOMAIN.COM";
$srv_login ="USERNAME@".$srv_domain;
$srv_password ="PASSWORD";
Isinyathelo esilandelayo siwukunquma ukuthi iyiphi i-OU esizosesha kuyo abasebenzisi. Sizokwenza lokhu ngokunqamula amanani asuka ku-$_GET['indawo']. Isibonelo, uma umsebenzisi ezulazulela ku kuqala, bese iyaguquguquka Indawo ye-$ izonikezwa inani kuqala.
$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";
Iyaguquguquka $doscript Lokhu kuyadingeka ukuze kugcinwe inani—noma ngabe siyichazile i-OU okufanele siseshwe kuyo abasebenzisi. Uma kungekho okufanayo okutholakala njengoba kucacisiwe kokuthi "switch-case," bese kuba ngu-$doscript=false. Ingxenye eyinhloko yombhalo ngeke isetshenziswe, futhi ikhasi lokuqala elithi "main_table.html" (Ngizoxoxa ngakho ekugcineni) lizoboniswa.
Uma sichaze i-OU, bese siqhubekela ezenzweni ezengeziwe: siqala ukudweba ikhasi lesithenjwa somsebenzisi:
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/ '>
Sifaka izitayela zokubukeka okujabulisa kakhudlwana (yebo, kungenzeka ukuthi zifakwe njengefayela le-CSS, kodwa ezinye izinguqulo ze-IE azifuni ukwamukela izitayela ezicaciswe ngale ndlela, ngakho-ke kufanele uzibhale ngqo esikripthini):
<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>
Manje njengoba sesiqedile ngezitayela, masibhale isihloko sethebhu bese sidweba isixhumanisi esilungele ukubuyela ekhasini eliyinhloko:
<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>
";
Sichaza izihlungi zosesho lwe-AD futhi sithola idatha mayelana ne-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
Okulandelayo, siklama ingxenye ephezulu yekhasi:
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>";
Okulandelayo, sithola futhi sicubungule idatha yomsebenzisi ngokulandelana. Ukufihla ama-akhawunti athile (ngokwesibonelo, ama-akhawunti wesevisi), sivele sifake okuthi "fihla" endaweni ethi "igumbi" emininingwaneni yomsebenzisi ku-AD; abasebenzisi abanjalo ngeke baboniswe ohlwini lwemibhalo:
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, то отображаем прочерк
Phela, uma udinga ukuthola inani lesinye isici, khumbula (lokhu kubalulekile):
Sidlulisela igama lesibaluli esicelweni izinhlamvu ezincane izincwadi, kungenjalo ngeke kusebenze.
Futhi sifaka idatha etholiwe etafuleni:
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>";
Okulandelayo, sivala uxhumano lwe-LDAP noma sibonise umlayezo mayelana nokungakwazi ukuxhuma kuseva:
ldap_close($ds);
}
else echo "<h4>Unable to connect to LDAP server</h4>";
echo '<br><br><br></body></html>';}
Ifayela elithi "main_table.html" liyikhasi le-HTML elilula elinezixhumanisi futhi libukeka kanje:
<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>
Uma ikhodi yami isiza noma ubani, ngingajabula, isebenzise!
Ukhululekile futhi ukukuhlela ngendlela ofisa ngayo (uthuthukise/ululaze) futhi usabalalise nganoma iyiphi indlela.
Спасибо за внимание!
Source: www.habr.com
