PHP HTTP 认证实例详解


Posted in PHP onNovember 03, 2016

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版本,不能在命令行下执行的.

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(默认值).

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
js下函数般调用正则的方法附代码
Jun 22 PHP
使用PHP批量生成随机用户名
Jul 10 PHP
用php的ob_start来生成静态页面的方法分析
Mar 09 PHP
深入密码加salt原理的分析
Jun 06 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 #PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
Nov 02 #PHP
php 使用redis锁限制并发访问类示例
Nov 02 #PHP
Android AsyncTack 异步任务实例详解
Nov 02 #PHP
php array_pop 删除数组最后一个元素实例
Nov 02 #PHP
PHP设置images目录不充许http访问的方法
Nov 01 #PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 #PHP
You might like
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
IE与FireFox的JavaScript兼容问题解决办法
2013/12/31 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python numpy 点数组去重的实例
2018/04/18 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
英国旅行箱包和行李箱购物网站:Travel Luggage & Cabin Bags
2019/08/26 全球购物
怎样声明子类
2013/07/02 面试题
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
什么是lambda函数
2013/09/17 面试题
车间调度岗位职责
2013/11/30 职场文书
音乐教学反思
2014/02/02 职场文书
毕业横幅标语
2014/10/08 职场文书
辞职信的写法
2015/02/27 职场文书
2015公司年度工作总结
2015/05/14 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server