Проверьте, Что Ключ Для Сброса Пароля Не Работает
Я пытаюсь создать форму сброса passowrd. Вот моя функция:
<?php
$user_data = get_user_by( 'email', '[email protected]' ) );
$key = get_password_reset_key( $user_data );
$user_login = $user_data->user_login;
$message = esc_url( get_permalink( '1' ) . "?action=rp&key=$key&login=" . rawurlencode($user_login) ) . "\r\n";
wp_mail( $user_email, "Title", $message );
?>
Он отправляет ссылку на сброс на мою почту с $ключом и $логином. Все в порядке.
Теперь я должен проверить ключ сброса. Вот мой код:
<?php
$errors = new WP_Error();
$user = check_password_reset_key($_GET['key'], $_GET['login']);
if ( is_wp_error( $user ) ) {
if ( $user->get_error_code() === 'expired_key' )
echo "Key is expired";
else
echo "Key is not valid";
}
?>
Но он всегда говорит, что Ключ недействителен . Где что-то не так?
2
1 answers
Я это исправил. Нам нужно расшифровать URL с помощью esc_url_raw. Вот решение.
<?php
$user_data = get_user_by( 'email', '[email protected]' ) );
$key = get_password_reset_key( $user_data );
$user_login = $user_data->user_login;
$url = esc_url_raw( get_permalink( '1' ) . "?action=rp&key=$key&login=" . rawurlencode($user_login) ) . "\r\n";
$message = $url;
wp_mail( $user_email, "Title", $message );
?>
2
Author: bilimokur, 2018-02-28 11:29:12