Benutzerauthentifizierung mit PHP
Bjoern
- php
Hallo zusammen,
Wie kann ich auf einer php-Seite den Benutzer auffordern, einen Benutzername und Passwort anzugeben ?
Ich habe einmal diesen Code hier versucht:
<?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\n";
exit;
} else {
echo "Hello $PHP_AUTH_USER.<P>";
echo "You entered $PHP_AUTH_PW as your password.<P>";
}
?>
Mein Problem: Wenn ich Passwort und Benutzername eingebe, wird der Text "Hello..." nicht ausgegeben. Die Seite fragt mich einfach noch einmal nach Name/Passwort.
Habt ihr eine Idee, was ich falsch mache ? Vielen Dank im voraus.
Gruss,
Bjoern
Hallo Bjoern,
Habt ihr eine Idee, was ich falsch mache ?
Möglichkeit 1: Du verwendest PHP als CGI und nicht als Apache-Modul, dann _kann_ HTTP-Authentifizierung mit PHP nicht funktionieren.
Möglichkeit 2: Du hast eine PHP-Version mit ausgeschaltetem register_globals - in dem Fall solltest Du $_SERVER['PHP_AUTH_USER'] statt $PHP_AUTH_USER nehmen. (und gleiches für das Passwort)
Christian
Hallo,
Danke erstmal Christian. Ich hab das einmal angeschaut:
Möglichkeit 1: Du verwendest PHP als CGI und nicht als Apache-Modul, dann _kann_ HTTP-Authentifizierung mit PHP nicht funktionieren.
In meiner phpinfo steht: "Loaded Modules mod_php4"
Das heisst doch, dass PHP als Modul läuft, oder ?
Möglichkeit 2: Du hast eine PHP-Version mit ausgeschaltetem register_globals - in dem Fall solltest Du $_SERVER['PHP_AUTH_USER'] statt $PHP_AUTH_USER nehmen. (und gleiches für das Passwort)
In der phpinfo steht ebenfalls: "register_globals On". Ich hab's auch einmal mit $_SERVER[... versucht. Aber irgendwie will das nicht.
Habt ihr noch eine Idee ?
Gruss,
Bjoern
Hallo Bjoern,
In meiner phpinfo steht: "Loaded Modules mod_php4"
Das heisst doch, dass PHP als Modul läuft, oder ?
Ja.
Habt ihr noch eine Idee ?
Direkt zur Problemlösung nicht, jedoch zur Diagnose:
Füge mal phpinfo (INFO_VARIABLES); dort ein, wo die Autentifizierung fehlschlägt, direkt vor die exit-Zeile. Dann gibst Du einmal Deine Daten (Benutzername, Passwort) ein und drückst dann beim zweiten Mal auf Abbrechen.
Christian
Hallo Christian,
Direkt zur Problemlösung nicht, jedoch zur Diagnose:
Füge mal phpinfo (INFO_VARIABLES); dort ein, wo die Autentifizierung fehlschlägt, direkt vor die exit-Zeile. Dann gibst Du einmal Deine Daten (Benutzername, Passwort) ein und drückst dann beim zweiten Mal auf Abbrechen.
Der Benutzername, den ich eingegeben habe, taucht nirgens auf. Eine Variable mit Namen ...'PHP_AUTH_USER' gibt's auch nicht...
Bjoern