$_SERVER[PHP_AUTH_USER] und $_SERVER[PHP_AUTH_PW]
MrBeen
- php
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.
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.
Hm.. stimmt.
Vielen Dank
für den Hinweis. :)