HTTP在本地文件系统上进行身份验证

时间:2013-05-27 12:33:35

标签: php http authentication

我对php编码有点新鲜。我正试着通过一本关于HTTP身份验证主题的书中的章节。

但是当我在我的localhost WAMP服务器上运行此代码时,即使我已正确填写表单,该框也会再次弹出。

<?php
$username = 'admin';
$password = 'letmein';

if (isset($_SERVER['PHP_AUTH_USER']) &&
    isset($_SERVER['PHP_AUTH_PW']))
{
    if ($_SERVER['PHP_AUTH_USER'] == $username &&
        $_SERVER['PHP_AUTH_PW']   == $password)
        echo "You are now logged in";
    else die("Invalid username / password combination");
}
else
{
    header('WWW-Authenticate: Basic realm="Restricted Section');
    header('HTTP/1.0 401 Unauthorized');
    die ("Please enter your username and password");
}
?>

那么我该怎么办才能让浏览器接受我的回答?

书中有一个暗示:

现代浏览器的安全性越来越严格,已经达到了 您可能无法轻松测试HTTP身份验证的地方 除非您更改浏览器的设置,否则请使用本地文件系统。这是为了 保护您免受可能从中下载的潜在恶意文件的侵害 互联网(因为本地文件通常会带来更大的安全风险)。代替, 如果你想编写使用这种类型的身份验证的代码,这是一个 您可能更喜欢在遥控器上执行测试的实例 使用Internet连接的服务器。

那么如何在远程服务器上测试我的php脚本呢?或者我可以更改自己的设置以允许我使用此功能吗?

1 个答案:

答案 0 :(得分:0)

这句话是无稽之谈;只要您使用网络服务器和http://localhost/...而非file:///...之类的网址访问该文件,就没有显着差异。您不需要“远程”服务器来编写代码。

在这种情况下的问题可能是 Web服务器负责处理身份验证,甚至根本不涉及您的PHP脚本。您可以通过更改realm值来确认这一点,看看它是否在浏览器弹出窗口中有效。

否则,var_dump($_SERVER)确认您收到的值。