Exemplo n.º 1
0
    // если поля Аутоитентификации пусты
    header('WWW-Authenticate: Basic realm="AUTORIZATION FOR SUPER_USER"');
    header('HTTP/1.0 401 Unauthorized');
    exit('Доступ закрыт! Вам необходимо авторизироваться как Администратору сайта!');
}
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    //1_if
    $login = $_SERVER['PHP_AUTH_USER'];
    // если поля Аутоитентификации НЕ пусты, ложим содержимое в переменную для дальнейшей ее проверки
    $password = $_SERVER['PHP_AUTH_PW'];
    // если поля Аутоитентификации НЕ пусты, ложим содержимое в переменную для дальнейшей ее проверки
    if ($result = f_superUserExists($login)) {
        //2_if - передаем $login в ф-ю проверки login на имеющиеся данные ф файле(.htpasswd) с SuperUser'ами
        list($user, $res_hash, $salt, $iteration_count) = explode("|", $result);
        // разбиваем строку, login которой совпал с $login введенным при Аутентификации и раскидываем эту строку по переменным
        if (f_getHash($password, $salt, $iteration_count) == $res_hash) {
            echo "Вы вошли как Super User: {$login}";
        } else {
            header('WWW-Authenticate: Basic realm="AUTORIZATION FOR SUPER_USER"');
            header('HTTP/1.0 401 Unauthorized');
            exit;
        }
        // иначе в окно Авторизации
    } else {
        header('WWW-Authenticate: Basic realm="AUTORIZATION FOR SUPER_USER"');
        header('HTTP/1.0 401 Unauthorized');
        exit;
    }
    // иначе в окно Авторизации
}
//1_if
Exemplo n.º 2
0
$iteration_count = 3;
//число итераций "солений" пароля в цикле, при работе ф-ии f_getHash. (См. lib.inc.php)
$string = "852258";
// временный Пароль
function f_getHash($string, $salt, $iteration_count)
{
    // 3 param.:(string)-пароль, (salt)-соль для пароля, (iteration_count)-число итераций,-сколько раз "солить" массив в цикле
    for ($i = 0; $i < $iteration_count; $i++) {
        $string = sha1($string . $salt);
        return $string;
    }
    // вернет последний результат(строку) из такого "посоленного"массива
}
f_getHash($string, $salt, $iteration_count);
// вызов ф-и
$res_hash = f_getHash($string, $salt, $iteration_count);
// получаем Хеш Пароля
function f_addSuperUser($user, $res_hash, $salt, $iteration_count)
{
    // 4 param.:
    $path = "{$user}|{$res_hash}|{$salt}|{$iteration_count}\r\n";
    //формир.строку из получен.данных для записи в файл .htpasswd
    if (!file_put_contents(FILE_SUPERUSERS, $path, FILE_APPEND)) {
        return FALSE;
        // открываем соед.с файлом и записываем в него сформированную строку с данными
    } else {
        return TRUE;
    }
}
// вызов функции
if (!f_addSuperUser($user, $res_hash, $salt, $iteration_count)) {