如何从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).'}';
}
所有这一次点击它并没有显示我无效的凭据因为密码我猜不匹配。请提供一个很好的解决方案。
提前致谢
答案 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)和密码的一部分,并使用该盐重新计算散列,从而允许它正确检查。
希望有所帮助