PHP头验证不接受用户和密码

PHP头验证不接受用户和密码,php,http,authentication,passwords,Php,Http,Authentication,Passwords,我正在为一个站点使用下面的PHP身份验证脚本,但是当我输入用户和密码时,该脚本不会接受它们为正确的(TEST/TEST1),并且它总是重新加载user/pass提示符(login函数) 这是我的剧本 function login() { header('WWW-Authenticate: Basic realm="Acceso restringido."'); header('HTTP/1.0 401 Unauthorized'); echo "Acceso restri

我正在为一个站点使用下面的PHP身份验证脚本,但是当我输入用户和密码时,该脚本不会接受它们为正确的(TEST/TEST1),并且它总是重新加载user/pass提示符(login函数)

这是我的剧本

function login()
{
    header('WWW-Authenticate: Basic realm="Acceso restringido."');
    header('HTTP/1.0 401 Unauthorized');
    echo "Acceso restringido.\n";
    exit;
}
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    login();
}
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

// open a user/pass prompt
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    login();
} else {
    if ($_SERVER['PHP_AUTH_USER'] == 'TEST' && $_SERVER['PHP_AUTH_PW'] == 'TEST1') {
   } else {
        login();
    }
}

你可以试试这个,它对我很好:

session_start();
function login() {
    header("WWW-Authenticate: Basic"); 
    header("HTTP/1.0 401 Unauthorized");
    die; 
}
if (!isset($_SESSION["AUTH_SUCCESS"])) {
    $_SESSION["AUTH_SUCCESS"] = 0;
}
if ($_SESSION["AUTH_SUCCESS"] == 0) {
    $user = "TEST"; 
    $pass = "TESTPASS";
    if ($_SERVER["PHP_AUTH_USER"] != $user || $_SERVER["PHP_AUTH_PW"] != $pass) { 
        login();
    } else {
        $_SESSION["AUTH_SUCCESS"] = 1;
    }
}
if ($_SESSION["AUTH_SUCCESS"] == 0) {
    die("You have entered a wrong password/username.");
}

此代码在会话中保存一个名为AUTH_SUCCESS的变量,只要此变量为0(零),则会出现提示,当用户输入user/pass时,变量值将变为1,提示将停止显示。

$\u SERVER['PHP_AUTH_user']
和$\u SERVER['PHP_AUTH_PW']会自动填充,应该不需要手动覆盖它们。对其进行了测试,但事情是一样的。它会重新提示用户/密码框