## WP_HASH_PASSWORD() │ WP 2.5.0
Функция WP_HASH_PASSWORD()
используется для создания хеша пароля на основе заданного текста. Это значит, что вы можете превратить обычный текстовый пароль в зашифрованный вид, который хранится в базе данных.
### Что такое хеш?
Хеш — это уникальный код, который создается для пароля. Даже если вы вызовете эту функцию дважды с одним и тем же паролем, результаты будут разными.
В WordPress эта функция использует класс **PasswordHash**, который находится в файле wp-includes/class-phpass.php
. Вы можете настроить **PasswordHash** для ваших нужд.
### Плагин и переопределение функции
Эта функц��я является "плагинной", что значит, что ее можно переопределить в вашем плагине. Она становится доступной только после загрузки всех плагинов. Поэтому вызвать эту функцию из кода плагина можно только в момент загрузки плагина (plugins_loaded
) или позже, например, на этапе инициализации (init
).
Если вы хотите изменить (переопределить) эту функцию, вы можете создать функцию с тем же именем в вашем "must-use" или обычном плагине.
### Применение функций
Функция wp_set_password()
использует WP_HASH_PASSWORD()
для установки пароля пользователя.
**Время выполнения:**
- 1 вызов — 0.003847 сек (очень медленно)
- 50000 вызовов — 106.27 сек (крайне медленно)
- Версия PHP: 7.2.5, Версия WP: 4.9.8
### Возврат значения
Функция возвращает строку — хешированный пароль.
### Использование функции
```php
wp_hash_password( $password );
$password
(строка, обязательный параметр) — обычный текст пароля пользователя, который нужно зашифровать.
Примеры использования
Пример 1: Создание хеша пароля
echo wp_hash_password( 'my_pass' ); //> $P$B1tp3GD53ykbIGC4hf84pvbEjSUloq.
// зашифруем снова тем же способом
echo wp_hash_password( 'my_pass' ); //> $P$Bu3CWn/Y0zTG8IXJ8ee9yiT715tWxG/
Пример 2: Установка глобальной переменной для создания пароля с заданными параметрами
global $wp_hasher;
$wp_hasher = new PasswordHash( 16, FALSE );
$hashedPassword = wp_hash_password( $password );
Пример 3: Сравнение зашифрованного пароля с обычным
$wp_hasher = new PasswordHash( 8, TRUE );
$password_hashed = '$P$B55D6LjfHDkINU5wF.v2BuuzO0/XPk/';
$plain_password = 'test';
if( $wp_hasher->CheckPassword($plain_password, $password_hashed) ) {
echo "Пароли совпадают";
} else {
echo "Пароль неверный";
}
Замечания
- Глобальная переменная. Объект PHPass
$wp_hasher
.
История изменений
- С версии 2.5.0 — введено.
Код функции WP_HASH_PASSWORD()
function wp_hash_password( $password ) {
global $wp_hasher;
if ( empty( $wp_hasher ) ) {
require_once ABSPATH . WPINC . '/class-phpass.php';
// По умолчанию используется портативный хеш от phpass.
$wp_hasher = new PasswordHash( 8, true );
}
return $wp_hasher->HashPassword( trim( $password ) );
}
Связанные функции
-
PASSWORD
- check_password_reset_key()
- get_password_reset_key()
- wp_check_password()
- wp_generate_password()
- wp_get_password_hint()
- wp_set_password()
-
Безопасность сайта
- balanceTags()
- current_user_can()
- force_balance_tags()
- is_ssl()
- wp_create_nonce()
- wp_nonce_field()
- wp_nonce_url()
- wp_verify_nonce()