Tsim WEB chaw nyob directory PHP + LDAP

Nws thiaj li tshwm sim hais tias ib qho kev sib tw loj (kwv yees) muaj ntau lub chaw ua haujlwm nyob deb nroog nrog cov neeg siv tsawg. Tag nrho cov chaw ua haujlwm tau txuas rau hauv ib lub network nrog ib tus neeg sau npe, txhua qhov chaw ua haujlwm tau txhais hauv Active Directory (tom qab no hu ua AD) ua Lub Koom Haum Unit (OU), uas cov neeg siv tau tsim.

Nws yog ib qho tsim nyog los muab sijhawm rau cov neeg siv kom tau txais cov ntaub ntawv tiv tauj sai thiab tsis muaj zog ntawm cov neeg ua haujlwm xav tau los ntawm AD, thiab cov thawj coj pub dawb los ntawm cov txheej txheem hloov kho cov ntawv nyeem uas ua lub luag haujlwm ntawm phau ntawv chaw nyob.

Tsis muaj kev npaj tsim nyog rau kev daws teeb meem, yog li kuv yuav tsum ua txhua yam nrog kuv tus kheej tes thiab lub taub hau.

Cia peb pib nrog qhov tseeb tias ua ntej koj yuav tsum txiav txim siab seb yuav siv dab tsi, nws yooj yim - cov ntaub ntawv kawg yuav tsum muaj rau txhua tus neeg siv ntawm lub vev xaib ntawm browser. Thawj qhov uas los rau hauv siab yog PHP ua ke nrog ldap, thiab peb yuav siv lawv. Kuv xav txog qhov txiaj ntsig loj ntawm kev siv PHP los ua nws cov txheeb ze simplicity - txhua tus thawj tswj hwm uas muaj kev nkag siab me ntsis yuav tuaj yeem ua qhov tsim nyog hloov pauv rau cov cai, yog tias tsim nyog, tsis muaj qhov tshwj xeeb.

Yog li, cia peb pib. Ua ntej, cia peb teeb tsa qhov tsis sib xws rau kev txuas mus rau lub npe:

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

Cov ntsiab lus tom ntej yog los txiav txim seb qhov twg OU peb yuav tshawb nrhiav cov neeg siv. Peb yuav ua qhov no los ntawm kev cuam tshuam cov txiaj ntsig ntawm $_GET['place']. Piv txwv li, yog tias tus neeg siv mus rau qhov chaw nyob server/index.php?place=thawj, ces qhov sib txawv $ qhov chaw yuav muab tus nqi thawj.

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

Kuj tsis paub meej $doscript yog xav tau los khaws cov nqi - seb peb puas tau txhais OU uas peb yuav tshawb nrhiav cov neeg siv lossis tsis. Yog tias tsis muaj qhov sib tw hauv "hloov-cov ntaub ntawv", ces $doscript = cuav, qhov tseem ceeb ntawm tsab ntawv yuav tsis raug tua, thiab nplooj pib "main_table.html" yuav tshwm sim (Kuv mam li qhia koj txog nws thaum kawg).

Yog tias peb tau txhais ib qho OU, ces peb pib ua haujlwm ntxiv: peb pib kos nplooj ntawv rau tus neeg siv:

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

Peb suav nrog cov qauv rau qhov zoo nkauj dua (yog, lawv tuaj yeem suav nrog ua cov ntaub ntawv css, tab sis qee qhov versions ntawm IE tsis xav lees txais cov qauv hauv txoj kev no, yog li koj yuav tsum sau lawv ncaj qha rau hauv tsab ntawv):

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

Peb tau ua tiav nrog cov qauv, tam sim no peb sau lub npe ntawm lub tab thiab kos qhov txuas yooj yim kom rov qab mus rau nplooj ntawv tseem ceeb:

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

Peb txheeb xyuas cov ntxaij lim dej los ntawm AD thiab tau txais cov ntaub ntawv hais txog 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

Tom ntej no peb tsim lub sab saum toj ntawm nplooj ntawv:

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

Tom ntej no, peb tau txais thiab ua cov neeg siv cov ntaub ntawv nyob rau hauv ib lub voj, thaum nyob rau hauv thiaj li yuav nkaum ib co (piv txwv li, kev pab cuam) cov nyiaj, peb tsuas yog nkag mus rau "khawm" nyob rau hauv lub "chav" teb nyob rau hauv cov neeg siv cov ntsiab lus nyob rau hauv AD, xws li cov neeg siv yuav tsis tau. tso tawm rau hauv phau ntawv qhia:

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

Los ntawm txoj kev, yog tias koj xav tau tus nqi ntawm lwm tus cwj pwm, nco ntsoov (qhov no yog qhov tseem ceeb):
nyob rau hauv qhov kev thov peb dhau lub npe attribute tus lej qis ntawv, txwv tsis pub nws yuav tsis ua haujlwm.

Thiab ntxig cov ntaub ntawv tau txais mus rau hauv lub rooj:

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

Tom ntej no, peb kaw qhov kev sib txuas ldap, lossis tso cov lus hais txog qhov tsis tuaj yeem txuas rau lub server:

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

Cov ntaub ntawv "main_table.html" los ntawm sab hauv yog nplooj ntawv html yooj yim nrog kev sib txuas, thiab zoo li qhov no:

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

Yog tias kuv txoj cai pab leej twg, kuv yuav zoo siab, siv nws!

Koj tuaj yeem hloov kho nws dawb li koj xav tau (txhim kho / phem) thiab faib nws los ntawm txhua txoj kev.

Ua tsaug rau koj txoj kev paub!

Tau qhov twg los: www.hab.com

Ntxiv ib saib