ConFoo 2025

ldap_exop

(PHP 7 >= 7.2.0, PHP 8)

ldap_exopRealiza uma operação estendida

Descrição

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

Realiza uma operação estendida no ldap especificado com o OID da operação em request_oid e os dados em request_data.

Parâmetros

ldap

Uma instância de LDAP\Connection, retornada por ldap_connect().

request_oid

O OID da requisição de operação estendida. Pode-se usar uma das constantes LDAP_EXOP_START_TLS, LDAP_EXOP_MODIFY_PASSWD, LDAP_EXOP_REFRESH, LDAP_EXOP_WHO_AM_I, LDAP_EXOP_TURN ou uma string com o OID da operação que deseja-se enviar.

request_data

Os dados da requisição de operação estendida. Pode ser NULL para algumas operações como LDAP_EXOP_WHO_AM_I, e pode ser necessário ser codificado com BER.

controls

Array de Controles LDAP que são enviados com a requisição.

response_data

Será preenchido com os dados de resposta da operação estendida se fornecido. Se não fornecido, pode-se utilizar ldap_parse_exop no objeto de resultado mais tarde para obter estes dados.

response_oid

Será preenchido com o OID da resposta se informado, geralmente igual ao OID da requisição.

Valor Retornado

Quando usado com response_data, retorna true em caso de sucesso ou false em caso de erro. Quando usado sem response_data, retorna um identificador de resultado ou false em caso de erro.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro ldap agora espera uma instância de LDAP\Connection; anteriormente, um resource ldap link válido era esperado.
7.3.0 Adicionado suporte para controls.

Exemplos

Exemplo #1 Operação estendida 'Whoami'

<?php
$ds
= ldap_connect("localhost"); // assumindo que o servidor LDAP é local

if ($ds) {
// faz ligação com dn apropriado para acesso de atualização
$bind = ldap_bind($ds, "cn=root, o=My Company, c=US", "secret");
if (!
$bind) {
echo
"Não foi possível ligar ao servidor";
exit;
}

// Chama a operação estendida WHOAMI
$r = ldap_exop($ds, LDAP_EXOP_WHO_AM_I);

// Interpreta o objeto de resultado
ldap_parse_exop($ds, $r, $retdata);
// Mostra: string(31) "dn:cn=root, o=My Company, c=US"
var_dump($retdata);

// O mesmo usando $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
"Não foi possível conectar ao servidor LDAP";
}
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
-1
Roland Gruber
6 years ago
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);
To Top