【问题标题】:wordpress CheckPassword and Warning: substr()wordpress CheckPassword 和警告:substr()
【发布时间】:2019-01-28 14:08:05
【问题描述】:

我还是 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-includes/class-phpass.php 在第 124 行

我知道 CheckPassword 函数必须只接收 String 并且我正在提供 Array,请帮忙?

【问题讨论】:

    标签: php sql wordpress hash


    【解决方案1】:

    $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;
    

    【讨论】:

    • 像这样,我不再收到警告消息,但它仍然显示“不,密码错误”,我认为因为 $_POST['user_password'] 已经是一个数组了
    • 你可以var_dump($_POST['user_password'])查看它的类型。或者,您可以在原始问题中添加要提交的 HTML 表单。
    • get_row 不起作用它显示此错误:致命错误:未捕获的错误:无法在 /var/www/html/wp-content/plugins/insert-php- 中使用 stdClass 类型的对象作为数组代码-sn-p/widget.php(64)
    • 我将答案$pwdQuery['password'] 编辑为$pwdQuery->password。试一试。
    【解决方案2】:

    如果你想检查特定用户的密码,那么你可以使用 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
    }
    

    【讨论】:

    • 谢谢,但我在数据库中使用自定义表,所以我不认为 $user->data->... 在这种情况下可以工作:/
    猜你喜欢
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多