我正在构建一个外部应用程序,用户登录凭据将从WordPress站点数据库表'users'中获取
WordPress使用PHPass哈希,我无法验证外部应用程序的用户名和密码,因为数据库表'users'
中的密码已经过哈希
我正在尝试使用wp_check_password
函数检查带有散列密码的普通密码,但是我失败了,没有用此代码写回任何内容
<?php
$password = '965521425';
$hash = '$P$9jWFhEPMfI.KPByiNO9IyUzSTG7EZK0';
require_once('/home/nhtsoft/public_html/project/wp-includes/class-phpass.php');
function wp_check_password($password, $hash) {
global $wp_hasher;
if ( empty($wp_hasher) ) {
$wp_hasher = new PasswordHash(8, true);
}
$check = $wp_hasher->CheckPassword($password, $hash);
return apply_filters('check_password', $check, $password, $hash);
}
?>
这段代码给了我一个空页。
如何检查此密码以便我可以使用这些WordPress凭据进行外部应用程序登录?
答案 0 :(得分:3)
你传递了错误的哈希值,965521425的哈希值是$ P $ BmI5G.LOoEx1iH.naNqVhWnSh5sMp31,你只需要将下面的代码写入你的文件:
require_once($_SERVER['DOCUMENT_ROOT']."/wp-load.php");
$password = '965521425';
$hash = '$P$BmI5G.LOoEx1iH.naNqVhWnSh5sMp31';
var_dump(wp_check_password($password, $hash));
exit;
答案 1 :(得分:1)
我只需执行此操作<?php wp_check_password( $password, $hash, $user_id ) ?>
Refer
答案 2 :(得分:1)
在您的代码中,您包含了wp库,看起来您重新定义了一个名为wp_check_password
的函数,但您根本不调用任何函数。在结束php标记(“?&gt;”)之前添加以下行,然后重试。
echo (wp_check_password($password, $hash) ? 'TRUE' : 'FALSE');
如果您错过了某些依赖项,请密切关注错误日志。
答案 3 :(得分:0)
$password_hashed = '$P$Bgf2Hpr5pOVOYAvQZUhUZeLIi/QuPr1';
$plain_password = '123456';
if ((wp_check_password($plain_password, $password_hashed)) == 1) {
echo "YES, Matched";
} else {
echo "No, Wrong Password";
}
答案 4 :(得分:0)
试试这个......
我的工作对我很好
require_once( ABSPATH . WPINC . '/class-phpass.php');
$wp_hasher = new PasswordHash(8, TRUE);
$plain_password = trim($_POST['pass_current']); //user type password
$user = get_user_by('id', get_current_user_id());
$password_hashed = $user->user_pass;
if($wp_hasher->CheckPassword($plain_password, $password_hashed)) {
echo "YES, Matched";
}else{
echo "No, Wrong Password";
}
答案 5 :(得分:0)
Bhumi Shah所写的是正确的,你应该添加
require_once($_SERVER['DOCUMENT_ROOT']."/wp-load.php");
代码。
但是任何密码(数字或文本)的散列值都不是一件可靠的事情,它可能是很多事情,这就是为什么它们只能与wp_check_password进行比较