php中文网认证,php摘要认证

的描述,

A1=MD5(::)

A2=MD5(:)

最后结果:MD5(MD5(A1)::::MD5(A2))

注意上面一行的MD5(A1)和MD5(A2)是有问题的,浏览器实现为MD5(A1::::A2)

$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 Unauthorization Required");

exit();

}

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)$result['nc']>1)

{

//echo '随机数已经过期';

$n> header("www-authenticate:Digest realm ='".$realm."',nonce='".$nonce."',algorithm='md5',qop='auth'");

header("HTTP/1.0 401 Unauthorization Required");

exit();

}

$A1=md5($result['username'].":".$result['realm'].":".$password);

//$A1=md5($result['username'].':'.$result['realm'].':'.$password).':'.$result['nonce'].':'.$result['cnonce'];

$A2=md5($_SERVER['REQUEST_METHOD'].":".$result['uri']);

$degest=md5($A1.":".$result['nonce'].':'.$result['nc'].':'.$result['cnonce'].':'.$result['qop'].':'.$A2);

// var_dump($degest);

if($degest!=$result['response'])

{

echo '验证失败';

var_dump($result);

}

else

{

echo '成功';

}

}

function 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);

return $pairs;

}

?>

以上就介绍了php摘要认证,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值