@PashaLynx
Страшный дилетант

Sqlite — как сделать запрос поиска 'строгим'?

Здравствуйте. Пишу маленькое приложение, в которой будет авторизация. Логика авторизации проста, видно из кода:
import sqlite3
"""
0 - пароль и логин не совпадают
1 - admin
2 - user
"""
conn = sqlite3.connect('manager.db')
c = conn.cursor()
x = c.execute('''SELECT name FROM users
            WHERE login =?''', (a,))
y = c.execute('''SELECT name FROM users
            WHERE pas =?''', (b,))
if x == y:
    c = c.execute('''SELECT role FROM users
            WHERE login =?''', (a,))
    c = str(c.fetchall())
    if c == "[('admin',)]":
        print(1)
    else:
        print(2)
else:
    print(0)


И вот в чем проблема - предположим, что пароль у некоторого пользователя - qwerty. Если мы введем qwer, то наш запрос пройдет положительно, и пользователь войдет в систему. Можно ли это как-то исправить?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
@PashaLynx Автор вопроса
Страшный дилетант
Кароче, разобрался сам.
import sqlite3
a = 'leha'
b = '1234'
"""
0 - пароль и логин не совпадают
1 - admin
2 - user
"""
conn = sqlite3.connect('manager.db')
c = conn.cursor()
x = c.execute('''SELECT name FROM users
            WHERE login =?''', (a,))
x = str(x.fetchall())

y = c.execute('''SELECT name FROM users
            WHERE pas =?''', (b,))
y = str(y.fetchall())
if x != y:
    print(0)

else:
    c = c.execute('''SELECT role FROM users
                WHERE login =?''', (a,))
    c = str(c.fetchall())
    if c == "[('admin',)]":
        print(1)
    else:
        print(2)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы