在PHP中使用HTTP基本身份验证时,如何在后台显示图像


How to show an image in the background when using HTTP Basic Authentication with PHP

我使用http身份验证方法在用户登录网页后立即向他显示一个提示框。到目前为止,当点击链接时,会打开一个提示框。但我想加载网页,然后加载提示框。有没有一种方法可以将图像添加到背景中?

if (($_SERVER['PHP_AUTH_USER'] != 'abcd') || ($_SERVER['PHP_AUTH_PW'] != 'abcd123')) 
{
    header('WWW-Authenticate: Basic Realm="Enter Your Credentials"');
    header('HTTP/1.0 401 Unauthorized');
}
    echo('You are valid');         

对于基本HTTP身份验证,您必须在HTTP标头中发送身份验证请求。有关更多信息,请参阅这些白皮书:RFC 2617和RFC 7235(在对该答案的评论中进行进一步解释)。当然,这之前不允许任何其他数据(如"后台HTML"),正如您在header()函数的PHP手册中所读到的:

请记住,必须在调用任何实际输出之前调用header()通过普通HTML标记、文件中的空行或PHP发送。

我建议使用另一种形式的身份验证,例如Sessions。你可以看看这本指南。

但是,如果您真的需要使用基本HTTP身份验证并希望在后台显示某些内容,则可以使用两个文件和<iframe>:

background.html将显示您想要的"背景HTML";是您将在浏览器中打开的文件:

<h1>Beautiful background</h1>
<!-- you can put your background HTML code here -->
<iframe src="login.php" />

login.php必须包含用于基本HTTP身份验证的php代码,就像您在上面问题的示例中使用的代码一样。

否,不能使用基本HTTP身份验证方法发送背景图像。

但是,你可以显示一个单独风格的页面,其中包含一些精美的图片和一个简单的名称/密码表单。在提交正确的凭据后,将用户存储在会话中。这意味着你必须检查每一页上的会话。