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 相关文章推荐
杏林同学录(二)
Oct 09 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
Sep 07 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
php递归删除目录下的文件但保留的实例分享
May 10 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
php+html5基于websocket实现聊天室的方法
Jul 17 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
Nov 25 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 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 Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
Python如何对齐字符串
2020/07/30 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
五种Python转义表示法
2020/11/27 Python
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
工业自动化专业毕业生推荐信
2013/11/18 职场文书
超市后勤自我鉴定
2014/01/17 职场文书
期末自我鉴定
2014/01/23 职场文书
校园公益广告语
2014/03/13 职场文书
整改报告格式
2014/11/06 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
防汛通知
2015/04/25 职场文书
庆七一晚会主持词
2015/06/30 职场文书
母亲节感言
2015/08/03 职场文书
Python WSGI 规范简介
2021/04/11 Python
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS