将Mysqli_query转换为字符串以用于散列

时间:2013-10-22 07:15:04

标签: php hash mysqli

我有一个简单的登录脚本,这给我带来了一些麻烦。一旦验证了用户输入,就会运行这段代码:

$salt = mysqli_query($dbc, "SELECT salt FROM members WHERE Email='$email'");
$salt1 = $salt;//I'm not sure of the need for this line.
$hash = sha1($salt1 , $pass);

此代码从数据库中获取salt,然后使用它散列输入的密码,以便根据数据库检查密码。我遇到的问题是:

Warning: sha1() expects parameter 1 to be string, object given...

如何将查询转换为字符串。我知道我正在使用sha1,但这只是暂时的。我做的事情非常愚蠢;我最近才回到PHP,所以有谁知道该怎么做?

非常感谢!

3 个答案:

答案 0 :(得分:2)

请记住,由mysqli_query执行的SQL查询可能会在结果中返回多行。您可以通过调用mysqli_fetch_row或类似行来检索这些行的内容。

另外,请注意SQL注入。您当前正在执行的查询容易受到攻击。

答案 1 :(得分:1)

您需要从查询中获取结果,以便将其用作数组。

$query= mysqli_query($dbc, "SELECT salt FROM members WHERE Email='$email'"); 
$row= mysqli_fetch_array($query);

$salt = $row['salt'];

答案 2 :(得分:0)

你可以这样做,只需替换这个

$row= mysqli_fetch_array($salt); // fetch the array

$salt1 = $row['salt']; 

$hash = sha1($salt1 , $pass);  // encrypt