【问题标题】:PHP Basic Authentication how to get User name? [duplicate]PHP基本身份验证如何获取用户名? [复制]
【发布时间】:2018-06-25 08:56:07
【问题描述】:

我已经在我的网站的一个部分设置了基本身份验证,记录在 here,它工作正常,但现在我需要能够访问用户名才能过滤某些结果。但是$_SERVER['PHP_AUTH_USER'] 不起作用。有没有其他方法可以查看谁登录了?

我的 .htaccess 文件:

AuthType Basic

AuthName "You need to login to access this page."
AuthUserFile /usr/local/..../.htpasswd
Require valid-user

RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

它被标记为重复,但我看不到我的问题的答案在哪里?有人可以帮忙吗?管理员?

【问题讨论】:

  • 向用户询问,根据数据库中存储的用户名和密码对他们进行身份验证,在会话中缓存用户名的结果。 $_SERVER 设计用于服务器相关信息(路径、uri 等),而 $_SESSION 设计用于与用户当前会话相关的内容(用户名、面包屑、身份验证令牌?)。只需确保在此之前session_start() :P
  • 执行var_dump($_SERVER); 并查看是否可以在输出中的某处找到用户名。根据 PHP 嵌入 Web 服务器的具体方式,您可能会在略有不同的字段中找到此信息。另外,请阅读php.net/manual/en/features.http-auth.php 在 Web 服务器级别从“外部”PHP 触发 HTTP 身份验证时所说的内容。
  • “但是$_SERVER['PHP_AUTH_USER'] 不起作用”是什么意思?该字段是否为空白?
  • @CBroe 做了一个 var_dump,没有一个变量有我的用户名,这是否意味着我的用户名没有与 PHP 一起存储?有办法改变吗?
  • @MrGlass 调用时返回 null,换句话说,变量未设置。

标签: php .htaccess


【解决方案1】:

当用户登录时,使用会话变量存储用户名,然后访问它..

session_start();
$_SESSION['username'] = $username 

//$username is whatever you grabbed as the supplied login details

【讨论】:

    【解决方案2】:

    比如说,你有如下登录功能;

    <?php
    function doLogin($uname, $pword)
    {
        global $connection;
        $query = "SELECT psswd FROM users WHERE (uname = '{$uname}' OR email = '{$uname}')";
        $result = $connection->query($query);
        $row = $connection->fetch_assoc($result);
        $password = $row['psswd'];
    
        if (password_verify($pword, $password))
        {
            session_start();
            $_SESSION['user_logged_in'] = true;
            $_SESSION['username'] = $uname;
            return true;
        }
        return false;
    }
    

    使用验证,我们可以看到密码是从数据库中找到的,它是使用 php 的函数验证的,我们在会话上设置变量(在启动它和有效登录之后)也这样说作为存储用户名以备将来使用

    【讨论】:

      【解决方案3】:

      在您的 .htaccess 中,您正在填充 $_SERVER['HTTP_AUTHORIZATION'] - 您尝试过吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-31
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 2017-05-30
        相关资源
        最近更新 更多