-2

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

$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);

此代码从数据库中获取盐,然后用它对输入的密码进行哈希处理,以便根据数据库检查密码。我遇到的问题是:

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

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

非常感谢你!

4

3 回答 3

3

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

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

于 2013-10-22T07:17:23.033 回答
2

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

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

$salt = $row['salt'];
于 2013-10-22T07:17:48.207 回答
0

你可以做这样的事情,简单地替换这个

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

$salt1 = $row['salt']; 

$hash = sha1($salt1 , $pass);  // encrypt
于 2013-10-22T07:21:29.643 回答