前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP_AUTH_USER 和 PHP_AUTH_PW 实现登录验证

PHP_AUTH_USER 和 PHP_AUTH_PW 实现登录验证

作者头像
nnngu
发布2020-07-03 10:40:21
2.5K0
发布2020-07-03 10:40:21
举报
文章被收录于专栏:nnngunnngu

最近查看公司的CodeBase,看到有这样的一行:

代码语言:javascript
复制
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']))

其中的 PHP_AUTH_USERPHP_AUTH_PW 不知道是什么东西,网上查了一下,发现挺有意思的,现在记录总结一下。

要获取 _SERVER['PHP_AUTH_USER'] 和 _SERVER['PHP_AUTH_PW'] ,首先需要使用 PHP 的 header() 函数设置两个响应头,如下:

代码语言:javascript
复制
Header('WWW-Authenticate: Basic realm="USER LOGIN"');
Header('HTTP/1.0 401 Unauthorized');

设置了这两个响应头,网页在载入前就会出现一个登录框,要求输入用户名和密码。

为了获取从这个登录框中传来的用户名和密码,需要用到 PHP 提供的两个特殊变量 _SERVER['PHP_AUTH_USER'] 和 _SERVER['PHP_AUTH_PW'] 。

通过这两个变量拿到用户输入的用户名和密码,就可以做进一步的操作。比如下面这个小小的Demo:

代码语言:javascript
复制
<?php
if ( !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ) {
    header('WWW-Authenticate: Basic realm="USER LOGIN"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Please input username and password.';
    exit;
} else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
}

用这种方式实现的登录验证,目前发现如下缺点:

  • 关闭浏览器窗口,登录就会断开,重新打开就要重新登录
  • 无法在网页中实现点击一个按钮来退出登录
  • cookiesession 的那种方式对比,这种方式只能获取到用户的账号和密码,无法在服务端保存用户相关的其他数据
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档