password_verify一直返回false

时间:2016-07-04 18:21:12

标签: php hash

在网上搜索无效的答案后,我想我应该在这里问一下。我想在我的网站上哈希我的密码。我确认已经从我的数据库中正确地取出了散列密码,并且我输入的密码是正确的。但我的代码仍然无法正常工作。我尝试验证的密码是123,它的哈希应该是$ 2y $ 10 $ NebO.9vmHczwn

<?php
session_start();

include("connect.php");

$connection = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

//$myusername = stripslashes($myusername);
//$mypassword = stripslashes($mypassword);
//$myusername = mysql_real_escape_string($myusername);
//$mypassword = mysql_real_escape_string($mypassword);

$sql_user_info="SELECT * FROM $tbl_name WHERE username='$myusername'";
$result_user_info=mysql_query($sql_user_info);
$rows_user_info=mysql_fetch_array($result_user_info);
$hash=$rows_user_info['password'];

//echo $hash . " " . $myusername . " " . $mypassword;

if(password_verify($mypassword, $hash)){
$_SESSION["loggedin"] = true;
$_SESSION["username1"] = $myusername;
$id = "SELECT id FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$_SESSION["id"] = mysql_query($id);
mysql_close($connection);
header("location:login_success.php");
}
else {
if(isset($_SESSION['login']))
    unset($_SESSION['login']); 
mysql_close($connection);
header('location:http://akosh.space/loginfailed.php');
}
?>

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

感谢所有帮助我这么快的人。我几个小时都在尝试不同的事情。我发现我的数据库不喜欢60个字符的密码。在我更改了DB中密码的最大字符限制后,一切正常。