Hej
Jeg har nedenstående script, til passwordbeskyttelse. Skidtet virker for så
vidt godt nok, bortset fra hvis man indtaster forkert password.
I det tilfælde udskrives "Sorry, could not find your password" til skærmen.
Fint nok. Men hvad hvis brugeren gerne vil prøve igen? Brugeren vil reloade
siden for at få passwordboksen op igen, men det sker ikke,
isset($PHP_AUTH_USER evaluerer til true.
Har prøvet med unset($PHP_AUTH_USER) men har man først taste forkert en gang
er der ingen mulighed for at lave en ny indtastning igen. Man hænger fast i
else sætningen.
Det mystiske er det ser ud til at virke i Netscape, så jeg ved ikke om IE
cacher på en anden måde.
php dokumentationen skriver i Chapter 17. HTTP authentication with PHP:
"Both Netscape Navigator and Internet Explorer will clear the local browser
window's authentication cache for the realm upon receiving a server response
of 401" Dette synes bare ikke at ske i IE
Håber i forstår problemstillingen og har evt ideer til løsning.
På forhånd mange tak
Henrik
<?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic Login=\"Password needed\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\n";
exit;
}
else{
$user_passwords = array (
// user1 is the login name and password1
// is that users password. Add as many
// lines as you like.
"user1" => "password1",
"user2" => "password2",
"user3" => "password3",
"user4" => "password4"
);
if (strcmp($user_passwords[$PHP_AUTH_USER],$PHP_AUTH_PW) == 0) {
// This is the page that should be password protected.
echo "This is the password protected page.";
exit;
}
else {
Header("HTTP/1.0 401 Unauthorized");
echo "Sorry, could not find your password!";
# har prøvet med dette ;
# unset($PHP_AUTH_USER) eller unset($GLOBALS['$PHP_AUTH_USER']);
# echo("<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0;url=psw.php\">");
exit;
}
}
?>
|