我编写了以下php代码来执行基本身份验证。我想知道当用户点击确定按钮时我如何显示文本,并输入了错误的用户名或密码。我已经评论了我认为可以使其起作用的那条线,但没有。
$user = array('Bob' => 'bob');
$pass = array('Bob' => 'pass');
$userSuccess = false;
$passSuccess = false;
if(!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['PHP_AUTH_PW']))
{
header('http/1.1 401 Unauthorized');
header('www-authenticate: basic');
echo "<h2> HTTP Error 401: Unauthorized Access </h2>";
exit;
}
else
{
foreach($user as $value)
if($_SERVER['PHP_AUTH_USER'] == $value)
$userSuccess = true;
foreach($pass as $value)
if($_SERVER['PHP_AUTH_PW'] == $value)
$passSuccess = true;
if(!$userSuccess || !$passSuccess)
{
header('http/1.1 401 Unauthorized');
header('www-authenticate: basic');
echo "incorrect stuff"; // I don't get why this line doesn't make it work.
exit;
}
}
谢谢你的时间。
答案 0 :(得分:1)
您需要自定义401页面。如何执行此操作取决于您的服务器。
例如,如果使用Apache,并假设它已配置为允许它,则可以使用ErrorDocument 401 /errors/401.html
生成.htaccess文件。
根据需要设置/errors/401.html
,这就是抛出401错误时应该显示的内容。
如果使用nginx,请参阅Nginx - Customizing 404 page,但您显然想要自定义401而不是404。