ユーザー名が無効であるか、パスワードが間違っているかに関係なく、同じ出力を返す次のクエリを検討してください (ほんの一例です。SQL インジェクションについて知っています)。
CREATE TABLE users (
username VARCHAR(64),
password CHAR(40)
);
SELECT FROM users
WHERE username = '{$username}'
AND password = sha1('{$password}');
ソルト フィールドを追加したいのですが、それを取得してアプリケーションで連結するのではなく、MySQL がエンジンで連結することをお勧めします。
CREATE TABLE users (
username VARCHAR(64),
salt VARCHAR(128),
password CHAR(40)
);
SELECT FROM users
WHERE username = '{$username}'
AND password = sha1(CONCAT(<salt_field>, '{$password}'));
何と交換<salt_field>
しますか?