[PHP5] ldap sonderzeichen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [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?????

  • #2
    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.

    Kommentar


    • #3
      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.
      Zuletzt geändert von H2O; 26.10.2007, 11:56.
      Gruss
      H2O

      Kommentar

      Lädt...
      X