我现在正在努力弄清楚如何使用 SHA1 + PDO + Prepared Statement 组合并且仍然能够登录到网页:) 所以我的问题是如何做到这一点?这是我的代码:
if (!empty($user) && !empty($password))
{
$password = $this->doHash($user, $password);
$stmt = $db_login->prepare("SELECT COUNT(*) FROM account WHERE username=:user AND sha_pass=:password");
$stmt->bindValue(':user', $user, PDO::PARAM_STR);
$stmt->bindValue(':password', $password, PDO::PARAM_STR);
$stmt->execute();
$results_login = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($results_login['COUNT(*)'] > 0)
{
$_SESSION['user_name'] = $results_login['username'];
$_SESSION['user_id'] = $results_login['id'];
return true;
}
else
{
return false;
}
}
else
{
return false;
}
我的函数 doHash 如下所示:
public function doHash($user, $password)
{
return sha1(strtoupper($user).":".strtoupper($password));
}
所以我的问题是:$results_login***
从不处理SELECT COUNT(*)
版本,SELECT *
有时处理版本,但并非总是如此。那么我如何将它组合在一起以按预期工作,结果为真,并填充我需要的所有变量?谢谢你。