How can PHP scripts be optimized to restrict access to certain LDAP user groups?

To restrict access to certain LDAP user groups in PHP scripts, you can use the ldap_search function to check if the user belongs to the specified group before allowing access to certain parts of the script. This can be achieved by querying the LDAP server for the user's group membership and comparing it to the allowed groups.

// LDAP server settings
$ldapServer = 'ldap.example.com';
$ldapPort = 389;
$ldapBaseDn = 'dc=example,dc=com';

// Connect to LDAP server
$ldapConn = ldap_connect($ldapServer, $ldapPort);
ldap_bind($ldapConn, 'cn=admin,dc=example,dc=com', 'admin_password');

// Search for user's group membership
$userGroups = ldap_search($ldapConn, $ldapBaseDn, '(member=uid=johndoe,ou=users,dc=example,dc=com)');
$groupEntries = ldap_get_entries($ldapConn, $userGroups);

// Check if user belongs to allowed group
$allowedGroups = ['cn=developers,ou=groups,dc=example,dc=com', 'cn=admins,ou=groups,dc=example,dc=com'];
$allowed = false;

foreach ($groupEntries as $entry) {
    if (in_array($entry['dn'], $allowedGroups)) {
        $allowed = true;
        break;
    }
}

// Restrict access if user does not belong to allowed group
if (!$allowed) {
    die('Access denied.');
}

// Proceed with script execution for allowed users
echo 'Welcome, John Doe!';