立即注册
 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广州大学城网业务调整

[PHP] 详细介绍一下PHP实现HTTP认证. [复制链接] qrcode

查看: 8440 | 回复: 3

tarena
发表于: 2013-4-16 17:31:48 | 显示全部楼层

首先,感谢你的阅读,本人观点:学习编程是个漫长的过程并不是一时就会很厉害的,关键是坚持,快乐地学习,在这里分享我的一些笔记给你;
  PHP来实现HTTP的强制认证是十分简单的,只需简单的几行代码就可以实现,下面

  我们来看一个例子,然后结合这里例子我向大家详细介绍一下PHP实现HTTP认证.

  怎么样,看到上面的代码了吧,就这么几行添加到你的程序页面上就可以实现了.

  它是通过利用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(默认值).
从基础的学习到后面应用提高都非常的系统,无论你是本专业的还是跨专业的,都能有所收获,参加4个月的达内时光转眼已逝,伴随着喜悦,达内给你一个新的平台,一个崭新的开始。
(本文由广州达内 http://www.ittarena.com/ http://www.phptarena.com/ 为你分享;)
跳转到指定楼层
寒夜独倚窗
发表于: 2013-10-15 08:29:37 | 显示全部楼层

马克一下,学习中!
linsx2010
发表于: 2014-3-7 15:46:16 | 显示全部楼层

学习下,支持支持
xianren1hao
发表于: 2014-6-11 11:21:26 | 显示全部楼层

帖子不错,顶贴!!!!顶贴!!!!!别删求过!!!谢谢
快速回复 返回顶部 返回列表