İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

PHP ile LDAP Uygulamaları

LDAP (Lightweight Directory Access Protocol), bir dizin servisi protokolü türevidir. Dizin servisleri hiyararşik bir yapıda (dizin yapısında), veriye merkezi olarak ulaşılması için düşünülmüş bir bakıma veritabanı hizmeti veren sistemlerdir. Açık sistem olması dünya üzerinde global olarak erişilebilir bilgi kaynakları oluşturulabilmesini sağlar. Bunu yaparken coğrafi yapı (ülke, şehir), kurum içi organizasyon ve diğer özellikleri içeren hiyerarşik bir yapı kullanır.

Özellikle kurum içi organizasyon ve personelin kayıtlarının tutulabileceği elverişli bir ortam sunar. Bir kurumda çalışan veya bir üniversitede okuyan öğrencilere çeşitli servisler sunmanız gerekir. Bunun için her servisin üzerinde çalıştığı makinada ayrı ayrı kullanıcı hesapları açmanız gerekebilir. Böyle olunca sistemin ve kullanıcıların yönetimi zorlaşır. LDAP kullanarak bu sorun çözülebilir.

Kuruma giren personel için LDAP sunucusuna tek bir entry eklersiniz ve LDAP desteği veren servislerin bu sunucu üzerinden kullanıcı bilgilerine erişim ve doğrulama yapmalarını sağlayabilirsiniz.

PHP'de LDAP için iyi bir arabirim sunmaktadır. Bu sayede web uygulamalarınızda da LDAP kullanılabilmekte ve özellikle kullanıcılara kendilerine ait verileri güncelleyebilme olanağı sunuluyor.

LDAP Dizin Servisi:

LDAP dizinleme sisteminde her kayda ait özellikler (attributes) ve bu özelliklerin değerleri (values) vardır. Her kaydın ait olduğu bir nesne sınıfı (object class) vardır. Bu yapı sayesinde dünya üzerindeki her LDAP kaydı biricik olur. Bunun için DNS de olduğu gibi hiyerarşik bir isimlendirme kullanılmıştır. Kullanıcı bu biricikliğini DN (Distinguished Name) özelliğinden alır.

Örneğin dn='cn=Mustafa Hadi Dilek, o=Ulakbim, c=tr' benim Türkiye içinde, Ulakbim adlı kuruluşta, adı 'Mustafa Hadi Dilek' olan kişi olduğumu söyler ve biriciktir.

Örneğin bir kurumda çalışan personele ait bazı özellikler şunlar olabilir:

Genellikle sistemde yeni bir kullanıcı açarken 'inetorgperson' sınıfı kullanılır.

PHP ile LDAP Kullanımı:

PHP ile LDAP'a erişim oldukça kolaydır. İzlenmesi gereken sıra:

LDAP sunucusuna bağlanma (connect)

LDAP sunucusuna belirli bir noktadan erişim için doğrulama (bind)

LDAP arama ve değiştirme türü işlevleri kullanma

Elde edilen sonuçları kullanma

LDAP sunucusu ile bağlantıyı kesme (close connect)

Örnekler:

Telefon Defteri. LDAP üzerinden personel kayıtlarını görme, arama ve değişiklik olanağı. Kaynak kod:

index.php - Giriş scripti

Göster Gizle Kopar Satır Gizle Satır Göster
<?
  header("Location: rehber.php");
  exit;
?>

login.php - Login scripti

Göster Gizle Kopar Satır Gizle Satır Göster
<? 
//-- Telefon Rehberi -- 
// login.php 
// LDAP uzerinde degisiklik icin login ekrani uretir. 
// Yazan: Mustafa Hadi Dilek, Subat 2000 
//------------- 
  require("common.php"); 
  if (!ValidateHOST()) { 
    CommonHeader("LDAP Sunucusuna Bağlan"); 
    echo "Üzgünüz. LDAP bilgileri ancak Ulakbim içindeki bilgisayarlardan değiştirilebilir..."; 
    CommonFooter($footer_links); 
    exit; 
  } 

  if(!isset($user)) $user=""; 
   
  setcookie("user"); 
  setcookie("pwd"); 
   
  CommonHeader("LDAP Sunucusuna Bağlan"); 
//-------------   
?> 

<FORM ACTION="modify.php" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded"> 

<? 
//------------- 
  echo "<TABLE WIDTH=\""._WIDTH."\" BORDER=\"0\" CELLSPACING=\"1\" CELLPADDING=\"1\">\n"; 
//------------- 
?> 

    <TR ALIGN="left" VALIGN="top"> 
      <TD CLASS="formlabel">Kullanıcı Adı:&nbsp</TD> 

<? 
//------------- 
  echo "<TD CLASS=\"formvalue\"><INPUT NAME=\"user\" TYPE=\"Text\" VALUE=\"$user\"></INPUT></TD>"; 
//------------- 
?> 

    </TR> 
    <TR ALIGN="left" VALIGN="top"> 
      <TD CLASS="formlabel">Sifre:&nbsp</TD> 
      <TD CLASS="formvalue"><INPUT NAME="pwd" TYPE="Password"></INPUT></TD> 
    </TR> 
    <TR ALIGN="left" VALIGN="top"> 
      <TD CLASS="formlabel">&nbsp;</TD> 
      <TD CLASS="formvalue"><INPUT NAME="submit" TYPE="Submit" VALUE="Bağlan"></INPUT></TD> 
    </TR> 
  </TABLE> 
</FORM> 

<? 
  $footer_links["rehber.php"] ="Ulakbim Telefon Rehberi"; 
  CommonFooter($footer_links); 

  if (isset($empty)) echo "<SCRIPT>alert(\"Kullanıcı adı ve şifreyi girmelisiniz...\");</SCRIPT>\n"; 
  if (isset($unauth)) echo "<SCRIPT>alert(\"Kullanıcı olarak tanımlanamadınız...\");</SCRIPT>\n"; 
  if (isset($enablecookie)) echo "<SCRIPT>alert(\"Tarayıcınızda cookie'leri etkinleştirip tekrar deneyin...\");</SCRIPT>\n"; 
?>

rehber.php - Arama ekranı içeren ana script

Göster Gizle Kopar Satır Gizle Satır Göster
<? 
//-- Telefon Rehberi -- 
// rehber.php 
// Arama formunu ve sonuclari uretir. LDAP tabanli. 
// Turkce karakterleri siralama destegi henuz yok. 
// Yazan: Mustafa Hadi Dilek, Subat 2000 
//------------- 
  require("common.php"); 

  if(!isset($cn)) $cn=""; 
  if(!isset($telephonenumber)) $telephonenumber=""; 
  if(!isset($roomnumber)) $roomnumber=""; 
  if(!isset($mail)) $mail=""; 

  CommonHeader("Ulakbim Telefon Rehberi"); 

  if (ValidateHOST()) $footer_links["login.php"] ="LDAP Kaydı Değiştirme"; 
//------------- 
?> 

<FORM ACTION="rehber.php" METHOD="post" ENCTYPE="application/x-www-form-urlencoded"> 
<INPUT TYPE="hidden" NAME="query" VALUE="YES"> 

<!-- Eski hali 
<? 
//------------- 
  echo "<TABLE WIDTH=\""._WIDTH."\" BORDER=\"0\" CELLSPACING=\"1\" CELLPADDING=\"1\">\n"; 
//------------- 
?> 
<TR> 
    <TD ALIGN="right" WIDTH="100"></A><? echo $ldap_attr_str["cn"]; ?></TD> 
    <TD><? echo "<INPUT TYPE=\"text\" NAME=\"cn\" VALUE=\"$cn\">"; ?></TD> 
</TR> 
<TR> 
    <TD ALIGN="right"><? echo $ldap_attr_str["telephonenumber"]; ?></TD> 
    <TD><? echo "<INPUT TYPE=\"text\" NAME=\"telephonenumber\" VALUE=\"$telephonenumber\">"; ?></TD> 
</TR> 
<TR> 
    <TD ALIGN="right"><? echo $ldap_attr_str["roomnumber"]; ?></TD> 
    <TD><? echo "<INPUT TYPE=\"text\" NAME=\"roomnumber\" VALUE=\"$roomnumber\">"; ?></TD> 
</TR> 
<TR> 
    <TD ALIGN="right"><? echo $ldap_attr_str["mail"]; ?></TD> 
    <TD><? echo "<INPUT TYPE=\"text\" NAME=\"mail\" VALUE=\"$mail\">"; ?></TD> 
</TR> 
<TR> 
    <TD>&nbsp;</TD> 
    <TD><INPUT TYPE="submit" NAME="Ara" VALUE="Ara"></TD> 
</TR> 
</TABLE> 
--> 

<FIELDSET> 
<? 
//------------- 
  echo "<TABLE WIDTH=\""._WIDTH."\" BORDER=\"0\" CELLSPACING=\"1\" CELLPADDING=\"1\">\n"; 
//------------- 
?> 
<TR> 
    <TD CLASS="formlabel"> 
    <label accesskey="a" for="fcn"><? echo $ldap_attr_str["cn"]; ?></label> 
  </TD> 
    <TD CLASS="formvalue"> 
    <? echo "<INPUT TYPE=\"text\" NAME=\"cn\" ID=\"fcn\" VALUE=\"$cn\">"; ?> ve 
  </TD> 
</TR> 
<TR> 
    <TD CLASS="formlabel"><label accesskey="t" for="ftelephonenumber"> 
    <? echo $ldap_attr_str["telephonenumber"]; ?></label> 
  </TD> 
    <TD CLASS="formvalue"> 
    <? echo "<INPUT TYPE=\"text\" NAME=\"telephonenumber\" ID=\"ftelephonenumber\" VALUE=\"$telephonenumber\">"; ?> ve 
  </TD> 
</TR> 
<TR> 
    <TD CLASS="formlabel"><label accesskey="o" for="froomnumber"> 
    <? echo $ldap_attr_str["roomnumber"]; ?></label> 
  </TD> 
    <TD CLASS="formvalue"> 
    <? echo "<INPUT TYPE=\"text\" NAME=\"roomnumber\" ID=\"froomnumber\" VALUE=\"$roomnumber\">"; ?> ve 
  </TD> 
</TR> 
<TR> 
    <TD CLASS="formlabel"><label accesskey="m" for="fmail"> 
    <? echo $ldap_attr_str["mail"]; ?></label> 
  </TD> 
    <TD CLASS="formvalue"> 
    <? echo "<INPUT TYPE=\"text\" NAME=\"mail\" ID=\"fmail\" VALUE=\"$mail\">"; ?> 
  </TD> 
</TR> 
<TR> 
    <TD CLASS="formlabel">&nbsp;</TD> 
    <TD CLASS="formvalue"><INPUT TYPE="submit" NAME="Ara" VALUE="Ara"></TD> 
</TR> 
</TABLE> 
</FIELDSET> 
</FORM> 

<? 
//------------- 
  if (!isset($query)) { 
    CommonFooter($footer_links); 
    exit; 
  } 
//------------- 

?> 
  <DIV CLASS="title">Arama Sonuçları</DIV> 
<? 

//------------- 
  $my_con=@ldap_connect(_LDAP_HOST,_LDAP_PORT);  // ! this must be a valid LDAP server ! 

  if (!$my_con) { 
    echo "Hata. LDAP sunucu baglantısı saglanamadı.<BR>Sorun yetkililere iletildi..."; 
    mail(getenv("SERVER_ADMIN"), // Target address 
      "Ulakbim Telefon Rehberi'nde hata!!!",  // Subject 
      "LDAP sunucusuna erisim basarisiz. Script: "._FILE_."\nErisim parametreleri:\nSunucu: "._LDAP_HOST."\nPort:" ._LDAP_PORT."\nSunucu calismiyor olabilir ya da erisim parametrelerinde hata var...", // Message body 
      "From: ".getenv("SERVER_ADMIN")."\nX-Mailer: PHP/" . phpversion()); 
    CommonFooter($footer_links); 
    exit; 
  } 
   
  @ldap_bind($my_con);      // this is an "anonymous" bind, typically read-only access 
  $base_dn = _ORG; 

  if (empty($cn) && empty($telephonenumber) && empty($roomnumber) && empty($mail)) { 
    $filter = "objectclass=*inetorgperson*"; 
  } 
  else { 
    $filter = "(&(objectclass=*inetorgperson*)"; 
    if (!empty($cn))              $filter .= "(cn=*".$cn."*)"; 
    if (!empty($telephonenumber)) $filter .= "(telephonenumber=*".$telephonenumber."*)"; 
    if (!empty($roomnumber))      $filter .= "(roomnumber=*".$roomnumber."*)"; 
    if (!empty($mail))            $filter .= "(mail=*".$mail."*)"; 
    $filter .= ")"; 
  } 
           
  $search_res = ldap_search($my_con, $base_dn, $filter); 
  $info = ldap_get_entries($my_con, $search_res); 

  if ($info["count"] == 0) { 
    echo "Aranan kriterlere uygun bir kayit bulunamadi..."; 
    CommonFooter($footer_links); 
    exit; 
  } 

  echo "<TABLE WIDTH=\""._WIDTH."\" BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"1\">\n"; 
  echo "<TR>\n"; 
   
  echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["cn"]."</TH>\n"; 
  echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["telephonenumber"]."</TH>\n"; 
  echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["roomnumber"]."</TH>\n"; 
  echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["ou"]."</TH>\n"; 
  echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["mail"]."</TH>\n"; 

  if (ValidateHOST()) { 
    echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["mobile"]."</TH>\n"; 
    echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["homephone"]."</TH>\n"; 
    echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["homepostaladdress"]."</TH>\n"; 
    echo "<TH ALIGN=\"left\" NOWRAP>".$ldap_attr_str["labeleduri"]."</TH>\n"; 
    echo "<TH ALIGN=\"left\" NOWRAP>&nbsp;</TH>\n"; 
  } 
   
  echo "</TR>"; 
   
  for ($i=0; $i<$info["count"]; $i++) {          // Siralama hadisesi 
    $sorted[(string)$i]=@$info[$i]["cn"][0]; 
  } 
   
  asort($sorted); 
   
  reset($sorted);     
  while(list($idx, $val)=each($sorted)) { 
    echo "<TR>\n"; 
    echo "  <TD NOWRAP>".GetAttr(@$info[$idx]["cn"])."</TD>\n"; 
    echo "  <TD NOWRAP>".GetAttr(@$info[$idx]["telephonenumber"])."</TD>\n"; 
    echo "  <TD NOWRAP>".GetAttr(@$info[$idx]["roomnumber"])."</TD>\n"; 
    echo "  <TD NOWRAP>".FormatLinks(GetAttr(@$info[$idx]["ou"]))."</TD>\n"; 
    echo "  <TD NOWRAP>".FormatLinks(GetAttr(@$info[$idx]["mail"]))."</TD>\n"; 
   
    if (ValidateHOST()) { 
      echo "<TD NOWRAP>".GetAttr(@$info[$idx]["mobile"])."</TD>\n"; 
      echo "<TD NOWRAP>".GetAttr(@$info[$idx]["homephone"])."</TD>\n"; 
      echo "<TD NOWRAP>".GetAttr(@$info[$idx]["homepostaladdress"])."</TD>\n"; 
      echo "<TD NOWRAP>".FormatLinks(GetAttr(@$info[$idx]["labeleduri"]))."</TD>\n"; 
      echo "<TD ALIGN=\"center\" NOWRAP><A HREF=\"login.php?user=".GetAttr(@$info[$idx]["uid"])."\"><IMG SRC=\"edit_pen.gif\" WIDTH=\"15\" HEIGHT=\"10\" BORDER=\"0\" ALT=\"".GetAttr(@$info[$idx]["cn"])."\"></A></TD>\n"; 
    } 

    echo "</TR>\n"; 
  } 

  echo "</TABLE>\n"; 

  ldap_close($my_con); 
  CommonFooter($footer_links); 
?>

modify.php - Değişiklik formu üreten scripti

Göster Gizle Kopar Satır Gizle Satır Göster
<? 
//-- Telefon Rehberi -- 
// modify.php 
// LDAP uzerinde degisiklik icin form uretir. 
// Yazan: Mustafa Hadi Dilek, Subat 2000 
//------------- 
  require("common.php"); 

  if (!ValidateHOST()) { 
    CommonHeader("LDAP Kaydı Değiştirme");  
    echo "Üzgünüz. LDAP bilgileri ancak Ulakbim içindeki bilgisayarlardan değiştirilebilir..."; 
    CommonFooter($footer_links); 
    exit; 
  } 

  if (empty($user) || empty($pwd)) { 
    if (empty($user)) 
     @header("Location: login.php?empty=YES"); 
    else 
     @header("Location: login.php?user=".$user."&empty=YES"); 
    exit; 
  } 

  $footer_links["rehber.php"] ="Ulakbim Telefon Rehberi"; 
  $footer_links["login.php"]  ="Baska Bir Kullaniciya Gec"; 
   
  $my_con = @ldap_connect(_LDAP_HOST,_LDAP_PORT); 

  if (!$my_con) { 
    CommonHeader("LDAP Kaydı Değiştirme");  
    echo "Hata. LDAP sunucu baglantısı saglanamadı.<BR>Sorun yetkililere iletildi..."; 
    mail(getenv("SERVER_ADMIN"), // Target address 
    "Ulakbim Telefon Rehberi'nde hata!!!",  // Subject 
    "LDAP sunucusuna erisim basarisiz. Script: "._FILE_."\nErisim parametreleri:\nSunucu: "._LDAP_HOST."\nPort:" ._LDAP_PORT."\nSunucu calismiyor olabilir ya da erisim parametrelerinde hata var...", // Message body 
    "From: ".getenv("SERVER_ADMIN")."\nX-Mailer: PHP/" . phpversion()); 
    CommonFooter($footer_links); 
    exit; 
  } 

  $dn = "uid=".$user.","._ORG; 
         
  if (!($r = @ldap_bind($my_con, $dn, $pwd))) { 
    @header("Location: login.php?unauth=YES"); 
    exit; 
  } 

  setcookie("user", $user); 
  setcookie("pwd" , $pwd); 

  $base_dn    = _ORG; 
  $filter     = "uid=".$user; 
  $search_res = ldap_search($my_con, $base_dn, $filter); 
  $entries    = ldap_get_entries($my_con, $search_res); 
  $info       = $entries[0]; 

  CommonHeader("LDAP Kaydı Değiştirme");  
//------------- 
?> 
<FORM ACTION="modify_res.php" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded"> 
<? 
//------------- 
  echo "<TABLE WIDTH=\""._WIDTH."\" BORDER=\"0\" CELLSPACING=\"1\" CELLPADDING=\"1\">\n"; 
     
  reset($ldap_attr_str); 
  while(list($key, $val)=each($ldap_attr_str)) { 
    if (!in_array($key, array_keys($info))) { 
      echo "Kullanıcının ".$val." özelliği yok...<BR>\n"; 
      continue; 
      } 
//------------- 
?> 
<TR> 
  <TD CLASS="formlabel"><? echo $val; ?>:&nbsp</TD> 
  <TD CLASS="formvalue"> 
<? 
//------------- 
    if (in_array($key,$ldap_attr_changeable)) { 
      echo "<INPUT NAME=\"".$key."\" TYPE=\"Text\" VALUE=\"".GetAttr(@$info[$key])."\"></INPUT>"; 
    } 
      else { 
      echo GetAttr(FormatLinks(@$info[$key])); 
      } 
//------------- 
?> 
  </TD> 
</TR> 
<? 
//------------- 
  } //while 
//------------- 
?> 
<TR> 
  <TD CLASS="formlabel">&nbsp;</TD> 
  <TD CLASS="formvalue"> 
    <INPUT NAME="submit_change" TYPE="Submit" VALUE="Değiştir"></INPUT> 
    <INPUT NAME="submit_cancel" TYPE="Submit" VALUE="İptal"></INPUT> 
  </TD> 
</TR> 
</TABLE> 
</FORM> 
<? 
//------------- 
  ldap_close($my_con); 

  $footer_links["login.php"] ="Başka Bir Kullanıcıya Gec"; 
  CommonFooter($footer_links); 
?>

modify_res.php - Değişikliği uygulayıp sonuçları gösteren script

Göster Gizle Kopar Satır Gizle Satır Göster
<? 
//-- Telefon Rehberi -- 
// modify_res.php 
// LDAP uzerinde degisiklik yapip sonuclari kullaniciya bildirir. 
// Yazan: Mustafa Hadi Dilek, Subat 2000 
//------------- 
  require("common.php"); 
   
  if (!ValidateHOST()) { 
    CommonHeader("LDAP Değişiklik Sonuçları"); 
    echo "Üzgünüz. LDAP bilgileri ancak Ulakbim içindeki bilgisayarlardan değiştirilebilir..."; 
    CommonFooter($footer_links); 
    exit; 
  } 
   
  $footer_links["rehber.php"] ="Ulakbim Telefon Rehberi"; 
  $footer_links["modify.php"] ="LDAP Kaydı Değiştirme"; 
  $footer_links["login.php"]  ="Başka Bir Kullanıcıya Geç"; 
   
  if (!isset($submit_change) && !isset($submit_cancel)) { 
    @header("Location: login.php?empty=YES"); 
    exit; 
  }   
   
  if (!isset($HTTP_COOKIE_VARS["user"]) || !isset($HTTP_COOKIE_VARS["pwd"])) { 
    @header("Location: login.php?enablecookie=YES"); 
    exit; 
  } 

  $user = $HTTP_COOKIE_VARS["user"]; 
  $pwd  = $HTTP_COOKIE_VARS["pwd"]; 
   
  if ($user=="" || $pwd=="") { 
    @header("Location: login.php?empty=YES"); 
    exit; 
  } 

  if(!empty($submit_cancel)) { 
      echo "Değişiklik iptal edildi...\n"; 
      CommonFooter($footer_links); 
      exit; 
  } 
  elseif(!empty($submit_change)) { 
    $my_con = @ldap_connect(_LDAP_HOST,_LDAP_PORT); 
     
      if (!$my_con) { 
      CommonHeader("LDAP Degisiklik Sonuclari"); 
      echo "Hata. LDAP sunucu baglantısı saglanamadı.<BR>Sorun yetkililere iletildi..."; 
      mail(getenv("SERVER_ADMIN"), // Target address 
        "Ulakbim Telefon Rehberi'nde hata!!!",  // Subject 
        "LDAP sunucusuna erisim basarisiz. Script: "._FILE_."\nErisim parametreleri:\nSunucu: "._LDAP_HOST."\nPort:" ._LDAP_PORT."\nSunucu calismiyor olabilir ya da erisim parametrelerinde hata var...", // Message body 
        "From: ".getenv("SERVER_ADMIN")."\nX-Mailer: PHP/" . phpversion()); 
            
        CommonFooter($footer_links); 
        exit; 
      } 
       
      $dn = "uid=".$user.","._ORG; 
            
      if(!($r = @ldap_bind($my_con, $dn, $pwd))) { 
        @header("Location: login.php?unauth=YES"); 
        exit; 
      } 
         
      $base_dn    = $dn; 
      $filter     = "objectClass=*";                 // tum entryleri getirir... 
      $search_res = ldap_read($my_con, $base_dn, $filter); 
      $info       = ldap_get_attributes($my_con,ldap_first_entry($my_con,$search_res)); 
       
      reset($ldap_attr_str); 
       
      while(list($key, $val)=each($ldap_attr_str)) { 
      if (in_array($key,$ldap_attr_changeable)) { 
        if (in_array($key, array_keys($info))) {         
          $$key = trim($$key); 
           
          if (empty($$key)) $$key="-"; 
           
          if (is_array(@$info[$key])) { 
           if (@$info[$key][0] != $$key) $changes[$key] = $$key; 
          } 
          else { 
            if (@$info[$key] != $$key) $changes[$key] = $$key; 
          } 
        } 
      } 
    } 
     
    CommonHeader("LDAP Degişiklik Sonuçları"); 
     
    if (is_array(@$changes)) { 
        if (in_array("givenname",array_keys(@$changes)) || in_array("sn",array_keys(@$changes))) { 
          if (in_array("givenname",array_keys(@$changes))) 
              $changes["cn"] = $changes["givenname"]; 
            else 
            $changes["cn"] = @$info["givenname"][0]; 

             $changes["cn"] .= " ";   
           
          if (in_array("sn",array_keys(@$changes))) 
              $changes["cn"] .= $changes["sn"]; 
            else 
               $changes["cn"] .= @$info["sn"][0]; 
      } 

         my_ldap_modify($dn, $pwd, $dn, $changes); 
         
        reset($changes); 
      while(list($key,$val)=each($changes)) 
        echo $ldap_attr_str[$key]." <B>".$changes[$key]."</B> olarak degistirildi...<BR>\n"; 
    } 
    else 
      echo "Kaydınızda degişiklik yapılmadı...<BR>\n"; 
     
    ldap_close($my_con); 
  } // elseif 

  CommonFooter($footer_links); 
?>

common.php - Ortak fonksiyon kütüphanesi

Göster Gizle Kopar Satır Gizle Satır Göster
<? 
//-- Telefon Rehberi -- 
// common.php 
// Ortak olarak kullanilacak fonksiyonlar ve konfigurasyon opsiyonlari icerir. 
// Bu dosya webden okunamamali veya cagrilamamali 
// Yazan: Mustafa Hadi Dilek, Subat 2000 

  include("conf.php"); // Konfigurasyon dosyasi 

  define("_CRLF","\\n"); 
  define("_QUOTE","\""); 

//----------------------------------- 
//--- Herhangi LDAP client yaziliminda bulunan ldapmodify programini kullanarak 
//--- LDAP entrysinde degisiklik yapar 
//--- Input parametreleri: 
//----- Degisikligi yapmaya yetkili kullaniciin (dn) bilgisi (admin veya kullanicinin kendisi olabilir), 
//----- Degisikligi yapmaya yetkili kullaniciin LDAP sunucusundaki sifresi, 
//----- Uzerinde degisiklik yapilacak kullanicinin distinguished name (dn) bilgisi, 
//----- Degisiklikleri iceren bir hash array 
//--- Burada bir modify stringi, standart ldif formatinda olusturulur. 
//--- Bu format 'man ldapmodify' ile gorulebilir. 
//--- Veya Michigan Universitesinin ldap manual web sayfasinda ayrintili olarak var. 
//--- www.umich.edu dan aranabilir. 

  function my_ldap_modify($auth_dn, $auth_pwd, $dn, $changes) { 

    $modifystr = _QUOTE. 
                 "dn: ".$dn._CRLF. 
                 "changetype: modify"._CRLF; 

    while(list($key,$val)=each($changes)) { 
      $modifystr = $modifystr. 
                   "replace: ".$key._CRLF. 
                   $key.": ".$val._CRLF. 
                   "-"._CRLF; 
    } 

    $modifystr = $modifystr._QUOTE; 

    exec("printf ".$modifystr." | "._LDAP_DIR._LDAP_MODIFY." -h "._LDAP_HOST." -p "._LDAP_PORT." -D ".$auth_dn." -w ".$auth_pwd); 
  } 
//----------------------------------- 
//--- Sayfalarin ust tarafinda yer alacak kismi olusturur: 
  function CommonHeader($Title) { 
?> 
<HTML> 
<HEAD> 
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-9"> 
  <LINK HREF="http://yeni.ulakbim.gov.tr/css/extranetGenel.css" REL="stylesheet" TYPE="text/css"> 
  <? include("rehber.css"); ?>  <!-- Stil dosyasi --> 
  <TITLE><? echo $Title ?></TITLE> 
</HEAD> 

<BODY BGCOLOR="White"> 
  <DIV CLASS="title"><? echo $Title ?></DIV> 
<? 
  } 
//----------------------------------- 
//--- Sayfalarin alt tarafinda yer alacak kismi olusturur: 
//--- Input parametresi anahtari html linki; degeri ise linke ait metin olan associative arraydir 
 function CommonFooter($Footer) { 
  if (!empty($Footer) && is_array($Footer)) { 
    echo "\n<DIV CLASS=\"footer\">"; 
    reset($Footer); 
    while(list($Link, $Text)=each($Footer)) { 
      echo "\n<A HREF=\"$Link\">[$Text]</A>&nbsp;"; 
    } 
    echo "\n</DIV>"; 
  } 

   echo "\n</BODY>\n"; 
   echo "</HTML>\n"; 
 } 
//----------------------------------- 
// URL ve mail adreslerini link olarak basar. Dikkatli kullanilmali 
 function FormatLinks($str) { 
   $str = preg_replace("/(\w+):\/\/([^ ]+)/", "<A HREF=\"\\1://\\2\">\\1://\\2</A>", $str);  // her tur URL icin 
   $str = preg_replace("/(\w+)@([^ ]+)/", "<A HREF=\"mailto:\\1@\\2\">\\1@\\2</A>", $str);   // mail icin 
   return $str; 
 } 
//----------------------------------- 
// Verilen LDAP attribute'unu basilabilecek halde alir: 
 function GetAttr($attr) { 
   if (is_array($attr)) $outstr = trim(@$attr[0]); 
   else $outstr = trim($attr); 

   return ($outstr != "") ? $outstr : "&nbsp;"; 
} 
//----------------------------------- 
// Remote makine internal networkumuzun icinde ise 'True' dondurur. 
 function ValidateHOST() { 
   if (preg_match("/^"._INTERNAL_NET."\.[0-9]+$/", getenv("REMOTE_ADDR"))) 
     return True; 
   else 
     return True; 
 } 
?>

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır