라이브러리

[PHP] ldap_search - LDAP 트리 검색




LDAP (Lightweight Directory Access Protocol) 이란, 디렉토리 정보를 검색하고 관리하는 프로토콜입니다. PHP 에서 LDAP을 사용하기 위해서는 `ldap` 확장 모듈이 필요합니다. 이 확장 모듈은 PHP 5.3 이상에서 기본적으로 제공됩니다.

LDAP 검색하기


LDAP 검색을 위해 `ldap_search` 함수를 사용합니다. 이 함수는 LDAP 서버에서 특정 필드에 대한 검색을 수행합니다.

# 함수의 매개변수


`ldap_search` 함수의 매개변수는 다음과 같습니다.

* `ldap_link_id`: LDAP 연결의 링크 ID
* `search_filter`: 검색할 필드와 값을 지정하는 필터
* `attributes`: 검색할 속성 목록
* `base_dn`: 검색할 디렉토리의 기본 DN (Distinguished Name)

# 예제


다음 예제는 LDAP 서버에서 사용자 이름이 "john" 인 사용자를 검색하는 예제입니다.

#hostingforum.kr
php

// LDAP 서버의 연결 정보

$ldap_server = "ldap.example.com";

$ldap_username = "cn=admin,dc=example,dc=com";

$ldap_password = "password";



// LDAP 서버에 연결

$ldap_link_id = ldap_connect($ldap_server);

if (!$ldap_link_id) {

    echo "LDAP 서버에 연결할 수 없습니다.";

    exit;

}



// LDAP 서버에 로그인

if (!ldap_bind($ldap_link_id, $ldap_username, $ldap_password)) {

    echo "LDAP 서버에 로그인할 수 없습니다.";

    exit;

}



// 검색할 필드와 값을 지정하는 필터

$search_filter = "(cn=john)";



// 검색할 속성 목록

$attributes = array("cn", "sn", "mail");



// 검색할 디렉토리의 기본 DN

$base_dn = "dc=example,dc=com";



// LDAP 서버에서 검색

$result = ldap_search($ldap_link_id, $base_dn, $search_filter, $attributes);



// 검색 결과를 출력

if ($result) {

    $entries = ldap_get_entries($ldap_link_id, $result);

    for ($i = 0; $i < $entries["count"]; $i++) {

        echo "cn: " . $entries[$i]["cn"][0] . "
";

        echo "sn: " . $entries[$i]["sn"][0] . "
";

        echo "mail: " . $entries[$i]["mail"][0] . "
";

        echo "
";

    }

} else {

    echo "검색 결과가 없습니다.";

}



// LDAP 서버에 로그아웃

ldap_unbind($ldap_link_id);



이 예제에서는 LDAP 서버에 연결하고 로그인한 후, 사용자 이름이 "john" 인 사용자를 검색합니다. 검색 결과를 출력하고, LDAP 서버에 로그아웃합니다.

LDAP 검색 결과 처리


LDAP 검색 결과는 `ldap_get_entries` 함수를 사용하여 얻을 수 있습니다. 이 함수는 검색 결과를 배열로 반환합니다.

# 함수의 매개변수


`ldap_get_entries` 함수의 매개변수는 다음과 같습니다.

* `ldap_link_id`: LDAP 연결의 링크 ID
* `result`: LDAP 검색 결과

# 예제


다음 예제는 LDAP 검색 결과를 처리하는 예제입니다.

#hostingforum.kr
php

// LDAP 서버의 연결 정보

$ldap_server = "ldap.example.com";

$ldap_username = "cn=admin,dc=example,dc=com";

$ldap_password = "password";



// LDAP 서버에 연결

$ldap_link_id = ldap_connect($ldap_server);

if (!$ldap_link_id) {

    echo "LDAP 서버에 연결할 수 없습니다.";

    exit;

}



// LDAP 서버에 로그인

if (!ldap_bind($ldap_link_id, $ldap_username, $ldap_password)) {

    echo "LDAP 서버에 로그인할 수 없습니다.";

    exit;

}



// 검색할 필드와 값을 지정하는 필터

$search_filter = "(cn=john)";



// 검색할 속성 목록

$attributes = array("cn", "sn", "mail");



// 검색할 디렉토리의 기본 DN

$base_dn = "dc=example,dc=com";



// LDAP 서버에서 검색

$result = ldap_search($ldap_link_id, $base_dn, $search_filter, $attributes);



// 검색 결과를 처리

if ($result) {

    $entries = ldap_get_entries($ldap_link_id, $result);

    for ($i = 0; $i < $entries["count"]; $i++) {

        echo "cn: " . $entries[$i]["cn"][0] . "
";

        echo "sn: " . $entries[$i]["sn"][0] . "
";

        echo "mail: " . $entries[$i]["mail"][0] . "
";

        echo "
";

    }

} else {

    echo "검색 결과가 없습니다.";

}



// LDAP 서버에 로그아웃

ldap_unbind($ldap_link_id);



이 예제에서는 LDAP 서버에 연결하고 로그인한 후, 사용자 이름이 "john" 인 사용자를 검색합니다. 검색 결과를 처리하고, LDAP 서버에 로그아웃합니다.

결론


이 문서에서는 PHP에서 LDAP 검색을 수행하는 방법에 대해 설명했습니다. LDAP 검색을 위해 `ldap_search` 함수를 사용하고, 검색 결과를 처리하기 위해 `ldap_get_entries` 함수를 사용했습니다. 예제를 통해 LDAP 검색을 수행하고, 결과를 처리하는 방법을 살펴보았습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 429 페이지

검색

게시물 검색