Performs an extended operation

- « ldap_escape

- ldap_exop_passwd »

- PHP Manual
- LDAP Functions
- Performs an extended operation

# ldap_exop

(PHP 7 >= 7.2.0, PHP 8)

ldap_exop — Performs an extended operation

### Description

ldap_exop(
LDAP\Connection `$ldap`,
string `$request_oid`,
string `$request_data` = `null`,
array `$controls` = `null`,
string `&$response_data` = ?,
string `&$response_oid` = ?
): mixed

Performs an extended operation on the specified `ldap` with `request_oid` the OID of the operation and `request_data` the data.

### Parameters

`ldap`

  An LDAP\Connection instance, returned by ldap_connect().

`request_oid`

  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.

`request_data`

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

`controls`

  Array of LDAP Controls to send with the request.

`response_data`

  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.

`response_oid`

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

### Return Values

When used with `response_data`, returns `true` on success or `false` on error. When used without `response_data`, returns a result identifier or `false` on error.

### Changelog

Version | Description
--- | ---
8.1.0 | The `ldap` parameter expects an LDAP\Connection instance now; previously, a valid `ldap link` resource was expected.
7.3.0 | Support for `controls` added

### Examples

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

### See Also

- 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