0
私のコードでifステートメントを使用して、ユーザーが属するユーザーグループを確認し、ユーザーごとに異なる機能を呼び出すようにします。次のように私の現在のコードは次のとおりです。私のレコードが1または2のいずれかであるが、検証が動作していない値が含まれているそうであるようにSQLite3レコードの検証
c.execute('SELECT * from users WHERE username=? AND password =?',
(username_input, password_input))
if c.fetchone() is not None:
c.execute('SELECT usergroup from users WHERE username=? AND password=?',
(username_input, password_input))
user_group = c.fetchone()
for (usergroup,) in c:
if user_group == 1:
App.admin_login_successful(self)
elif user_group == 2:
App.user_login_successful(self)
else:
App.user_login_successful(self)
# This shouldn't happen, as all records should theoretically contain a value for usergroup.
私は、比較の仕事をするために何をすべき。
あなたは 'Cで(ユーザーグループ)のための' 'の前に印刷(USER_GROUP)から何を得るのですか:'?私はあなたの 'for'ループでなぜタプルを作っているのか分かりません。 – roganjosh
私は(usergroup)のために、SQLインジェクションを防ぐためにここに別のユーザの推薦をc:offしましたが、彼の答えは非常に明確ではありませんでした。私が印刷したときに( '2'、) –
データベースから何かを取得しているので、SQLインジェクションが行われていれば既に起こっていたはずです。私はその勧告が意味をなさないか、それが文脈から取り除かれたかどうかはわかりません。 'for'ループを取り除きます(' fetchone() 'を使って1つの結果しか得られないようにします)' if'/'elif'チェックを' if int(user_group [0])== 1: 'などに変更します。 – roganjosh