David BERCOT wrote:
Hi,

I use this program to force a user to authenticate :
if (!isset($_SERVER["PHP_AUTH_USER"])) {
        header("WWW-Authenticate: Basic realm=\"Intranet SDSED\"");
        header("HTTP/1.1 401 Unauthorized");
}
Everything is ok except a detail : if the user makes a mistake (for
example, a bad password), the variable $_SERVER["PHP_AUTH_USER"] is
initialised.
So, if he wants to do again the above test, another identification won't
happen (because $_SERVER["PHP_AUTH_USER"] is already set).
I've tried :
$_SERVER["PHP_AUTH_USER"] = NULL;
without succes...

Do you have a clue ?

there is also $_SERVER["PHP_AUTH_PWD"] which you can check.
and rather than just checking whether $_SERVER["PHP_AUTH_USER"] is set
why not also check that the contained value is something valid?

you can start by checking that $_SERVER["PHP_AUTH_USER"] is not empty:

if (!isset($_SERVER["PHP_AUTH_USER"]) || empty($_SERVER["PHP_AUTH_USER"])) {
        // send headers
}

or (pseudocode):

if (!isset($_SERVER["PHP_AUTH_USER"])
        || empty($_SERVER["PHP_AUTH_USER"])
        || !isValidUserName($_SERVER["PHP_AUTH_USER"]))
{       
        // send headers
}


Thank you very much.

David.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to