Kugadzira kero yewebhu yewebhu PHP + LDAP

Zvakaitika kuti (zvishoma) mushandirapamwe wakakura waive nemahofisi mazhinji ari kure ane nhamba yakanaka yevashandisi. Mahofisi ese akabatanidzwa mune imwechete network ine yakajairika domain, hofisi yega yega yakatsanangurwa muActive Directory (inozonzi AD) seSangano Unit (OU), umo vashandisi vakatogadzirwa.

Zvakanga zvakafanira kupa vashandisi mukana wekukurumidza uye pasina simba kuwana ruzivo rwekusangana kwemushandi anodiwa kubva kuAD, uye mahara system administrator kubva kumaitiro ekugadzirisa mameseji faira akaita basa rebhuku rekero.

Pakanga pasina sarudzo dzakagadzirirwa dzakagadzirirwa dzekugadzirisa dambudziko, saka ndaifanira kuita zvese nemaoko angu nemusoro.

Ngatitange nenyaya yekuti chekutanga iwe unofanirwa kusarudza kuti chii chaunoshandisa, chiri nyore - iyo yekupedzisira dhairekitori inofanirwa kuwanikwa kune vese vashandisi veiyo domain kuburikidza nebrowser. Chinhu chekutanga chinouya mupfungwa iPHP pamwe chete neldap, uye isu tichavashandisa. Ini ndinoona mukana mukuru wekushandisa PHP kuve kureruka kwayo - chero maneja wehurongwa ane chero kunzwisisa kudiki achakwanisa kuita shanduko dzinodiwa kune kodhi, kana zvichidikanwa, pasina kunyanya kuomesera.

Saka, ngatitange. Chekutanga, ngatiise maparameter ekubatanidza kune domain:

$srv ="SERVER";
$srv_domain ="DOMAIN.COM";
$srv_login ="USERNAME@".$srv_domain; 
$srv_password ="PASSWORD";

Pfungwa inotevera ndeyekuona kuti ndeipi OU yatichatsvaga vashandisi. Tichaita izvi nekudzvanya kukosha kubva ku $ _GET['nzvimbo']. Semuenzaniso, kana mushandisi akaenda kukero server/index.php?place=chekutanga, ipapo musiyano $nzvimbo achapihwa kukosha chekutanga.

$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";

Variable $doscript inodiwa kuchengetedza kukosha - kunyangwe tatsanangura OU yatichatsvaga vashandisi kana kwete. Kana pasina machisi akanyorwa mu “switch-case”, then $doscript=false, chikamu chikuru chegwaro hachizoitwa, uye peji rekutanga “main_table.html” richaratidzwa (ini ndichakuudza nezvazvo. iko kumagumo chaiko).

Kana isu tatsanangura OU, saka tinoenderera mberi kune zvimwe zviito: tinotanga kudhirowa dhairekitori peji remushandisi:

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/ '>

Isu tinosanganisira masitayera ekutaridzika kunakidza (hongu, anogona kuverengerwa se css faira, asi mamwe mavhezheni eIE haadi kubvuma masitayera akaiswa nenzira iyi, saka unofanirwa kuanyora zvakananga muscript):

<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>

Isu tapedza nematayera, ikozvino tinonyora zita reti uye dhirowa chinongedzo chiri nyore kuti tidzokere kune iyo huru peji:

<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>
";

Isu tinotsanangura mafirita ekutsvaga neAD uye tinowana data nezveOU:

$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

Tevere tinogadzira pamusoro pe peji:

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>";

Tevere, tinogashira nekugadzirisa data remushandisi muchiuno, nepo kuti tivanze mamwe (semuenzaniso, sevhisi) maakaundi, isu tinongoisa "vanda" mundima ye "kamuri" mune zvemushandisi muAD, vashandisi vakadaro havazove. inoratidzwa mudhairekitori:

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, то отображаем прочерк

Nenzira, kana iwe uchida kuwana kukosha kwehumwe hunhu, saka rangarira (izvi zvakakosha):
muchikumbiro tinopa zita rehunhu tsamba shoma tsamba, zvikasadaro hazvishande.

Uye isa iyo yakagamuchirwa data mutafura:

    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>";

Tevere, tinovhara iyo ldap yekubatanidza, kana kuratidza meseji nezvekusagoneka kwekubatanidza kune server:

ldap_close($ds); 
} 
else echo "<h4>Unable to connect to LDAP server</h4>"; 
echo '<br><br><br></body></html>';}

Iyo faira "main_table.html" kubva mukati iri nyore html peji rine malink, uye rinotaridzika seizvi:

<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>

Kana kodhi yangu ichibatsira chero munhu, ndichafara, ishandise!

Iwe unogona zvakare kuigadzirisa zvakasununguka sezvaunoda (kuvandudza / zvakanyanya) uye kuigovera nenzira ipi zvayo.

Спасибо за внимание!

Source: www.habr.com

Voeg