php ldap アクセスサンプルプログラム

<?php // -*- mode:PHP; tab-width:4; c-basic-offset:4; indent-tabs-mode:nil -*-

class LdapAccess
{
    
    var $hostname               = NULL;
    var $port                   = NULL;
    var $ldap_set_option_option = NULL;
    var $ldap_set_option_newval = NULL;
    var $link_id                = NULL;
    var $search_result          = NULL;

    // hostnameを設定する。
    function setHostname($hostname)
    {
        $this->hostname = $hostname;
    }
    // portを設定する。
    function setPort($port)
    {
        $this->port = $port;
    }


    function connect_start(){
        if(!($this->wrapper_ldap_connect()))
            {
                return false;
            }
        else if(!($this->wrapper_ldap_set_option()))
            {
                return false;
            }
        else if(!($this->wrapper_ldap_bind()))
            {
                return false;
            }
        else
            {
                return true;
            }
    }
    
    // LDAP 接続
    function wrapper_ldap_connect()
    {
        $this->link_id = ldap_connect($this->hostname,$this->port);  
        if(!$this->link_id)
            {
                return false;
            }
        else
            {
                return true;
            }
    }
    
    function wrapper_ldap_errno()
    {
        return ldap_errno($this->link_id);
    }

    function wrapper_ldap_error()
    {
        return ldap_error($this->link_id);
    }


    function wrapper_ldap_set_option()
    {
        return ldap_set_option($this->link_id,$this->ldap_set_option_option,$this->ldap_set_option_newval);
    }

    //ldap_set_optionのoptionを設定する。
    function setLdap_set_option_option($option)
    {
        $this->ldap_set_option_option = $option;
    }

    //ldap_set_optionのnewvalを設定する。
    function setLdap_set_option_newval($newval)
    {
        $this->ldap_set_option_newval = $newval;
    }

    // bind_rdnを設定する。
    function setBind_rdn($bind_rdn)
    {
        $this->bind_rdn = $bind_rdn;
    }
    // bind_passwordを設定する。
    function setBind_password($bind_password)
    {
        $this->bind_password = $bind_password;
    }


    //ldap_bind -- LDAP ディレクトリにバインドする
    function wrapper_ldap_bind()
    {
        return ldap_bind($this->link_id,$this->bind_rdn,$this->bind_password);
    }

    
    function wrapper_ldap_search($base_dn,$filter,$justthese=null)
    {
        if(is_array($justthese))
            {
                $this->search_result=ldap_search($this->link_id,$base_dn,$filter,$justthese);
            }
        else
            {
                $this->search_result=ldap_search($this->link_id,$base_dn,$filter);
            }
    }
    function wrapper_ldap_mod_replace($dn,$entry)
    {      
        return ldap_mod_replace($this->link_id,$dn,$entry);
    }
    function wrapper_ldap_add($dn,$entry)
    {      
        return ldap_add($this->link_id,$dn,$entry);
    }
    
    
    function wrapper_ldap_count_entries()
    {
        return ldap_count_entries($this->link_id,$this->search_result);
    }

    function wrapper_ldap_get_entries()
    {
        return ldap_get_entries($this->link_id,$this->search_result);
    }

    // LDAP 切断
    function wrapper_ldap_close()
    {
        ldap_close($this->link_id);
    }
}


$ldap = new LdapAccess;
$ldap->setHostname("ldap://hoge.hoge.com:389");
$ldap->setLdap_set_option_option(LDAP_OPT_PROTOCOL_VERSION);
$ldap->setLdap_set_option_newval(3);
$ldap->setBind_rdn("cn=hoge,o=ldap,dc=hoge,dc=com");
$ldap->setBind_password("_hoge");

if($ldap->connect_start())
    {
        $ldap->wrapper_ldap_search("o=hoge,dc=hoge,dc=com","(&(objectClass=organizationalUnit)(ou;lang-ja=*))");
        print_r($ldap->wrapper_ldap_get_entries());
        print $ldap->wrapper_ldap_count_entries();
    }
else
    {
        print $ldap->wrapper_ldap_error();
        print $ldap->wrapper_ldap_errno();
    }
$ldap->wrapper_ldap_close();

?>