PHP LDAP Вход в систему - PullRequest
       39

PHP LDAP Вход в систему

1 голос
/ 26 июня 2011

У меня небольшие проблемы с входом в PHP через LDAP.Мое первое связывание прошло успешно, но второе - нет, даже если учетные данные верны.Я попытался использовать учетные данные, которые я использую для второго связывания в первом, чтобы убедиться, что оно работает, и достаточно уверенно, что оно может связать его при первом.Почему я не могу связать второй раз?

<?php
// Define $myusername and $mypassword
$username=$_POST['username'];
$password=$_POST['password'];

// using ldap bind
$ldaprdn  = 'uid=MYUID,ou=special,ou=people,o=myo.com,dc=mydc,dc=com';     // ldap rdn or dn
$ldappass = 'PASSWORD';  // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldaps://MYLDAPSERVER", ###)
    or die("Could not connect to LDAP server.");

if ($ldapconn) 
{
    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // verify binding
    if ($ldapbind) 
    {
        $result = ldap_search($ldapconn, "ou=people,o=myo.com,dc=mydc,dc=com", "uid=$username");
        $info = ldap_get_entries($ldapconn, $result);
        $userdn = $info[0]["dn"];
        $count = $info["count"]; 
        ldap_unbind($ldapconn);

        if ($count == 1)
        {
            $ldapbinduser = ldap_bind($ldapconn, $userdn, $password);
            if ($ldapbinduser) 
            {
                echo "Sucess you made it all the way<br />";
            }
            else
            {
                echo "Invalid Login Details, please try again(1001)";
            }
        }
        else
        {
            echo "Invalid Login Details, please try again(1002)";
        }
    } 
    else 
    {
        echo "LDAP bind failed(1000)";
    }
}

1 Ответ

3 голосов
/ 26 июня 2011

Хотя его имя может означать что-то другое, ldap_unbind() фактически убивает дескриптор соединения, так что соединение больше не может использоваться после отмены привязки.Удалите вызов ldap_unbind() из своего кода, и все должно работать как положено.

...