如何从wp_users中获取详细信息id不知道wordpress存储密码的格式

时间:2016-07-13 07:42:41

标签: php wordpress api

如何从wp_users中获取详细信息id不知道wordpress存储密码的格式

$user_login = $_REQUEST['user_login'];
$pwd = md5($_REQUEST['user_pass']);


$sql = "SELECT * from wp_users where user_login='$user_login' and user_pass='$pwd'";
            $sqlQuery = mysql_query($sql);
            $numrows = mysql_num_rows($sqlQuery);
            if($numrows > 0)
            {
                while($loginResult = mysql_fetch_assoc($sqlQuery)){


                    $loginId = $loginResult['user_login'];
                    $email = $loginResult['user_email'];

                    $respond = array("id"=>$loginId,"email"=>$email);

                }

                 echo '{"response": {"message":{"message":"Login Successfully"},"userInfo":'.json_encode($respond).'},"success":true}';

                }else{
                $message = array("message"=> "Invalid Credentials");
                echo '{"success":false,"message":'.json_encode($message).'}';

            }

所有这一次点击它并没有显示我无效的凭据因为密码我猜不匹配。请提供一个很好的解决方案。

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用wp_authenticate_username_password()

验证用户,确认用户名和密码有效

$userName = $_POST['user_login'];
$password = $_POST['user_pass'];
$check = wp_authenticate_username_password( NULL, $userName , $password );

然后您可以使用

简单地检查结果
if(is_wp_error( $check ))
{
  echo 'Wrong'; 
}
else
{
  echo 'Correct';
}

答案 1 :(得分:1)

一种方法是 -

Wordpress使用wp_hash_password()函数存储密码。

您可以在函数中传递用户密码,它将返回加密密码。

请记住,函数是用wp-includes / pluggable.php

编写的

另一种方式是 -

include '/wp-includes/class-phpass.php');
$hash = $user->user_pass;
$wp_hasher = new PasswordHash(8, TRUE);
$check = $wp_hasher->CheckPassword($password, $hash);

如果$ check为true,则匹配。

您无法生成相同哈希两次的原因是因为使用了盐。散列时保存密码会使散列更难以使用字典攻击进行破解。这就是为什么再次生成哈希并比较赢得的工作。哈希每次都不一样。 check函数接受散列(salt)和密码的一部分,并使用该盐重新计算散列,从而允许它正确检查。

希望有所帮助