password_hash
Создаёт хеш пароля для хранения в базе.
Синтаксис
password_hash(string $password, string|int|null $algo, array $options = []): stringПараметры
| Параметр | Тип | Описание |
|---|---|---|
| $password | string | Пароль пользователя. |
| $algo | string|int|null | Алгоритм; указывайте `PASSWORD_DEFAULT`. |
| $options | array | Необязательный. Настройки алгоритма. |
Возвращаемое значение
stringХеш длиной около 60 символов.
Примеры
Хеш каждый раз разный, даже для одного пароля:
<?php
echo password_hash('secret', PASSWORD_DEFAULT);Проверка пароля:
<?php
$hash = password_hash('secret', PASSWORD_DEFAULT);
var_dump(password_verify('secret', $hash));
var_dump(strlen($hash) >= 60);Результат:
bool(true)
bool(true)Примечания
Под хеш в базе отводите столбец на 255 символов: длина может вырасти со сменой алгоритма. Функции md5() и sha1() для паролей непригодны.
См. также
- password_verify — Проверяет, соответствует ли пароль хешу.
- random_int — Возвращает случайное целое число из диапазона.
Вопросы и ответы по теме
В учебнике
- Безопасность — Основы безопасности сайта на PHP — XSS и экранирование, SQL-инъекции, хеширование паролей, CSRF-токены и проверка входных данных.