WWW

Userverwaltung bei Authtype Basic in php

Wenn ein php-Script per .htaccess-Datei zugriffsgeschützt ist, hat man im Script je nachdem, welcher Apache und welche Variante von php benutzt werden, unterschiedliche Variablen zur Verfügung, um den User-Namen und gegebenenfalls das Passwort in Erfahrung zu bringen, mit dem das Script aufgerufen wurde.

Angenommen, vom Server example.com wird das Script /test.php mit HTTP/1.1 abgerufen, der Benutzer identifiziert sich als test-user mit dem Passwort passwort, dann bekommt man bei unseren Standardkonfigurationen der Apachen und des php4stub folgende Daten:

Apache Apache-SSL Apache Apache-SSL
mod_php mod_php php via cgi php via cgi
$_SERVER['SERVER_PORT'] 80 443 80 443
$_ENV['SERVER_PORT'] - nicht vorhanden - - nicht vorhanden - 80 443
$_SERVER['HTTPS'] - nicht vorhanden - 'on' - nicht vorhanden - 'on'
$_ENV['HTTPS'] - nicht vorhanden - - nicht vorhanden - - nicht vorhanden - 'on'
$_SERVER['GATEWAY_INTERFACE'] 'CGI/1.1' 'CGI/1.1' 'CGI/1.1' 'CGI/1.1'
$_ENV['GATEWAY_INTERFACE'] - nicht vorhanden - - nicht vorhanden - 'CGI/1.1' 'CGI/1.1'
$_SERVER['SCRIPT_NAME'] '/test.php' '/test.php' '/cgi-bin/php4stub' '/cgi-bin/php4stub'
$_ENV['SCRIPT_NAME'] - nicht vorhanden - - nicht vorhanden - '/cgi-bin/php4stub' '/cgi-bin/php4stub'
$_SERVER['SCRIPT_URL'] '/test.php' '/test.php' '/test.php' '/test.php'
$_ENV['SCRIPT_URL'] - nicht vorhanden - - nicht vorhanden - '/test.php' '/test.php'
$_SERVER['PHP_SELF'] '/test.php' '/test.php' '/test.php' '/test.php'
$_ENV['PHP_SELF'] - nicht vorhanden - - nicht vorhanden - - nicht vorhanden - - nicht vorhanden -
$_SERVER['AUTH_TYPE'] 'BASIC' 'BASIC' 'BASIC' 'BASIC'
$_ENV['AUTH_TYPE'] - nicht vorhanden - - nicht vorhanden - 'BASIC' 'BASIC'
$_SERVER ['HTTP_CGI_AUTHORIZATION'] - nicht vorhanden - - nicht vorhanden - 'BASIC dGVzdDp0ZN0' 'BASIC dGVzdDp0ZN0'
$_ENV ['HTTP_CGI_AUTHORIZATION'] - nicht vorhanden - - nicht vorhanden - 'BASIC dGVzdDp0ZN0' 'BASIC dGVzdDp0ZN0'
$_SERVER['REMOTE_USER'] 'test-user' 'test-user' 'test-user' 'test-user'
$_ENV['REMOTE_USER'] - nicht vorhanden - - nicht vorhanden - 'test-user' 'test-user'
$_SERVER['PHP_AUTH_USER'] 'test-user' 'test-user' - nicht vorhanden - - nicht vorhanden -
$_ENV['PHP_AUTH_USER'] - nicht vorhanden - - nicht vorhanden - - nicht vorhanden - - nicht vorhanden -
$_SERVER['PHP_AUTH_PW'] 'passwort' 'passwort' - nicht vorhanden - - nicht vorhanden -
$_ENV['PHP_AUTH_PW'] - nicht vorhanden - - nicht vorhanden - - nicht vorhanden - - nicht vorhanden -

Es können viele weitere Werte abgefragt werden. Ein Aufruf von phpinfo() im jeweiligen Script unter den jeweils interressierenden Bedingungen zeigt in der Regel, welche noch möglich sind.

Wenn man eine Anmeldung eingibt, enthält die cgi-Variable HTTP_CGI_AUTHORIZATION den Inhalt des vom Browser gesendeten Authorization-Headers. Bei Basic Authentication enthält er den Benutzernamen und das Kennwort (genau: "user:kennwort",base64-kodiert). Die übrigen Variablen erklären sich anhand der obigen Tabelle und Beispiele vermutlich zur Genüge.

 

Eine Warnung ist angebracht: Es ist damit zu rechnen, dass sich an der Verfügbarkeit und dem Inhalt von Variablen und deren Namen Änderungen ergeben, wie in der Vergangenheit, so auch mit zukünftigen Releases oder Patches von Apache, Apache-ssl, php, HTTP und cgi, oder auch mit Änderungen an unserer Installation, vielleicht auch unterschiedlichen Browsern.

Geändert am: 22.07.2006, 18:28 Uhr
Nach oben
Druckversion