// если поля Аутоитентификации пусты 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
$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)) {