【发布时间】: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,换句话说,变量未设置。