How can PHP be used to automatically search through different ou entries in LDAP for user authentication?

To automatically search through different ou entries in LDAP for user authentication using PHP, you can utilize the ldap_search function to query the LDAP directory for the user's credentials. By specifying the base DN and search filter, you can search through different organizational units (ou) to find the user. Once the user is found, you can compare their provided credentials with the LDAP directory to authenticate them.

<?php
$ldapServer = "ldap.example.com";
$ldapPort = 389;
$ldapBaseDN = "ou=users,dc=example,dc=com";
$ldapAdmin = "cn=admin,dc=example,dc=com";
$ldapPassword = "admin_password";

$ldapConn = ldap_connect($ldapServer, $ldapPort);
ldap_set_option($ldapConn, LDAP_OPT_PROTOCOL_VERSION, 3);

if ($ldapConn) {
    $ldapBind = ldap_bind($ldapConn, $ldapAdmin, $ldapPassword);

    if ($ldapBind) {
        $filter = "(uid=username)";
        $search = ldap_search($ldapConn, $ldapBaseDN, $filter);
        $entries = ldap_get_entries($ldapConn, $search);

        if ($entries['count'] > 0) {
            // User found, validate credentials
            $userDN = $entries[0]['dn'];
            $ldapBindUser = ldap_bind($ldapConn, $userDN, "user_password");

            if ($ldapBindUser) {
                echo "User authenticated successfully.";
            } else {
                echo "Invalid credentials.";
            }
        } else {
            echo "User not found.";
        }
    } else {
        echo "LDAP bind failed.";
    }

    ldap_close($ldapConn);
} else {
    echo "Failed to connect to LDAP server.";
}
?>