私は今、SHA1 + PDO + 準備済みステートメントの組み合わせを使用できるようにし、それでも Web ページにログインできるようにする方法を理解するために何時間も戦っています:)だから私の質問はそうする方法ですか? これが私のコードです:
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 *
バージョンでは処理されることがありますが、常に処理されるわけではありません。では、意図したとおりに動作し、結果が true になり、必要なすべての変数を埋めるにはどうすればよいでしょうか? ありがとうございました。