Chinaunix首页 | 论坛 | 博客
  • 博客访问: 312874
  • 博文数量: 38
  • 博客积分: 1334
  • 博客等级: 中尉
  • 技术积分: 869
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-21 10:26
个人简介

贵在坚持

文章分类

全部博文(38)

文章存档

2013年(10)

2012年(15)

2011年(13)

分类: PHP

2013-06-02 23:35:36

www-authenticate是一种简单的用户身份认证技术。
很多验证都采用这种验证方式,尤其在嵌入式领域中。
优点:方便
缺点:这种认证方式在传输过程中采用的用户名密码加密方式为BASE-64,其解码过程非常简单,如果被嗅探密码几乎是透明的.


服务器收到请求后,首先会解析发送来的数据中是否包含有:
Authorization: Basic XXXX=这种格式的数据
如果没有这样的header数据
那么服务器会发送HTTP信息头WWW-Authenticate: Basic realm=""到浏览器
要求浏览器发送合法的用户名和密码到服务端,为了进一步告知浏览器,这个页面需要认证 我们最还还是接着发送一个401错误
Header("HTTP/1.0 401 Unauthorized");


用户输入用户名:admin 密码:admin后,浏览器将以下面这种格式将数据发送给服务器端:Authorization: Basic YWRtaW46YWRtaW4=
Authorization: Basic为www-authenticate认证的标准HTTP信息头
YWRtaW46YWRtaW4=是经BASE-64加密后的用户名和密码
经解密后的格式为 admin:admin


这时我们就可以用过PHP的全局变量来使用它们了
$_SERVER['PHP_AUTH_USER'];
$_SERVER['PHP_AUTH_PW'];


例:
one.php
if(!isset($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate:Basic realm="happy"');


echo "没有输入密码";
exit();
}else {
echo "{$_SERVER['PHP_AUTH_USER']}你好!
";
echo "你输入的密码为{$_SERVER['PHP_AUTH_PW']}!";
}


这样访问量就会出现要输入用户名和密码了!
阅读(3027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~