За последние 24 часа нас посетили 16519 программистов и 1575 роботов. Сейчас ищут 1770 программистов ...

Error: No such attribute

Тема в разделе "Прочие вопросы по PHP", создана пользователем padovan, 6 ноя 2009.

  1. padovan

    padovan Активный пользователь

    С нами с:
    30 окт 2009
    Сообщения:
    13
    Симпатии:
    0
    Непонимаю почему скрипт возвращает ошибку: Error: No such attribute :?:

    PHP:
    1.  $dn = "cn=VIA, cn=Users, dc=mykolaiv, dc=obu";
    Составлял смотря в adsiedit.msc

    Подскажите где нетак?

    PHP:
    1. <?php
    2.  
    3.   $domain1     = "gorod";
    4.   $domain2     = "dk";
    5.   $domain_name = "$domain1.$domain2";  // Имя домена
    6.   $ldap_user   = "VA@$domain_name"; // username
    7.   $ldap_pass   = "********"; // associated password
    8.  
    9. $ds=ldap_connect($domain_name);  // assuming the LDAP server is on this host
    10.  
    11.   // Fix for Windows 2003 AD
    12.   ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    13.   ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
    14.        
    15. if ($ds) {
    16.  
    17.     // bind
    18.     if(ldap_bind($ds, $ldap_user, $ldap_pass)) {
    19.  
    20.         // prepare data
    21.         $dn = "cn=VIA, cn=Users, dc=mykolaiv, dc=obu";
    22.         $value = "*******";
    23.         $attr = "password";
    24.  
    25.         // compare value
    26.         $r=ldap_compare($ds, $dn, $attr, $value);
    27.  
    28.         if ($r === -1) {
    29.             echo "Error: ".ldap_error($ds);
    30.         } elseif ($r === TRUE) {
    31.             echo "Password correct.";
    32.         } elseif ($r === FALSE) {
    33.             echo "Wrong guess! Password incorrect.";
    34.         }
    35.  
    36.     } else {
    37.         echo "Unable to bind to LDAP server.";
    38.     }          
    39.  
    40.     ldap_close($ds);
    41.  
    42. } else {
    43.     echo "Unable to connect to LDAP server.";
    44. }
    45. ?>
     
  2. padovan

    padovan Активный пользователь

    С нами с:
    30 окт 2009
    Сообщения:
    13
    Симпатии:
    0
    Переделал

    В общем т.к. задача скрипта стояла в проверке авторизации через LDAP на AD Win2003,то выкрутился таким скриптом:

    PHP:
    1. <html>
    2. <body>
    3. <?php
    4.  
    5.   // Изменение кодировки из UTF-8 в Windows-1251
    6.   function utf2win($str)
    7.   {
    8.     return mb_convert_encoding($str, "WINDOWS-1251", "UTF-8");
    9.   };
    10.  
    11.   function arr2list($arr)
    12.   {
    13.     $list="";
    14.     for ($i = 0; $i < count($arr); $i++)
    15.     {
    16.         $list=$list.$arr[$i];
    17.         if ($i < count($arr)-1) $list=$list."; ";
    18.     }
    19.     return $list;
    20.   };
    21.  
    22.   $domain_name = "mykolaiv.obu";  // Имя домена
    23.   $ldap_user="VakulenkoIA";
    24.   $ldap_pass="";
    25.   $base_dn="dc=mykolaiv, dc=obu";
    26.  
    27.   // Connect to LDAP server
    28.   $ldap_con = @ldap_connect($domain_name);
    29.   if ($ldap_con)
    30.   {
    31.   // Fix for Windows 2003 AD
    32.   ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3);
    33.   ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0);
    34.  
    35.   // binding to LDAP server
    36.   $ldap_bind = @ldap_bind($ldap_con, $ldap_user."@".$domain_name, $ldap_pass);
    37.   if ($ldap_bind) {
    38.         echo "LDAP bind successful...";
    39.         $sr=ldap_search($ldap_con, $base_dn, "sAMAccountName=".$ldap_user);
    40.         //echo "Number of entires returned is ".ldap_count_entries($ldap_con, $sr);
    41.         $info = ldap_get_entries($ldap_con, $sr);
    42.         echo "<br>";
    43.         echo "<br>DN: ".utf2win($info[0]["dn"]);
    44.         echo "<br>sAMAccountName: ".utf2win($ldap_user);
    45.         echo "<br>mail: ".utf2win(arr2list($info[0]["mail"]));
    46.         echo "<br>displayName: ".utf2win($info[0]["cn"][0]);
    47.         echo "<br>memberof: ";
    48.         for ($i = 0; $i < $info[0]["memberof"]["count"]; $i++)
    49.         {
    50.             //echo $info[0]["memberof"][$i]."; ";
    51.             $group_sr=ldap_search($ldap_con, $base_dn, "distinguishedName=".$info[0]["memberof"][$i]);
    52.             //echo "Number of entires returned is ".ldap_count_entries($ldap_con, $group_sr);
    53.             $group_info = ldap_get_entries($ldap_con, $group_sr);
    54.             echo utf2win($group_info[0]["cn"][0]."; ");
    55.         }
    56.         //print_r($info[0]["memberof"]);
    57.         echo "<br><br>";
    58.         //print_r($info[0]);
    59.     } else {
    60.         echo "LDAP bind failed...";
    61.     }
    62.   ldap_close($ldap_con);
    63.   } else { echo "Could not connect to LDAP server $domain_name"; }
    64. ?>
    65. </body>
    66. </html>