What are some best practices for implementing LDAP authentication in PHP for intranet sites?

When implementing LDAP authentication in PHP for intranet sites, it is important to securely connect to the LDAP server, validate user credentials, and handle errors effectively. One best practice is to encapsulate the LDAP authentication logic in a separate function to easily reuse it across your application.

function ldap_authenticate($username, $password) {
    $ldap_server = 'ldap://your_ldap_server';
    $ldap_port = 389;
    $ldap_dn = 'cn='.$username.',ou=users,dc=example,dc=com';
    
    $ldap_conn = ldap_connect($ldap_server, $ldap_port);
    
    if (!$ldap_conn) {
        die("Could not connect to LDAP server");
    }
    
    ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3);
    ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0);
    
    $ldap_bind = @ldap_bind($ldap_conn, $ldap_dn, $password);
    
    if (!$ldap_bind) {
        die("Invalid credentials");
    }
    
    ldap_close($ldap_conn);
    
    return true;
}