Форум → Программирование → PHP для идиотов → active directory
active directory
Страницы: ← Предыдущая страница • Следующая страница →
-
17 сентября 2009 г. 20:27, спустя 22 минуты 14 секунд
я не знаю. сделай что-нибудь правильное ;)ιιlllιlllι унц-унц -
18 сентября 2009 г. 8:15, спустя 11 часов 48 минут 8 секунд
Дийкстра говорил: "человек программирующий на Бейсике уже не станет хорошим программистом".
Глупо переносить представления о «правильной программе» из Джавы в Пыху. И наоборот тоже.ιιlllιlllι унц-унц -
18 сентября 2009 г. 11:51, спустя 3 часа 35 минут 26 секунд
artoodetoo, очень не глупо
пыхва все больше похожа на жаву -
18 сентября 2009 г. 12:03, спустя 12 минут 20 секунд
class MyLDAPSearch{
private $ldapServer;
private $user;
private $password;
private $userGroup;
private $dn;
private $ds;
public function __construct($ldapServer,$user,$password,$userGroup,$dn){
$this->ldapServer = $ldapServer;
$this->user = $user;
$this->password = $password;
$this->userGroup = $userGroup;
$this->dn = $dn;
}
public function connect(){
// Set connection
$this->ds = ldap_connect('ldap://'.$this->ldapServer) or throw new Exception('Cannot connect');
ldap_set_option($this->ds, LDAP_OPT_PROTOCOL_VERSION, 3) or throw new Exception('LDAP does not support protocol version 3');
ldap_bind($this->ds, $this->user.'@intranet.company.ru', $this->password) or throw new Exception('Cannot bind to server');
}
public function search(){
$sr = ldap_search($this->ds, $this->dn, '(&(objectClass=user)(memberOf=CN='.$this->userGroup.','.$this->dn.'))',array('displayname','cn','mail'));
$entry = ldap_get_entries($this->ds, $sr);
ldap_unbind($ds);
return $entry;
}
}
$myldap = new MyLDAPSearch('ourldapserver','superuser','password','My Group','CN=Users,DC=intranet,DC=company,DC=ru')
$myldap->connect();
$entry = $myldap->search();
// а это в шаблонизатор
if ($entry['count'])
{
// Print result
echo 'Found entries: '.$entry['count']."<br /><br />\n";
foreach ($entry as $id => &$e)
{
if (is_integer($id))
{
echo 'Name: '.$e['displayname'][0]."<br />\n";
echo 'Login: '.$e['cn'][0]."<br />\n";
echo 'Mail: '.(isset($e['mail'][0])?$e['mail'][0]:'<unknown>')."<br /><br />\n";
}
}
}
else
echo 'Group have no member'."<br />\n";
что-то вроде -
-
19 сентября 2009 г. 14:57, спустя 1 день 2 часа 53 минуты
CTAPbIu_MABP, спасибо :) так конечно удобнее повторно использовать.
мне пример был нужен только один раз чтобы найти правильные DN и фильтр.
когда закончу с модулем авторизации — выложу результат.ιιlllιlllι унц-унц -
19 сентября 2009 г. 15:00, спустя 2 минуты 40 секунд
я одного не понял, нахуй один говнокод в другой переделывать?)
если уж на то пошло, то конструктор должен максимум ip,port принимать, должны быть функции
- bind/loginun
- bind/logout,
- query
- search причем она должна быть 100% с параметрамиЮ пусть даже такими же как и login в данной ситуации
+ еще всякие функции которые может быть потом добавятся, а сейчас этот класс такой же одноразовый как и та функция.
я не прав? похоливарим?Сапожник без сапог -
19 сентября 2009 г. 15:03, спустя 3 минуты 24 секунды
p.s. на мой испорченные взгляд такое:
$myldap = new MyLDAPSearch('whole parameter set')
$myldap->connect();
$entry = $myldap->search();
некрасиво вот почему: все три строки это одно действие. и это действие одноразовое. правильнее было бы передавать параметры поиска методу search а не конструктору. а если параметры коннета передавать методу connect (логично правда?) то нахуй не нужен конструктор.
Спустя 50 сек.дуд ты прав конечно. опередил, сцуко :)ιιlllιlllι унц-унц -
19 сентября 2009 г. 15:09, спустя 6 минут
я бы даже сказал что должны быть
search($searchString)
searchUsers($users);Сапожник без сапог -
19 сентября 2009 г. 15:16, спустя 6 минут 21 секунду
я бы добавил что параметр $dn и хвостик вида '@intranet.company.ru' просятся в "глобальную конфигурацию".
они специфичны не для конкретного запроса, а для сети компании в целом. это условно-постоянные вещи.
то есть если есть фреймворк интрасети компании, то такие параметры нехуй передавать в аргументах.ιιlllιlllι унц-унц -
19 сентября 2009 г. 15:19, спустя 3 минуты 20 секунд
хули рассуждаешь? напиши! )))))))))))))))))))))))))))))
я бы добавил что параметр $dn и хвостик вида '@intranet.company.ru' просятся в "глобальную конфигурацию".
они специфичны не для конкретного запроса, а для сети компании в целом. это условно-постоянные вещи.
то есть если есть фреймворк интрасети компании, то такие параметры нехуй передавать в аргументах.
релаьно если интересно то сделай просто номральный классец для такой простой задачи, а мы его обсудим, засрем и посмотрим что получилось естественно, ага?Спустя 14 сек.а я пока буду пить кока колу дальше!)Сапожник без сапог -
19 сентября 2009 г. 15:35, спустя 15 минут 38 секунд
тфьу на тебя! кока-кола гадость.
я пишу-пишу. и кое-что выложу.
еще пару слов о собаках. конечно бспризорные @ это зло. но конструкция вида @func() or die() имеет право на жизнь. а вот бля func() or throw new Exception() ничего не дает если нет перехвата. она не спасет от выдачи левого варнинга если display_error_messages = 1. а следом она в любом случае выдаст текст эксепшена + полное имя файла с номером строки. от чего бежали, на то и напоролись.
нет перехвата exception, тогда нахуй их порождать? чтобы на джаву походить?ιιlllιlllι унц-унц -
19 сентября 2009 г. 15:36, спустя 59 секунд
artoodetoo, exception правильнл возвращать когда у тебя приложение не аля "вася пупкин коленка скрипто 0.1 бета"
вот догадайся чем throw лучше die ?)
по простой причине, если я захочу твою либу заюзать в СВОЕМ проекте, то когда произойдет ошибка я может быть захочу СВОЮ СТРАНИЦУ С ОШИБКОЙ ПОКАЗАТЬ а не твое сообщение "Ooops! i did it again .." …
а маврыська рпавильно поступает что пишет эксепшны, я тоже всегда эксепшены пишу.тфьу на тебя! кока-кола гадость.
хочу умереть не от старости.
по хорошему, то при входе в МОЮ ФУНКЦИЮ класса я пишу вот так
function dudelib_function1(..)
{
$errlevel = error_reporting(0);
error_reporting($errlevel);
return $val;
}
это при условии что где то чтото может "насрать в вывод"Сапожник без сапог -
19 сентября 2009 г. 15:40, спустя 4 минуты 4 секунды
я сам пишу эксепшены в реальных программах. если ты следишь за развитием моего "Простого каркаса", то там есть перехват и есть место где я throw
но мне же надо было подъебнуть мавра. чо ему можно, а мне нельзя, да?ιιlllιlllι унц-унц -
19 сентября 2009 г. 15:42, спустя 2 минуты 16 секунд
artoodetoo, лишь бы не срали попусту, а подъебы да, разрешены конечноСапожник без сапог
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!