php http流,PHP HTTP认证

PHP HTTP认证

我们浏览的网页一般采用超文本传输协议HTTP,它是用于互联网上向网络浏览器传输网页的传输协议。

但HTTP也有自己的一套认证机制,如同开启了验证,会弹出对话框,需要用户输入用户名和密码,只有验证通过了才可以继续浏览网页。

在PHP中,当一个动态网页(以PHP结尾的文件)被请求时,会用全局变量(系统自定义)来存储验证的用户名和密码。

$_SERVER[‘PHP_AUTH_USER’] 用于验证提交的用户名

$_SERVER[‘PHP_AUTH_PW’] 用于存储验证提交的密码

如果当前提交的用户名和密码验证失败,则可以拒绝继续访问网页。

$authorization = false;

if($_SERVER['PHP_AUTH_USER'] == "admin" && $_SERVER['PHP_AUTH_PW'] == "123")

{

echo "login";

$authorization = true;

}

if(!$authorization)

{

header("WWW-Authenticate:Basic realm='Private'");

header('HTTP/1.0 401 Unauthorized');

print "You are unauthorized to enter this area.";

}

?>

那么我们再深入地讨论一下,整个过程的细节是怎么时行协议交互的呢?

1.首先,我们在浏览器中输入有验证机制的网页时,浏览器会发送GET方式的HTTP协议。

格式不懂的大家可以在网页中搜索查看一下http协议

GET /test.php HTTP/1.1

Host: www.bytekits.com

2.服务器收到来自客户端的请求后,服务器解析PHP文件,在PHP文件中发现用户名和密码验证失败,故返回给客户端401状态码。

服务器的响应如下:

HTTP/1.1 401 Authorization Required

Data:Sun,25,Feb 2018 15:51:20 GMT

Server:Apache/1.3.27 (Unix) PHP/4.3.1

X-Powerd-By: PHP/4.3.1

WWW-Authenticate: Basic realm="PHP Secured"

Connection:close

Content-Type: text/html

没有传输太多的信息,但我们注意到状态码

HTTP/1.1 401 Authorization Required 和 WWW-Authenticate: Basic realm=”PHP Secured”

这些HTTP返回元素都表明了此文件需要进行HTTP的安全保护验证。这时浏览器解析返回一个请输入用户名和密码的对话框,当输入正确后,浏览器第二次进行数据提交,这次提交变成了

GET /test.php HTTP/1.1

Host: www.bytekits.com

Authorization:Basic xxxxxx

Basic后的xxxxx是实际用户输入后的用户名和密码Base64后的字符串,这时服务器收到此请求后,解析出用户名和密码到$_SERVER对应的数组进行二次验证,如通过则正常访问网页,如失败,则重复返回401状态码进行验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值