PHP 8.4.1 Released!

ldap_escape

(PHP 5 >= 5.6.0, PHP 7, PHP 8)

ldap_escapeÉchappe une chaîne pour l'utiliser dans un filtre LDAP ou un DN

Description

ldap_escape(string $value, string $ignore = "", int $flags = 0): string

Échappe la chaîne value pour l'utiliser dans le contexte impliqué par le paramètre flags.

Liste de paramètres

value

La valeur à échapper.

ignore

Les caractères à ignorer pendant l'échappement.

flags

Le contexte dans lequel la chaîne échappée sera utilisée : LDAP_ESCAPE_FILTER pour les filtres à utiliser avec ldap_search(), ou LDAP_ESCAPE_DN pour les DNs. Si aucun drapeau n'est passé, tous les caractères sont échappés.

Valeurs de retour

Retourne la chaîne échappée.

Exemples

Lors de la construction d'un filtre LDAP, vous devriez utiliser ldap_escape avec le drapeau LDAP_ESCAPE_FILTER.

Exemple #1 Chercher une addresse email

<?php
// $ds doit être une instance de connexion LDAP\Connection valide

// $mail est une addresse email fournit par l'utilisateur dans un formulaire

$base = "o=My Company, c=US";
$filter = "(mail=".ldap_escape($mail, "", LDAP_ESCAPE_FILTER).")";

$sr = ldap_search($ds, $base, $filter, array("sn", "givenname", "mail"));

$info = ldap_get_entries($ds, $sr);

echo
$info["count"]." entrées retournées\n";
?>

add a note

User Contributed Notes 2 notes

up
1
support at extollit dot com
4 years ago
Suppose you want to reverse the operation, here is a way to "ldap_unescape"

<?php

function ldap_unescape($string) {
return
preg_replace_callback(
"/\\\\[\da-z]{2}/",
function (
$matches) {
$match = array_shift($matches);
return
hex2bin(substr($match, 1));
},
$string
);
}

$result = ldap_unescape("uid=\\61\\6c\\70\\68\\6f\\6e\\7a\\6f,ou=people,dc=foo,dc=com"); // uid=alphonzo,ou=people,dc=foo,dc=com

?>
up
0
martin dot keckeis1 at gmail dot com
9 years ago
You can use it like this for filtering

<?php
$badSearchInput
= 'Domain\username';

$escapedSearchInput = ldap_escape($badSearchInput, null, LDAP_ESCAPE_FILTER);
?>
To Top