Intereting Posts
Какова добавленная «сложность» пользовательских таблиц? Плагин для автоматического форматирования сообщения после отправки MySQL выбирает запрос с помощью ajax Импорт сообщений в пользовательский тип сообщения на новый веб-сайт Измените имя параметра в Настройщике и сохраните данные Цель h1 на одной странице страницы Фильтрация всех сообщений и липких сообщений через meta_query плагин для потоковой передачи звука, но без опции сохранения? Как организовать настраиваемые категории для фильтрации и выбора Различные заголовки категорий, использующие in_category и elseif Как скрыть учетную запись администратора в BuddyPress? (по соображениям безопасности) Установите ограничение на загрузку мультимедиа? Как проверить, истинна ли отладка, и могу ли я использовать ее для собственного кода? Как фильтровать пользовательские типы сообщений с помощью таксономии пользовательских категорий Проблема с добавлением пользовательского CSS-класса к изображению в плагине фотогалереи ACF

Как проверить пароль сгенерированный WordPress в БД с помощью PHP?

Я работаю с сайтом, который выполняется с помощью WordPress, и мне нужно добавить некоторые части, которые находятся за пределами WP, и проверить вход пользователя в систему, регистрировать пользователей вне WP.

Я пытался с md5 пароля, но это не …

Я пробовал этот код:

require_once( 'wp-includes/class-phpass.php' ); $wp_hasher = new PasswordHash( 8, TRUE ); $password = "passwordhere"; $hashed_password = $wp_hasher->HashPassword( $password ); $encryptedpass = md5($hashed_password); 

Но это только в первый раз, создавая пароль, и это всегда по-другому.

Мне нужен код, который можно использовать в этом:

 SELECT * FROM wp_customers WHERE email = "ccc@aaa.com" AND password = "<what goes here?>" 

Возможно ли это так или иначе?

Благодарю.

Solutions Collecting From Web of "Как проверить пароль сгенерированный WordPress в БД с помощью PHP?"

На основе вашего другого вопроса … похоже, вы пытаетесь проверить данный пароль открытого текста на том, что хранится в базе данных. Вот что использует функция WordPress для этого:

 function wp_check_password($password, $hash, $user_id = '') { global $wp_hasher; // If the hash is still md5... if ( strlen($hash) <= 32 ) { $check = ( $hash == md5($password) ); if ( $check && $user_id ) { // Rehash using new hash. wp_set_password($password, $user_id); $hash = wp_hash_password($password); } 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 . 'wp-includes/class-phpass.php'); // By default, use the portable hash from phpass $wp_hasher = new PasswordHash(8, TRUE); } $check = $wp_hasher->CheckPassword($password, $hash); return apply_filters('check_password', $check, $password, $hash, $user_id); } 

Во-первых, этот плагин проверяет, не является ли хеш MD5 данного пароля таким же, как сохраненный (хэшированный) пароль для пользователя. Он также проверяет, совпадает ли хэш хэша PHPass данного пароля с сохраненным паролем для пользователя.

Вы можете следовать аналогичной схеме.

Предположим, вам дали имя пользователя и пароль от пользователя, и вы хотите их проверить ( my_password_validation( $username, $password ) ). Вы будете использовать указанное имя пользователя, чтобы вывести хешированный пароль из базы данных. Затем вы сравниваете хэш заданного пароля с сохраненным значением, чтобы узнать, действительно ли оно.

Вот несколько непроверенных psuedocode :

 function my_password_validation( $username, $password ) { // Select the users's password hash from the database $stored = query( 'SELECT * FROM wp_customers WHERE email = ' . $username ); require_one( 'class-phpass.php' ); $hasher = new PasswordHash(8, TRUE); return $hasher->CheckPassword( $password, $stored ); } 

Если пароль, который вы передаете хэшам функций, совпадает с сохраненным значением, функция вернет true. В противном случае он вернет false.

Глядя на комментарии , оставленные вами по другому вопросу, похоже, что у вас есть другие проблемы. Цитировать:

Поэтому я получаю:

$P$BqVYujC/jqNY4aylZpHi475jwcaSUs1 Но как я могу сравнить это с одним в БД?

Один в БД:

fa063a4ed35e092a2d4e15c1b6a61871 Как сравнить эти два с MySQL?

Я могу сказать вам прямо сейчас, что пароль, который вы получаете из базы данных, не был хэширован с использованием утилиты PHPass. Эти хэши всегда будут напоминать $P$B потому что это то, что сообщает системе, как она была хэширована. PHPass основан на Blowfish, который использует этот вид префикса для зашифрованных строк.

Ваш хеш fa063... больше похож на стандартный хеш MD5 … поэтому, если ваш хеш MD5 открытого текста не совпадает, тогда я думаю, что у вас может быть неправильный пароль.

Чтобы ответить на вопрос «Как мне сравнить эти два вопроса с MySQL» … вы этого не сделаете. MySQL – это хранилище данных … не делайте никакой бизнес-логики или сравнения в хранилище данных. Прочитайте данные, затем используйте скрипт PHP для сравнения.

Это очень легко..

 <?php include_once($_SERVER['DOCUMENT_ROOT'].'/wp-includes/class-phpass.php' ); // prepare database connection $ip_address="localhost"; $user_db="userdb"; $pass_db="passdb"; $conn= mysql_connect($ip_address,$user_db,$pass_db); mysql_select_db("dbname",$conn); if (!$conn){ echo "Could not connect: " . mysql_error(); exit(); } // wordpress' username that his password going to compare $user = 'test'; $user_name = htmlspecialchars($user,ENT_QUOTES); // plain password to compare $password = 'tespass'; $hasher = new PasswordHash(8, TRUE); // get user_name's hashed password from wordpress database $queryx = "select * from wa1gty5f_users where user_login='$user_name'"; $Resultx = mysql_query($queryx,$conn); while($row = mysql_fetch_array($Resultx)){ $passnya = $row[user_pass]; } // compare plain password with hashed password if ($hasher->CheckPassword( $password, $passnya )){ echo "MATCHED"; } else { echo "NO MATCHED"; } ?> 

У меня была эта проблема и я узнал прямо на wp_hash_password()

Сравните уже хэшированный пароль с его строкой открытого текста

 <?php $wp_hasher = new PasswordHash(8, TRUE); $password_hashed = '$P$B55D6LjfHDkINU5wF.v2BuuzO0/XPk/'; $plain_password = 'test'; if($wp_hasher->CheckPassword($plain_password, $password_hashed)) { echo "YES, Matched"; } else { echo "No, Wrong Password"; } ?> 

Это около 6 лет назад, но все же актуально. Для справки, взгляните на:

  • wp_hash_password () в wp-includes / pluggable.php
  • Переносимая хеширование PHP-паролей
  • Какой тип хэша использует WordPress для паролей