wp_check_password() WP 2.5.0

Порівнює рядки паролів: читальний пароль (звичайний) з кодованим паролем (як хеша). Потрібна для перевірки пароля користувача.

Параметр $hash закодований пароль (зберігається в базі даних), а параметр $password – звичайний текстовий пароль. Функція кодує переданий текстовий пароль і порівнює хеш, що вийшов, із зазначеним, якщо вони збігаються (кодовані за одним принципом) функція поверне true.

Підтримує зворотну сумісність зі старою версією протоколу автентифікації, який ще не використовує PHPass бібліотеку.

Це init .

Заміна функції (перевизначення) — у плагіні можна створити функцію з такою самою назвою, тоді вона замінить поточну функцію.

Працює на основі:
PasswordHash::CheckPassword()
1 раз – 0.002451 сек
(дуже повільно) | 50000 разів – 124.36 сек
(гальмо) |
PHP 7.1.2, WP 4.7.5

Хуки з функції

Повертає

true|false. true/false: false, якщо пароль не збігається з хеш.

Використання

wp_check_password($password, $hash, $user_id);
$password
(рядок) (обов’язковий)
Пароль як звичайного тексту.
$hash
(рядок) (обов’язковий)
Закодований пароль, з яким потрібно порівняти перший параметр.
$user_id
(число)
ID користувача, якому потрібно перезберегти хеш пароля відповідно до нового (останнього) алгоритму хешування. Перезбереження відбудеться лише якщо вказаний пароль пройде перевірку.


За замовчуванням:

Приклади

0

#1 Перевіримо пароль користувача

Допустимо у нас є пароль у вигляді звичайного тексту і нам потрібно дізнатися чи є пароль паролем користувача з ID 3:

$user = get_userdata(3);
if($user) {
	$password = 'moy-super-parol';
	$hash = $user->data->user_pass;
	if (wp_check_password($password, $hash))
	   echo "Це пароль користувача";
	else
	   echo "Це не його пароль";
}

нотатки

  • Global. PasswordHash. $wp_hasher PHPass object used для checking the password against the $hash + $password

список змін

З версії 2.5.0Введено.

Код wp_check_password() WP 6.0.2

function wp_check_password( $password, $hash, $user_id = '' ) {
	global $wp_hasher;

	// If the hash is still md5...
	if ( strlen ( $ hash ) <= 32 ) {
		$check = hash_equals( $hash, md5( $password ) );
		if ( $check && $user_id ) {
			// Rehash using new hash.
			wp_set_password($password, $user_id);
			$ hash = wp_hash_password ($ password);
		}

		/**
		 * Filters whether the plaintext password matches the encrypted password.
		 *
		 * @ Since 2.5.0
		 *
		 * @param bool $check Whether the passwords match.
		 * @param string $password The plaintext password.
		 * @param string $hash Hashed password.
		 * @param string|int $user_id User ID. Can be empty.
		 */
		return apply_filters( 'check_password', $check, $password, $hash, $user_id );
	}

	// If the stored hash is longer than an MD5,
	// presume the new style phpass portable hash.
	if ( empty( $wp_hasher ) ) {
		require_once ABSPATH. WPINC. '/class-phpass.php';
		// By default, use the portable hash from phpass.
		$wp_hasher = New PasswordHash(8, true);
	}

	$check = $wp_hasher->CheckPassword($password, $hash);

	/** Цей filter is documented в wp-includes/pluggable.php */
	return apply_filters( 'check_password', $check, $password, $hash, $user_id );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *