有没有一种方法可以注销在php中完成的摘要验证。我试过未设置($ _ SERVER [“PHP_AUTH_DIGEST”]); 但它不会要求重新登录。 我知道如果我关闭浏览器,那么它会工作,这里是我的功能。PHP摘要验证,注销
function login(){
$realm = "Restricted area";
$users = array("jamesm"=>"");
if (empty($_SERVER["PHP_AUTH_DIGEST"])) {
header("HTTP/1.1 401 Unauthorized");
header("WWW-Authenticate: Digest realm=\"{$realm}\",qop=\"auth\",nonce=\"".uniqid()."\",opaque=\"".md5($realm)."\"");
return false;
}
if (!($data = http_digest_parse($_SERVER["PHP_AUTH_DIGEST"])) || !isset($users[$data["username"]]))
return false;
$A1 = md5($data["username"] . ":{$realm}:{$users[$data["username"]]}");
$A2 = md5($_SERVER["REQUEST_METHOD"].":{$data["uri"]}");
$valid_response = md5("{$A1}:{$data["nonce"]}:{$data["nc"]}:{$data["cnonce"]}:{$data["qop"]}:{$A2}");
if ($data["response"] != $valid_response)
return false;
return true;
}
function logout(){
unset($_SERVER["PHP_AUTH_DIGEST"]);
return true;
}
我还需要添加到注销功能来完成此功能。
如果我改变它的领域,但我不希望它被改变。
重复[通过PHP HTTP身份验证注销](http://stackoverflow.com/questions/449788/http-authentication-logout-via-php)。答案:No. – netcoder 2011-01-05 04:54:34
我知道这可以做,只是不知道如何。 – 2011-01-05 04:58:48
关闭浏览器是唯一的方法,因为信息在浏览器内部注册 – ajreal 2011-01-05 05:05:04