使用PHP的HTTP身份验证无法在服务器上运行

问题描述 投票:0回答:1

我使用Runcloud作为我的VPS控制面板。然后我的环境是“NGINX + Apache2 Hybrid”

我使用这些代码在我的localhost上进行身份验证,它可以工作。但是,当我将其部署(上传)到服务器时,它会失败。我输入了正确的用户名和密码,然后弹出窗口让我再次输入util我单击“取消”按钮并转到失败页面。

我该如何调试(检查输入的用户名密码)?或者我需要向服务器添加设置。

<?php
$protect = true;
if($protect){
        $LoginSuccessful = false;

        if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){

            $Username = $_SERVER['PHP_AUTH_USER'];
            $Password = $_SERVER['PHP_AUTH_PW'];

            if ($Username == 'hello' && $Password == 'hello'){
                $LoginSuccessful = true;
            }
        }
        if (!$LoginSuccessful){

            header('WWW-Authenticate: Basic realm="Secret page"');
            header('HTTP/1.0 401 Unauthorized');

            print "Login failed!\n";
            die();
        }
    };
?>
<html code>
php apache nginx http-authentication
1个回答
0
投票

你添加了一些配置吗?

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

在apache中(不确定nginx中的等价物)尝试转储

$ _SERVER ['PHP_AUTH_USER']和$ _SERVER ['PHP_AUTH_PW']并查看它们是否已设置。

© www.soinside.com 2019 - 2024. All rights reserved.