[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ldap и php
Undertaker
Добрый... что бы у вас сейчас не было именно этого вам и доброго))))) Проблема моя в том что как обычно не хватает мозгов, возникает такое ощущение, что я обновляю мозг через интернет... А сама суть проблемы вот в чём:

$fields = array("displayname", "objectcategory", "department", "telephonenumber", "homephone", "mobile", "mail", "physicaldeliveryofficename", "wwwhomepage");
$ldap_port = "389";
$filter = "displayname=*".iconv ('CP1251','UTF-8');
$ldap_user ="test";
$ldap_pass = "*****";

$connect = ldap_connect("0.0.0.0");

function ldap($connect, $user, $password) {
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);

return ldap_bind($connect, $user, $password);

}
$bind = ldap($connect, $ldap_user, $ldap_pass);
$read = ldap_search($connect, "ou=Users,dc=ufps,dc=omskpost,dc=local", $filter, $fields ) or die ("Не тот фильтр");

if ( $info = ldap_get_entries($connect, $read) )
{

for( $ligne = 0; $ligne<$info["count"]; $ligne++)//выводит данные пока $lnge не будет = количеству строк массива
{
$displayname = @iconv( 'UTF-8', 'utf-8', $info[$ligne][$fields[0]][0] ); //меняем кодировку и записываем в ячейку массива
$title = @iconv( 'UTF-8', 'utf-8', $info[$ligne][$fields[1]][0] );
$department = @iconv( 'UTF-8', 'utf-8', $info[$ligne][$fields[2]][0] );
$phone = @$info[$ligne][$fields[3]][0]; //записываем в ячейку массива
$hphone = @$info[$ligne][$fields[4]][0];
$mobile = @iconv('UTF-8', 'utf-8', $info[$ligne][$fields[5]][0]);
$mail = @$info[$ligne][$fields[6]][0];
$kab = @$info[$ligne][$fields[7]][0];
$ip = @iconv('UTF-8', 'utf-8', $info[$ligne][$fields[8]][0]);



if ($displayname == "") {$displayname = "none";} //если значение пустое пишем none
if ($title == "") {$title = "none";}
if ($department == "") {$department = "none";}
if ($phone == "") {$phone = "none";}
if ($hphone == "") {$hphone = "none";}
if ($mobile == "") {$mobile = "none";}
if ($mail == "") {$mail = "none";}
if ($kab == "") {$kab = "none";}
if ($ip == "") {$ip = "none";}

//записываем таблицу в ячейку результ
$result .= '<tr><td bgcolor=#F4F9F3><h6>'.$displayname.'</h6></td>'
.'<td bgcolor=#F4F9F3>'.$title.'</td>'
.'<td bgcolor=#F4F9F3><p> '.$department.'</p></td>'
.'<td bgcolor=#F4F9F3><p> '.$phone.'</p></td>'
.'<td bgcolor=#F4F9F3><p> '.$hphone.'</p></td>'
.'<td bgcolor=#F4F9F3><p> '.$mobile.'</p></td>'
.'<td bgcolor=#F4F9F3><p><a href="mailto:'.$mail.'">'.$mail.'</a></p></td>'
.'<td bgcolor=#F4F9F3><p> '.$kab.'</p></td>'
.'<td bgcolor=#F4F9F3><p> '.$ip.'</p></td></tr>';
}
}
else{echo 'no';}

Имя входа пользователя: test @ufps.omskpos.local
Имя входа пользователя (пред-Windows 2000) UFPS\ test
пишет что не получил данных, ругается на $read = ldap_search($connect, "ou=Users,dc=ufps,dc=omskpost,dc=local", $filter, $fields ) or die ("Не тот фильтр"); Хотя с другим сервером работает, расскажите что не так, где посмотреть нужные настройки...



Спустя 6 минут, 17 секунд (1.03.2012 - 07:15) Visman написал(а):
                $displayname = @iconv( 'UTF-8', 'utf-8', $info[$ligne][$fields[0]][0] ); //меняем кодировку и записываем в ячейку массива

Это меня убило :(

Соседняя тема схожая тематикой http://phpforum.ru/index.php?showtopic=58251&hl=

Спустя 5 минут, 13 секунд (1.03.2012 - 07:20) Undertaker написал(а):
Visman
Меня это уже который день без ножа режет, как ни крути а данная строка необходима

Спустя 3 минуты, 52 секунды (1.03.2012 - 07:24) Undertaker написал(а):
Visman
Цитата
Соседняя тема схожая тематикой http://phpforum.ru/index.php?showtopic=58251&hl=

Она совсем не схожа, совсем другое направление(((

Спустя 11 минут, 12 секунд (1.03.2012 - 07:35) Visman написал(а):
Посмотри статью PHP: почтовая книга на лету из LDAP или Active Directory
http://habrahabr.ru/blogs/sysadm/85428/
Может есть там чего толкового.

Спустя 7 минут, 51 секунда (1.03.2012 - 07:43) Undertaker написал(а):
Visman
Увы книга-давно пройденный этап(((

Спустя 5 минут, 25 секунд (1.03.2012 - 07:48) Visman написал(а):
$filter = "displayname=*".iconv ('CP1251','UTF-8'); 

Что за странная запись функции?

Спустя 3 минуты, 5 секунд (1.03.2012 - 07:51) Undertaker написал(а):
Visman
Это фильтр. Он говорит что имя дисплея (пользователя) может быть любое а потом меняет кодировку полученных значений с виндовской на утф-8

Спустя 3 минуты, 30 секунд (1.03.2012 - 07:55) Visman написал(а):
Цитата (Undertaker @ 1.03.2012 - 12:51)
может быть любое а потом меняет кодировку полученных значений с виндовской на утф-8

Не верю!
Я вижу строку и функцию iconv, которая ни чего не конвентирует из виндовской кодировки в UTF-8.
Т.е. что содержит $filter в итоге не ясно.

Спустя 9 минут, 14 секунд (1.03.2012 - 08:04) Undertaker написал(а):
Visman
В смысле ничего, она по фильтру всё выводит... Что выводит то и кодирует... Может и глупая строка, но нужна она

Спустя 2 минуты, 34 секунды (1.03.2012 - 08:07) Visman написал(а):
После нее сделай вывод для проверки ее содержимого
exit($filter);

Спустя 4 минуты, 15 секунд (1.03.2012 - 08:11) Undertaker написал(а):
А после неё много чего дополнительного, логин, пароль, айпишник сервера, и много чего другого, так что изначально посмотреть не получается...

Спустя 22 минуты, 3 секунды (1.03.2012 - 08:33) alexbel2404 написал(а):
http://www.php.net/manual/ru/function.iconv.php

посмотри, сколько параметров она принимает и сравни со своей конструкцией.

Спустя 6 минут, 39 секунд (1.03.2012 - 08:40) Undertaker написал(а):
alexbel2404
Ну три параметра у неё, iconv тут причём от темы далеко отвлеклись, тема была в другом, iconv работает

Спустя 1 минута, 55 секунд (1.03.2012 - 08:42) alexbel2404 написал(а):
$read = ldap_search($connect, "ou=Users,dc=ufps,dc=omskpost,dc=local", $filter, $fields ) or die (ldap_error($connect));

Ошибку сюда

Спустя 12 минут, 15 секунд (1.03.2012 - 08:54) Undertaker написал(а):
alexbel2404
Цитата
$read = ldap_search($connect, "ou=Users,dc=ufps,dc=omskpost,dc=local", $filter, $fields ) or die (ldap_error($connect));

Ошибку сюда

пишет Operations error и ничего более

Спустя 7 минут, 53 секунды (1.03.2012 - 09:02) alexbel2404 написал(а):
попробуй 2 версию протокола поставить. А еще вот что пишут

Цитата
In order to perform the searches on Windows 2003 Server Active Directory you have to set the LDAP_OPT_REFERRALS option to 0:

ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

Without this, you will get "Operations error" if you try to search the whole AD schema (using root of the domain as a $base_dn).

As opposed to Windows 2000 Server, where this option was optional and only increased the performance.

Спустя 12 минут, 32 секунды (1.03.2012 - 09:14) Undertaker написал(а):
alexbel2404
Цитата
In order to perform the searches on Windows 2003 Server Active Directory you have to set the LDAP_OPT_REFERRALS option to 0:

ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);

Without this, you will get "Operations error" if you try to search the whole AD schema (using root of the domain as a $base_dn).

As opposed to Windows 2000 Server, where this option was optional and only increased the performance.

Стоит 2008 винда, я проверял эту опцию на наличие ошибки, она на меня не ругалась, говорит всё правильно
попробовал сделать ldap_list вместо ldap_search не прокатило...
Цитата
попробуй 2 версию протокола поставить

В смысле 2 версию протокола?

Спустя 1 минута, 1 секунда (1.03.2012 - 09:15) Visman написал(а):
И замени
$filter = "displayname=*".iconv ('CP1251','UTF-8');

на
$filter = "displayname=*";

т.к. запись неверная (еще и непонятный знак в начале строки).

Спустя 12 минут, 8 секунд (1.03.2012 - 09:27) alexbel2404 написал(а):
в ф-ии ldap() замени 3 на 2 и попробуй

Спустя 4 минуты, 12 секунд (1.03.2012 - 09:32) Undertaker написал(а):
Исправил, разницы нет)))

Спустя 4 минуты, 33 секунды (1.03.2012 - 09:36) alexbel2404 написал(а):

Спустя 3 минуты, 6 секунд (1.03.2012 - 09:39) Undertaker написал(а):
alexbel2404
Что я в общем то и делаю))) Ладненько спасибо за помощь очень тебе признателен))))

Спустя 10 минут, 29 секунд (1.03.2012 - 09:50) Игорь_Vasinsky написал(а):
Undertaker
это у тя на аве не R60 Plus ???

по теме:

добавька в начало скрипта

error_reporting(E_ALL);


и дай текст оригинальных нотисов и варнингов.

iconv() крутишь, вертишь как хочешь :D

Спустя 21 час, 19 минут, 10 секунд (2.03.2012 - 07:09) Undertaker написал(а):
Игорь_Vasinsky
Цитата
это у тя на аве не R60 Plus ???

Я тоже подумал что это он, а так кто его знает))))

Цитата
добавька в начало скрипта
error_reporting(E_ALL);
и дай текст оригинальных нотисов и варнингов.

Добавил, но он мне ничего не выдал((((
Цитата
iconv() крутишь, вертишь как хочешь biggrin.gif

Да судя по тому сколько я уже над ним мучаюсь то это он меня вертел как хотел))))))

Спустя 1 час, 6 минут, 10 секунд (2.03.2012 - 08:15) Игорь_Vasinsky написал(а):
глянь - тут класс засветился

http://phpforum.ru/index.php?showtopic=58251&hl=

Спустя 25 минут, 26 секунд (2.03.2012 - 08:40) alexbel2404 написал(а):
да для работы с ад, есть отличный класс - ADLdap называется) я ему уже писал)


_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.