在php中,可以使用Header函数做一些有趣的事情,用户验证就是其中一个很有意思的功能。具体用法:
以上代码是我测试的代码Ok。
来源:http://www.ljf.cn/2008/3/Item23839.html
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'];
路由器都是这么做的
来自:http://blog.163.com/hongshaoguoguo@126/blog/static/18046981201322384241640/
<?php
//判断用户名和密码是否相同
if(!$PHP_AUTH_USER || !$PHP_AUTH_PW){
header("WWW-Authenticate: Basic Realm=".mb_convert_encoding("你好", "GBK", "UTF-8"));
header("HTTP/1.0 401 Unauthorized");
$title = "请与管理员联系!";
//include("header.php");
//输入提示消息
echo " <br> <font color=red>请与管理员联系,获取登录的用户名和密码! </font> <br>";
//include("footer.php");
exit;
}
else{
//设置用户登录的用户名和密码!
if($PHP_AUTH_USER != "admin" && $PHP_AUTH_PW != "123"){
$title = "";
//include("header.php");
echo "Incorrect Login.";
//include("footer.php");
exit;
}
}
echo "登陆成功!";
?>
//判断用户名和密码是否相同
if(!$PHP_AUTH_USER || !$PHP_AUTH_PW){
header("WWW-Authenticate: Basic Realm=".mb_convert_encoding("你好", "GBK", "UTF-8"));
header("HTTP/1.0 401 Unauthorized");
$title = "请与管理员联系!";
//include("header.php");
//输入提示消息
echo " <br> <font color=red>请与管理员联系,获取登录的用户名和密码! </font> <br>";
//include("footer.php");
exit;
}
else{
//设置用户登录的用户名和密码!
if($PHP_AUTH_USER != "admin" && $PHP_AUTH_PW != "123"){
$title = "";
//include("header.php");
echo "Incorrect Login.";
//include("footer.php");
exit;
}
}
echo "登陆成功!";
?>
以上代码是我测试的代码Ok。
来源:http://www.ljf.cn/2008/3/Item23839.html
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'];
路由器都是这么做的
来自:http://blog.163.com/hongshaoguoguo@126/blog/static/18046981201322384241640/
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/4049/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2013-8-29 13:47
评论列表