• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ldap_exop()

    (PHP 7 >= 7.2.0)

    Performs an extended operation

    说明

    ldap_exop(resource $link,string $reqoid[,string $reqdata= NULL[,array $serverctrls= NULL[,string &$retdata[,string &$retoid]]]]): mixed

    Performs an extended operation on the specified$linkwith$reqoidthe OID of the operation and$reqdatathe data.

    参数

    $link

    An LDAP link identifier, returned by ldap_connect().

    $reqoid

    The extended operation request OID. You may use one of LDAP_EXOP_START_TLS,LDAP_EXOP_MODIFY_PASSWD,LDAP_EXOP_REFRESH,LDAP_EXOP_WHO_AM_I,LDAP_EXOP_TURN, or a string with the OID of the operation you want to send.

    $reqdata

    The extended operation request data. May be NULL for some operations like LDAP_EXOP_WHO_AM_I, may also need to be BER encoded.

    $serverctrls

    Array of LDAP Controls to send with the request.

    $retdata

    Will be filled with the extended operation response data if provided. If not provided you may use ldap_parse_exop on the result object later to get this data.

    $retoid

    Will be filled with the response OID if provided, usually equal to the request OID.

    返回值

    When used with$retdata, returns TRUE on success or FALSE on error. When used without$retdata, returns a result identifier or FALSE on error.

    更新日志

    版本说明
    7.3 Support for$serverctrlsadded

    范例

    Example #1 Whoami extended operation

    <?php
    $ds = ldap_connect("localhost");  // assuming the LDAP server is on this host
    if ($ds) {
        // bind with appropriate dn to give update access
        $bind = ldap_bind($ds, "cn=root, o=My Company, c=US", "secret");
        if (!$bind) {
          echo "Unable to bind to LDAP server";
          exit;
        }
        // Call WHOAMI EXOP
        $r = ldap_exop($ds, LDAP_EXOP_WHO_AM_I);
        // Parse the result object
        ldap_parse_exop($ds, $r, $retdata);
        // Output: string(31) "dn:cn=root, o=My Company, c=US"
        var_dump($retdata);
        // Same thing using $retdata parameter
        $success = ldap_exop($ds, LDAP_EXOP_WHO_AM_I, NULL, NULL, $retdata, $retoid);
        if ($success) {
          var_dump($retdata);
        }
        ldap_close($ds);
    } else {
        echo "Unable to connect to LDAP server";
    }
    ?>
    

    参见

    The following can be used to run the refresh command in PHP 7.2 as ldap_exop_refresh comes with 7.3.
    $dn= 'cn=user,dc=test,dc=org';
    $ttl = 3600;
    $data = '';
    $data .= '80' . sprintf("%'.02x", strlen($dn)) . bin2hex($dn);
    $data .= '81' . sprintf("%'.02x", 4) . sprintf("%'.08x", $ttl);
    $data = hex2bin('30' . sprintf("%'.02x", strlen($data)/2) . $data);
    $success = ldap_exop($ldapHandle, LDAP_EXOP_REFRESH, $data);