wordpress CheckPassword and Warning: substr()



我仍然是wordpress的新手,我只是想检查密码(我确定我在某处错过了一些东西,但我感到迷茫,无法集中注意力(:

$user = $_POST['user_name'];
$pass = $_POST['user_password'];
$wp_hasher = new PasswordHash(8, TRUE);
$result=$wpdb->get_results("SELECT * FROM Materials WHERE mtrname= '$user' ");
if($result){
$pwd=$wpdb->get_results("SELECT password FROM Materials WHERE mtrname= '$user' ");
if($wp_hasher->CheckPassword($pass, $pwd)) {
echo "YES, Matched";
} else {
echo "No, Wrong Password";
}
}

它总是显示

否,密码错误

警告:substr(( 期望参数 1 是字符串,数组在/var/www/html/wp-include/class-phpass.php 在第 124 行

我知道密码查核功能必须只接收字符串,我正在给数组,请帮忙吗?

$pwd

是一个数组,它应该是一个字符串。 将get_results更改为get_row

$pwd=$wpdb->get_results("SELECT password FROM Materials WHERE mtrname= '$user' ");

成为

$pwdQuery=$wpdb->get_row("SELECT password FROM Materials WHERE mtrname= '$user' ");
$pwd = $pwdQuery->password;

如果要检查特定用户的密码,则可以使用Wordpress默认功能进行检查

请检查下面的代码

$email = $_POST['email'];
$password = $_POST['password'];
//Here i retrieve the user information through email you can also retrieve user information through **username**
$user = get_user_by('email', $email);
$ID = $user->ID;
$user_login = $user->data->user_login;
$user_pass = $user->data->user_pass;
if(!wp_check_password($password, $user_pass, $ID)){ 
//bad password
}else{
//Correct information
}

最新更新