MrBeen: $_SERVER[PHP_AUTH_USER] und $_SERVER[PHP_AUTH_PW]

Hallo allerseits,
ich bin auf ein sehr merkwürdiges Problem gestoßen.

Wenn ich mich mit den Zeichen . / : im Benutzernamen anmelden will.
enthalten die Variabeln
$_SERVER[PHP_AUTH_USER] und $_SERVER[PHP_AUTH_PW]
nicht das was ich eingebe.

PHP Version 5.1.6

Als Beispiel:

1. Eingabe:
-----------------------
Username    test:
Passwort    admin

1. Ergibt:
-----------------------
        Username  test
        Passwort  :admin

2. Eingabe
-----------------------
Username    :test
Passwort    admin

2. Ergibt:
-----------------------
        Username
        Passwort  test:admin

3. Eingabe
------------------------
Username    .:test:.
Passwort    admin

3. Ergibt:
-----------------------
          Username  .
          Passwort  test:.:admin
-----------------------

Das ist doch nicht normal oder ?!
Unter php.net habe ich keinen Hinweis gefunden woran es liegen könnte.

  1. Hi MrBeen,

    Das ist doch nicht normal oder ?!
    Unter php.net habe ich keinen Hinweis gefunden woran es liegen könnte.

    Wenn du dich per HTTP Authentifizierung bei einem Webserver anmelden möchtest, so setzt dein Browser deine Eingaben wie folgt zusammen:

    Username:Passwort

    Das kodiert der Browser dann mit Base64 und schreibt als als Authorization Header in den Request rein.
    Das könnte z.B. so aussehen:

    testuser:testpassword

    Ergibt Base64-kodiert:

    AHRlc3R1c2VyAHRlc3RwYXNzd29yZA==

    Und als Header:

    Authorization: Basic AHRlc3R1c2VyAHRlc3RwYXNzd29yZA==

    Der Server dekodiert das wieder und trennt Username und Passwort anhand des ersten Doppelpunktes auf. Ergo kannst du im Usernamen keinen Doppelpunkt haben.
    Wenn du das Prinzip mal auf alle deine Teste durchgehst, dann wirst du sehen, das der Server immer genau das gemacht hat, nämlich am ersten Doppelpunkt in Username und Passwort aufgeteilt.

    Aus einem Username „User:Name” und einem Passwort testpassword wird also:

    User:Name:testpassword

    Und wenn man der Server es wieder ausliest:

    Username: User
      Passwort: Name:testpassword

    Viele Grüße,
      ~ Dennis.

    1. Hm.. stimmt.

      Vielen Dank
      für den Hinweis. :)