/** * @return string[] * @throws ValueRetrievalFailureException */ public function parse() { if (!ldap_parse_reference($this->link, $this->reference, $referrals)) { throw new ValueRetrievalFailureException(ldap_error($this->link), ldap_errno($this->link)); } return $referrals; }
<?php require "connect.inc"; $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); insert_dummy_data($link, $base); ldap_add($link, "cn=userref,$base", array( "objectClass" => array("extensibleObject", "referral"), "cn" => "userref", "ref" => "cn=userA,$base", )); ldap_set_option($link, LDAP_OPT_DEREF, LDAP_DEREF_NEVER); $result = ldap_search($link, "$base", "(cn=*)"); var_dump($ref = ldap_first_reference($link, $result)); $refs = null; ldap_parse_reference($link, $ref, $refs); var_dump($refs); ?> ===DONE=== <?php include "connect.inc"; $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); // Referral can only be removed with Manage DSA IT Control ldap_set_option($link, LDAP_OPT_SERVER_CONTROLS, array(array("oid" => "2.16.840.1.113730.3.4.2"))); ldap_delete($link, "cn=userref,$base"); remove_dummy_data($link, $base); ?>
<?php require "connect.inc"; $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); insert_dummy_data($link); ldap_add($link, "cn=userref,dc=my-domain,dc=com", array("objectClass" => array("extensibleObject", "referral"), "cn" => "userref", "ref" => "cn=userA,dc=my-domain,dc=com")); ldap_set_option($link, LDAP_OPT_DEREF, LDAP_DEREF_NEVER); $result = ldap_search($link, "dc=my-domain,dc=com", "(cn=*)"); $ref = ldap_first_reference($link, $result); $refs = null; var_dump(ldap_parse_reference($link, $ref, $refs), $refs); ?> ===DONE=== <?php include "connect.inc"; $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); // Referral can only be removed with Manage DSA IT Control ldap_set_option($link, LDAP_OPT_SERVER_CONTROLS, array(array("oid" => "2.16.840.1.113730.3.4.2"))); ldap_delete($link, "cn=userref,dc=my-domain,dc=com"); remove_dummy_data($link);
/** * @param $link * @link http://php.net/manual/en/function.ldap-parse-reference.php * @param $entry * @param $referrals * @return bool */ public function parseReference($link, $entry, &$referrals) { return ldap_parse_reference($link, $entry, $referrals); }
<?php require "connect.inc"; $link = ldap_connect($host, $port); $refs = null; var_dump(ldap_parse_reference($link, $link), ldap_parse_reference($link, $link, $refs), ldap_parse_reference($link, $refs, $refs, "Additional data"), $refs); ?> ===DONE===
/** * Extract information about referrals (if returned by server) * * @return array */ public function parseReference() { $referrals = null; // Intentionally suppressing errors here because it logs a warning when there are no // referrals. And there is no way to check IF there are any referrals. Go figure... @ldap_parse_reference($this->link, $this->resource, $referrals); return $referrals; }