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

Beitrag lesen

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.