Заголовок PHP аутентифицируется, не принимая пользователя и пароль

0

Я использую следующий скрипт аутентификации PHP для сайта, но когда я ввожу пользователя и пароль, сценарий не будет принимать их как правильные (TEST/TEST1), и он всегда перезагружает приглашение пользователя/пароля (функция входа).

Вот мой сценарий.

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();
    }
}
Теги:
authentication
http
passwords

1 ответ

1

Вы можете попробовать это, это отлично работает для меня:

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 (Zero), тогда появится приглашение, когда пользователь вводит пользователя/пароль, тогда значение переменной станет 1, и подсказка перестанет появляться.

  • 0
    Протестировал, но тоже самое. Он повторно запрашивает поле пользователя / пароля

Ещё вопросы

Сообщество Overcoder
Наверх
Меню