zoukankan      html  css  js  c++  java
  • PHP_AUTH_USER 和 PHP_AUTH_PW 实现登录验证

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

    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() 函数设置两个响应头,如下:

    Header('WWW-Authenticate: Basic realm="USER LOGIN"');
    Header('HTTP/1.0 401 Unauthorized');
    

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

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

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

    <?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 的那种方式对比,这种方式只能获取到用户的账号和密码,无法在服务端保存用户相关的其他数据

    如果发现文章中有不对的地方,欢迎在评论区指出。

  • 相关阅读:
    webStorm 快捷键 + 浏览器
    Linux安装nodejs和npm
    jQuery页面滚动底部加载数据
    html跳转指定位置-利用锚点
    JavaScript自定义对象
    vue v-time指令封装(接口返回时间戳 在到日期转换)
    vue 之 引入elementUI(两步走)
    小白6步搞定vue脚手架创建项目
    vue 封装组件
    npm dev run 报错
  • 原文地址:https://www.cnblogs.com/nnngu/p/13223003.html
Copyright © 2011-2022 走看看