A1=MD5(
A2=MD5( < ;request-methd>:
최종 결과: MD5(MD5(A1):
위 줄의 MD5(A1) 및 MD5(A2)에 문제가 있습니다. 브라우저는 MD5(A1:
$realm='saberyjs';
$password='0011';//데이터베이스를 쿼리하는 방법은 다음과 같습니다. 단지 테스트하기에 편리할 뿐입니다;
if(!isset($_SERVER['PHP_AUTH_DIGEST']))
{
$n> header("www-authenticate:Digest realm ='".$realm ."', nonce='".$nonce."',algorithm='md5',qop='auth'");
header("HTTP/1.0 401 권한 부여 필요");
종료() ;
}
else
{
//echo 'sset';
//echo $_SERVER['PHP_AUTH_DIGEST'];
$result=parse_auth_digest($_SERVER['PHP_AUTH_ DIGEST']);
//var_dump($result);
//echo hexdec($result['nc']);
//exit();
if((int) $결과['nc']>1)
> 🎜> 헤더("HTTP/ 1.0 401 승인 취소 필요");
exit(); > }
$A1=md5($result['username'].":".$result['realm'].":".$password );
['사용자 이름'].':'.$result['realm'].':'.$password).':'.$result['nonce'].':'.$result[ 'cnonce'];
$A2=md5($_SERVER['REQUEST_METHOD'].":".$result['uri']);
$degest=md5($A1.":".$ 결과['nonce' ].':'.$result['nc'].':'.$result['cnonce'].':'.$result['qop'].':'.$A2) ;
/ / var_dump ($degest) }
else
{
echo '성공';
}
}
함수 parse_auth_digest($ auth_digest)
{
$pairs=array ();
preg_match_all('/(w+)=['"]?([/a-z0-9A-Z.]+)['"] ?/i',$auth_digest,$result,PREG_SET_ORDER) ;
foreach($result as $value)
$pairs[$value[1]]=$value[2];
//var_dump ($pairs);
$pairs 반환;
}
?>
위의 내용은 PHP 다이제스트 인증을 소개하며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.