使用 PHP 的 HTTP 身份验证在服务器上不起作用
HTTP authentication with PHP not work on server
我使用 Runcloud 作为我的 VPS 控制面板。
那么我的环境是"NGINX + Apache2 Hybrid"
我使用这些代码在我的本地主机上进行身份验证,它有效。
但是当我将它部署(上传)到服务器时,它失败了。
我输入了正确的用户名和密码,它弹出 window 并让我再次输入 util 我单击 "Cancel" 按钮并转到失败页面。
如何调试(检查输入的用户名密码)?或者我需要给服务器添加设置。
<?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>
你有没有添加一些配置,比如
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
在 apache 中(不确定 nginx 中的等价物是什么)
尝试转储
$_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 并查看它们是否已设置。
我使用 Runcloud 作为我的 VPS 控制面板。 那么我的环境是"NGINX + Apache2 Hybrid"
我使用这些代码在我的本地主机上进行身份验证,它有效。 但是当我将它部署(上传)到服务器时,它失败了。 我输入了正确的用户名和密码,它弹出 window 并让我再次输入 util 我单击 "Cancel" 按钮并转到失败页面。
如何调试(检查输入的用户名密码)?或者我需要给服务器添加设置。
<?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>
你有没有添加一些配置,比如
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
在 apache 中(不确定 nginx 中的等价物是什么) 尝试转储
$_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 并查看它们是否已设置。