-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Работа с файлом htpasswd
(PHP)
- Библиотека не требует внешних зависимостей (кроме других composer-пакетов).
- Протестировано на PHP 5.4+, PHP 7, HHVM (Linux), PHP 5.5 (Windows).
- Установка:
composer require axy/htpasswd
. - License: MIT.
Библиотека предоставляет программное API для работы с файлами htpasswd
.
Консольная утилита доступна в отдельном пакете axy/htpasswd-cli.
use axy\htpasswd\PasswordFile;
$file = new PasswordFile('/path/to/.htpasswd');
$file->setPassword('nick', 'password');
$file->setPassword('john', '123456');
$file->save();
Поддерживаемые алгоритмы шифрования (константы класса PasswordFile::*
):
-
ALG_MD5
: алгоритм Apache APR1-MD5 (используется по умолчанию). -
ALG_BCrypt
: Blowfish -
ALG_SHA1
: SHA-1 -
ALG_CRYPT
: crypt (Unix) -
ALG_PLAIN
: Просто текст (не поддерживается серверами на некоторых платформах).
Конструктор принимает имя файла с паролями.
Или NULL
: аналог опции -n
для консольной утилиты:
$file = new PasswordFile();
$file->setPassword('nick', 'password');
$file->getContent(); // возвращает содержимое "файла"
$file->save(); // Исключение FileNotSpecified
Устанавливает пароль $password
для пользователя $user
.
Для шифрования (хэширования) используется $algorithm
(по умолчанию Apache MD5).
$options
- опции шифрования.
Сейчас поддерживается только cost
для BCrypt (число между 4 и 31 включительно).
Возвращает TRUE
в случае создания нового пользоватея и FALSE
если был изменён пароль для уже существующего.
Удаляет запись о пользователе из файла.
Возвращает TRUE
если пользователь был удалён и FALSE
если его не было изначально.
Возвращает TRUE
если пользователь $user
существует и ему подошёл пароль $password
.
Проверяет, есть ли в файле запись о пользователе $user
.
if (!$file->isUserExist('john')) {
echo 'John? Мы вас не знаем.';
exit();
}
if (!$file->verify('john', 'password')) {
echo 'Ты не John! Ты самозванец!';
exit();
}
echo 'Привет, John';
Возвращает содержимое файла (без записи).
Сохраняет содержимое файла (если он указан).
В отличии от утилиты htpasswd
(см. опцию -c
) существующий файл всегда изменяется (не перезаписывается).
Несуществующий файл создаётся.
Устанавливает новое имя файла.
Содержимое старого файла будет загружено и сохранено в новом (после save()
).
Возвращает текущее имя файла.
Классы исключений находятся в пространстве имён axy\htpasswd\errors
.
-
InvalidFileFormat
: файл паролей имеет некорректный формат. -
FileNotSpecified
: выбрасывается изsave()
если файл не был указан в конструкторе.