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

时间:2016-04-04 08:42:43

标签: php http authentication

我正在使用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');         

2 个答案:

答案 0 :(得分:2)

对于基本HTTP身份验证,您必须在HTTP标头中发送身份验证请求。有关详细信息,请查看以下白皮书:RFC 2617RFC 7235(对此答案的评论中的进一步说明)。当然,这不允许之前的任何其他数据(例如"后台HTML"),因为您还可以阅读header() function上的PHP手册:

  

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

我建议使用其他形式的身份验证,例如Sessions。您可以查看this guide

但是,如果您确实 使用基本HTTP身份验证并希望在后台显示内容,则解决方法是使用两个文件<iframe>

background.html 会显示您想要的&#34;后台HTML&#34;并且是您将在浏览器中打开的文件:

<h1>Beautiful background</h1>
<!-- you can put your background HTML code here -->

<iframe src="login.php" />

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

答案 1 :(得分:0)

不,您无法使用基本HTTP身份验证方法发送背景图片。

但是,您可以显示带有一些花哨的grafics和简单的名称/密码形式的单独样式的页面。提交正确的凭据后,将用户存储在会话中。这意味着您必须在每个页面上检查会话。