anatoliy-novoselov / labs
Some PHP snippets for everyday usage
Installs: 15
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Forks: 0
pkg:composer/anatoliy-novoselov/labs
Requires
- php: >=7.2.0
Requires (Dev)
This package is not auto-updated.
Last update: 2025-12-19 15:28:18 UTC
README
PHP Snippet-ы для ежедневного использования в PHP-проектах. По-возможности стараюсь добавлять автотесты.
Установка
/> composer require anatoliy-novoselov/labs
Password
Класс для работы с паролями
Константы
CHECK_UPPER_CASE- обязательное наличие символов в верхнем регистреCHECK_LOWER_CASE- обязательное наличие символов в нижнем регистреCHECK_DIGIT- обязательное наличие цифрCHECK_SPEC- обязательное наличие знаков препинанияCHECK_SPACE- обязательное наличие пробелаCHECK_EASY- обязательное наличиеCHECK_LOWER_CASEиCHECK_DIGITCHECK_MEDIUM- обязательное наличиеCHECK_EASYиCHECK_UPPER_CASECHECK_STRONG- обязательное наличиеCHECK_MEDIUMиCHECK_SPECCHECK_IMPOSSIBLE- обязательное наличиеCHECK_STRONGиCHECK_SPACECHECK_ANY- наличие символов не регламентируетсяHASH_PASSWORD_SALT_ENVIRONMENT_KEY- переменная среды, в которой хранится соль для паролейCOMPLEXITY_RETURN_AS_FLOAT- получить значение сложности пароля какfloatCOMPLEXITY_NONE- очень простой пароль (или входит в топ самых популярных)COMPLEXITY_LOW- простой парольCOMPLEXITY_MEDIUM- нормальный парольCOMPLEXITY_STRONG- хороший парольCOMPLEXITY_IMPOSSIBLE- отличный (сложный) пароль
Переменные
$HASH_PASSWORD_SALT- общая соль для паролей, еслозьуется если нет возможности хранить в переменных среды
Методы
Проверка пароля
check(string $password, int $rules, int $minLength = 6, float $maxLength = INF) -
проверка пароля по определенным правилам и длине. Правила описаны в константах, начинающихся с префикса CHECK_.
<?php
...
$validate = \Snippet\Password::check('fooBar', \Snippet\Password::CHECK_UPPER_CASE | \Snippet\Password::CHECK_LOWER_CASE, 3, 6);
var_dump($validate);
/> bool(true)
Хеш пароля
hash(string $password, string $dispersion = '', string $salt = '') - создается sha256 хэш от пароля с солью $salt и дисперсией $dispersion.
Дисперсия позволяет создавать хеши уникальными для разных пользователей с одинаковыми паролями. В качестве дисперсии лучше использовать дату регистрации пользователя или его идентификатор.
Лучше установить переменную среды PASSWORD_HASH_SALT или переменную из \Snippet\Password::$HASH_PASSWORD_SALT_ENVIRONMENT_KEY, она будет использована автоматически в качестве соли для пароля.
<?php
echo \Snippet\Password::hash('foobar', '1', '**s<dsOsP?');
/> dd79d7383ae053279bbd6481696c1d025543ad308e7f1567fa879625d851397e
Сложность пароля
complexity(string $password, bool $as_float = false) возвращает сложность пароля в виде float или int со степенью сложности.
int принимает одно из значений COMPLEXITY_NONE, COMPLEXITY_LOW, COMPLEXITY_MEDIUM, COMPLEXITY_STRONG или COMPLEXITY_IMPOSSIBLE
<?php
var_dump(\Snippet\Password::complexity('foobar') == \Snippet\Password::COMPLEXITY_LOW);
/> bool(true)