HP来完成HTTP的强制认证是十分简易的,只需简易的两行代码就可以完成,下边大家看来一个例子,随后融合这儿例子我向大伙儿详细介绍一下PHP完成HTTP认证。

<?php
 if(!isset($_SERVER['PHP_AUTH_USER'])) {
 header('WWW-Authenticate: Basic realm="系统软件名字"');
 header('HTTP/1.0 401 Unauthorized');
 echo '未根据HTTP认证.';
 exit;
 }
 else {
 echo '认证根据.';
 echo '登录名: '.$_SERVER['PHP_AUTH_USER']."\n";
 echo '登陆密码: '.$_SERVER['PHP_AUTH_PW']."\n";
 }
?>

1.完成表明

如何,见到上边的代码了吧,就那么两行加上到你的程序流程网页页面上就可以完成了.
它是根据运用header()涵数向手机客户端电脑浏览器推送”Authentication Required”信息内容,强制性其弹出来一个登录名/登陆密码键入对话框,当客户键入登录名和登陆密码后,包括有URL的PHP脚本制作可能再加上预订义自变量PHP_AUTH_USER, PHP_AUTH_PW和AUTH_TYPE随后再度启用,这三个自变量各自表明登录名,登陆密码和认证种类(从PHP5.0.1起刚开始适用”Basic”和”Digest”二种认证方法),他们被储存在$_SERVER(从HP>>4.1.0起合理)或$HTTP_SERVER_VARS(从PHP3起合理)数字能量数组中实际运用时,我们可以把认证的两行代码写出涵数,要是分辨到客户自变量不会有或认证有误就一直实行该涵数并弹出对话框,并且还能够设定不正确登陆几回就不允许该客户浏览,实际的应用大伙儿用劲的散发思索吧.

 2.常见问题:

1.这一段代码务必放进程序流程的刚开始,且在其刚开始实行以前不可以有一切輸出(若有輸出则必须应用輸出缓存涵数才行).

2.PHP的HTTP认证体制仅在PHP以Apache控制模块方法运作时才合理,这一非常容易了解,它自身是HTTP强制认证,肯定是不宜于CGI版本号,不可以在cmd下实行的.

3.header推送标题文字代码时请当心.为了更好地对全部的手机客户端确保兼容模式,关键词”Basic”的第一个英文字母务必英文大写为”B”,交界字符串数组务必用双引号引入(不可以是单引号);在HTTP/1.0和401中间务必只有一个空格符.

4.在上面例子中,仅輸出了登录名和登陆密码,而在具体系统软件中则可依照登陆认证步骤开展与数据库查询或别的方法开展分辨和认证.

5.从PHP4.3.0起,为避免 有些人根据撰写脚本制作来从网页页面上获得登陆密码,当外界认证对特殊网页页面合理,而且安全中心被打开时,PHP_AUTH自变量将不容易被设定.可以用REMOTE_USER来鉴别外界认证的客户,用AuthType命令来分辨外界认证体制是不是合理.

6.要想让HTTP认证可以在IIS下工作中,PHP配备选择项cgi.rfc2616_headers务必设定为0(初始值).

谢谢阅读文章,期待能协助到大伙儿,谢谢你们对本网站的适用!