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 相关文章推荐
php中常用编辑器推荐
Jan 02 PHP
php error_log 函数的使用
Apr 13 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
php简单实现MVC
Feb 05 PHP
PHP实现搜索相似图片
Sep 22 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
PHP 多任务秒级定时器的实现方法
May 13 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
PHP调用接口API封装的例子
Oct 11 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Mar 09 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/10/11 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
让焦点自动跳转
2006/07/01 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
Vue header组件开发详解
2018/01/26 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
python连接sql server乱码的解决方法
2013/01/28 Python
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
财务部总监岗位职责
2014/03/12 职场文书
学校安全管理责任书
2014/07/23 职场文书
领导参观欢迎词
2015/01/26 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
javascript对象3个属性特征
2021/11/17 Javascript
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL