# ldap_exop

(PHP 7 >= 7.2.0)

ldap_exop — 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 `link` with `reqoid` the OID of the operation and `reqdata` the 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 `serverctrls` added

### 范例

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";
    }
    ?>

### 参见

- ldap_parse_result() - Extract information from result
- ldap_parse_exop() - Parse result object from an LDAP extended operation
- ldap_exop_whoami() - WHOAMI extended operation helper
- ldap_exop_refresh() - Refresh extended operation helper
- ldap_exop_passwd() - PASSWD extended operation helper