我已经阅读了与此相关的PHP 站点中的页面,但我希望访问username
and password
,但之前没有指定标题,因此会显示表单并在之后导致某种类型的重新加载。
我希望这个username
和password
传递可以可选地传递。我的目标是让我的管理用户依赖这些凭据。因此,与其打开example.com/admin
登录然后重定向回example.com
显示管理功能,我想读取这些凭据并从中登录(如果它们匹配)。
我已经var_dump
'ed$_SERVER
和$_ENV
,但要求http://username:password@example.com
不要在任何地方显示它们。
我将 PHP 作为 CGI 运行。
我该怎么做?
更新:
<?php
/*if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
}*/
echo '<pre>';
$user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : null;
$pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;
var_dump( $user, $pass );
var_dump($_SERVER, $_ENV);
echo '</pre>';
这是我正在使用的示例代码。Colin 的添加建议RewriteRule
并没有影响结果。
这里的问题是,如果该if
部分被注释掉,我会得到NULL
$user 和 $pass 的值。如果我取消评论它,我会得到正确的值。
添加额外的RewriteRule
标题,但不是获取值所必需的。看起来所有的魔力都在于如果。