PHP LDAP, добавление новых записей в LDAP - PullRequest
0 голосов
/ 12 декабря 2011

Я хочу создать форму, которую я могу заполнить, и как только я отправлю ее, значения формы можно будет извлечь, и этого человека можно будет создать в LDAP.Я не очень разбираюсь в LDAP-факте, я просто работал над созданием привязки LDAP, поэтому мне нужна помощь.Как я могу добавить новых пользователей в LDAP через эту форму, которую я могу заполнить?Я знаю, что в LDAP есть команды Add, но я не совсем уверен, как начать работу и какую информацию нужно передать человеку, который будет создан в LDAP.Если это поможет, ниже приведен мой код для привязки LDAP.

<code><?php
$name=$_REQUEST['name'];
$x=1;
if($x==1)
{
    //LDAP stuff here.
    $username = "myusername";
    $password = "mypass";


    $ds = ldap_connect('ldap://ldap:389');

        ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

    //Can't connect to LDAP.
    if( !ds )
    {
        echo "Error in contacting the LDAP server -- contact ";
        echo "technical services!  (Debug 1)";

        exit;
    }

    //Connection made -- bind anonymously and get dn for username.
    $bind = @ldap_bind($ds);

    //Check to make sure we're bound.
    if( !bind )
    {
        echo "Anonymous bind to LDAP FAILED.  Contact Tech Services! (Debug 2)";

        exit;
    }

    $search = ldap_search($ds, "ou=People,DC=sde,DC=goliat,DC=com", "uid=$username");

    //Make sure only ONE result was returned -- if not, they might've thrown a * into the username.  Bad user!
    if( ldap_count_entries($ds,$search) != 1 )
    {
        echo "Error processing username -- please try to login again. (Debug 3)";
        redirect(_WEBROOT_ . "/try1b.php");

        exit;
    }

    $info = ldap_get_entries($ds, $search);

    //Now, try to rebind with their full dn and password.
    $bind = @ldap_bind($ds, $info[0][dn], $password);
    if( !$bind || !isset($bind))
    {
        echo "Login failed -- please try again. (Debug 4)";
        redirect(_WEBROOT_ . "/try1b.php");

        exit;
    }

    //Now verify the previous search using their credentials.
    $search = ldap_search($ds, "ou=People,DC=sde,DC=goliat,DC=com", "cn=$name");

    $info = ldap_get_entries($ds, $search);
    if( $username == "myusername" )
    {

/*  
    very useful set of information to view the LDAP tree info from an array
    echo $username;
echo "<pre>".print_r($info[0],true)."
"; * / echo $ info [0] [cn] [0]; echo", "; echo $ info [0] [mail] [0]; echo", "; echo $ info [0] [telephonenumber] [0]; exit;} else {echo "Ошибка.Доступ запрещен "; перенаправление (_WEBROOT_." /Try1b.php "); выход;} ldap_close ($ ds); выход;}?>

Ответы [ 2 ]

1 голос
/ 30 декабря 2014

Я бы порекомендовал файл newUser.php (или любой другой), который проверяет наличие всей необходимой информации, а затем отправляет эту информацию в файл, который вы начали выше.

Ваш $bind должен принимать три переменные ...

$bind = ldap_bind($ds, 'cn=root,dc=example,dc=com', secretPassword);

Для довольно хорошего руководства по добавлению людей на ваш LDAP-сервер через PHP перейдите на http://www.php2python.com/wiki/function.ldap-add/

Удачи

0 голосов
/ 14 декабря 2011

Запрос на добавление требует добавления отличительного имени, атрибута, который должен быть частью записи, и необязательных элементов управления запросом.

По другой теме ваш поиск имеет область поддерева и может возвращать более одной записи, которая соответствует имени пользователя. Нет причин, по которым не может быть нескольких записей с одним и тем же RDN в разных ветвях под базовым объектом, указанным в коде, - если только поставщик вашего сервера каталогов не внедрил ограничение уникальности атрибута.

...