获取登录用户名

时间:2014-03-01 16:21:57

标签: php .htaccess .htpasswd

是否可以通过htpasswd进程获取已成功通过身份验证的用户名并将其放入会话变量中?

User: mave Pass: mave123

成功登录:将'mave'写入会话?

3 个答案:

答案 0 :(得分:2)

.htaccess无法创建或填充PHP会话,但您可以获得:

$_SERVER['PHP_AUTH_USER']

PHP代码中的值和会话中的存储。

答案 1 :(得分:2)

您可以尝试$_SERVER['PHP_AUTH_USER'],但我不知道这是否适用于htaccess,因为它不是由PHP触发的。

答案 2 :(得分:1)

正如其他用户已经回答的那样,您可以使用$_SERVER['PHP_AUTH_USER']来引用该用户。但是,如果PHP在CGI模式下运行,它可能会失败。在CGI模式下设置用户/通过服务器变量;在您的授权目录中添加以下内容:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
</IfModule>

现在,从PHP开始,您可以使用:

if( preg_match('/Basics+(.*)$/i', $_SERVER['REMOTE_USER'], $matches) ) {
    list($name, $password) = explode(':', base64_decode($matches[1]));
    $_SERVER['PHP_AUTH_USER'] = strip_tags($name);
    $_SERVER['PHP_AUTH_PW'] = strip_tags($password);
}