По причинам, в которые я не могу сейчас вдаваться, я создаю форму, которая позволит пользователям изменять свои пароли для WordPress, введя свой текущий пароль, а затем введя новый пароль.
Я хочу выполнить поиск в базе данных, чтобы убедиться, что введенный ими пароль был правильным, уже сохраненным в БД. Однако в WP пароли каким-то образом зашифрованы, поэтому простое сравнение SQL в этом столбце не сработает. Я пытался использовать md5()
пароль для поиска, но он тоже не работает.
Вот мой sql:SELECT ID, user_pass FROM wp_users WHERE ID = '$current_user->ID' AND user_pass = 'md5($currentpassword)' LIMIT 1
Вы можете игнорировать большую часть этого, но мне нужно знать, как я могу выполнить сравнение со столбцом user_pass?
Я протестировал этот метод выше, и он возвращает 0 строк — с или безmd5()
Пожалуйста помоги!
Очень признателен.
Майкл.
WordPress имеет встроенную функцию wp_hash_password, которая хеширует заданный пароль, а затем вы можете сравнить его в БД.
Привет, спасибо за ваш быстрый ответ. Я попытался использовать вышеуказанную функцию вместо функции MD5(), но все равно без радости. Хм. Любые дальнейшие идеи? У вас есть скрипт, который вы знаете, который работает? Спасибо еще раз.
Вы не можете вызывать wp_hash_password из MySQL. Вы должны вызвать его на PHP в соответствии с приведенным примером @Anthony. Если вы опубликуете полный код, кто-то сможет вам помочь.
@Ciaran Я запускаю этот SQL в шаблоне PHP WordPress. Просто используя стандартный запрос PHP, где я проверяю количество возвращаемых строк. Я не выполняю этот SQL в самой базе данных или где-либо еще за пределами PHP/WordPress.