PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   [PHP5] ldap sonderzeichen (https://www.php-resource.de/forum/php-developer-forum/87817-php5-ldap-sonderzeichen.html)

maria_dumm 25-10-2007 15:50

[PHP5] ldap sonderzeichen
 
hallo, ich möchte bei einem ldap_add im dn sonderzeichen einsetzen können.

laut doku gehören hier #,+"\<>; und null zu den sonderzeichen.
man soll einen hexwert erzeugen und dem ein \ voranstellen.
aus + würde dann werden: \2B

ich habe mich nun in PHP etwas herumgespielt.

------------------------------------------------------------
\2B

variante 1:
$strRaute='\2B'; (einfache Anführungszeichen)
$strDN=...$strRaute...;
ldap_add liefert wieder einen Fehler, da es das \ im DN nicht mag.

variante 2:
$strRaute="\2B"; (doppelte Anführungszeichen)
$strDN=...$strRaute...;
LDAP akzeptiert die DN und speichert die Daten ab.

allerdings kommt mir das spanisch vor. wenn ich das richtig interpretiere, ergibt "\2B" 2 zeichen:
\2 ergibt ein zeichen, B bleibt bestehen. kann das stimmen?????

------------------------------------------------------------
\x2B

anscheinend wird ein "\x2B" schon vom PHP-Interpreter wie ein einziges zeichen angesehen.
2B ergeben 1 zeichen, nämlich das +
LDAP reagiert wieder mit einem Fehler darauf.

------------------------------------------------------------
&amp;#43;

"&amp;#43;" (43 ist der dec-wert vom hexwert 2B) bzw. '&amp;#43;' liefern erst bei der bildschirmausgabe
1 zeichen, nämlich das +
da LDAP das ; sieht, liefert es natürlich einen Fehler.

die /2B-Variante scheint die einzige zu sein, die LDAP akzeptiert. allerdings befürchte ich, dass es damit
probleme gibt. ein "\22" (2 zahlen) wird als 1 zeichen, ein "\2B" (1 zahl und 1 buchstabe) als 2 zeichen
angesehen. das kann doch nicht gutgehen, oder?????

maria_dumm 26-10-2007 11:23

ldap sonderzeichen
 
Ich vermute mal, ich habe das problem gelöst.

der attributwert taucht ja 2x auf, 1x als ganz normaler wert, 1x im dn.
escapen darf man anscheinend nur im dn, und auch nur mit '\hh' (hexwert, einfaches anführungszeichen)

dann bekommt man im einem ldap-client das gleiche zu sehen, als wenn man das gleiche mit einer .ldif-datei gemacht hätte.

ich glaube, jetzt funktioniert das bei mir richtig *freu* *freu* :-)

jetzt muss ich das nur noch mit den sonderzeichen für den suchfilter schaffen. wird wohl genauso sein.

H2O 26-10-2007 11:52

Ich habe zwar nicht viel Ahnung von LDAP, aber folgendes müsstest du berückichtigen:
Hexwerte erstellen
String Parsing
=> Backslashes in doppelten Anführungszeichen werden interpretiert. D. h. entweder verdoppeln oder einfache Anführungszeichen verwenden. Z.B. '\0x2B' oder "\\0x2B"
EDIT:
Es kann natürlich sein, dass LDAP die Hexwerte ohne "0x" erwartet. In diesem Fall kannst du natürlich den ersten Link vergessen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:47 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG