-1
经过几个小时搜索互联网寻找答案无济于事,我想我应该问这里。我试图在我的网站上密码我的密码。我验证了哈希密码是正确地从我的数据库中取出的,并且我输入的密码是正确的。但是我的代码仍然无法工作。我想要验证的密码是123,它的哈希值应该是$ 2Y $ 10 $ NebO.9vmHczwnpassword_verify不断返回false
<?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');
}
?>
什么我错在这里做什么?
'var_dump($ mypassword,$ hash)' –
你很容易受到[sql注入攻击](http://bobby-tables.com)的影响,并且简单地假设查询成功。做了任何基本的调试,比如'var_dump($ rows_user_info)'来查看数据库中出现了什么,如果有的话? –
你如何哈希你的密码?又是什么样的散列? '$ 2y $ 10 $ NebO.9vmHczwn' 2y通常意味着它是一个bcrypt哈希,但它不够长。 – JimL