Как сделать регистрацию+вход на пайтон?
Здравствуйте!
Суть вопроса, я хочу сделать регистрацию и вход с помощью Пайтон
Допустим если я выберу регестрацию то введу свой логин и пароль и он сохраниться в txt файле
а если вход то тоже пишу логин и пароль и при вводе должны найтись данные из файла и если есть такой логин и пароль то код должен пойти дальше а если нету то вывестись (Вас нету в списке для входа) типа такого буду всем очень благодарен
небольшой тип примера
print(‘Для входа в систему напишите Вход для регестрации Регестрация!’)
vv=input(‘Вход/Регестрация: ‘)
if vv==(‘Вход’) or vv==(‘вход’):
vh=input(‘Введи логин и пароль: ‘)
elif vv==(‘Регестрация’) or vv==(‘регестрация’):
reg=input(‘Придумай логин и пароль тип ввода(логин/пароль): ‘)
- Вопрос задан более года назад
- 4644 просмотра
1 комментарий
Простой 1 комментарий
Я сейчас уже не могу ответить, напишу пример завтра, но для проверки ввода можно писать:
vv.lower() == ‘вход’
Так же для воода есть библиотеки, которые сопоставляют слова даже с ошибками, но я не подскажу)))
А скобки убери вообще, это нехорошо(PEP-8 нарушает _ нечитаемо). И пробелы добавь везде:
if vv.lower() == ‘вход’:
Решения вопроса 0
Ответы на вопрос 1
C#, C++, JS, Python
Вот вам пример авторизации, максимально постарался прокоментировать и солюдать PEP-8.
Еще у вас очень непонятные названия переменных, я так и не понял почему vv и vh.
Надеюсь, будет полезно)
# Тут импорт всех муодулей: хэширование, модуль для работы с файлами на компьюетере(в init_file используется) import hashlib import os """ Объясняю: login: str требует, чтобы в функцию передалась только строка. -> bool говорит о том, что функция возвращает значение типа bool. Комментарий под функцией добавляет ее описание в подсказки(в pycharm точно добавляеь), да и просто так легче понимать. Хэширование надо для того, чтобы никто не смог зайти в файл и узнать все пароли, это как бонус к этому примеру. """ def init_file(): # Инициализация файла, если этого не сделать програма вылетит м ошибкой, что файла нет """Создает файл пользователей""" if not os.path.exists('users.txt'): with open('users.txt', 'w'): pass def add_user(login: str, password: str) -> bool: """Добавляет пользователя в файл""" with open('users.txt', 'r') as f: users = f.read().splitlines() # Считываем всех пользователей из файла for user in users: args = user.split(':') if login == args[0]: # Если логин уже есть, парль не проверяем, шанс взлома увеличится(кто-то мб узнает пароль) return False # Тут можно написать что угодно, будь то HTML статус(409 - conflict), либо просто фразу ошибки with open('users.txt', 'a') as f: f.write(f':\n') # Добавляем нового пользователя return True def get_user(login: str, password: str) -> bool: """Проверяет логин и пароль пользователя""" with open('users.txt', 'r') as f: users = f.read().splitlines() # Считываем всех пользователей из файла for user in users: args = user.split(':') if login == args[0] and password == args[1]: # Если пользователь с таким логином и паролем существует return True return False def main_loop(login: str): """Главный цикл программы""" print(f'Привет, !') # Тут основная часть программы init_file() while True: print('''Добро пожаловать! Выберите пункт меню: 1. Вход 2. Регистрация 3. Выход''') user_input = input() if user_input == '1': # Условия можно заменить на: user_input.lower() == 'вход' print('Введите логин:') login = input() print('Введите пароль:') password = input() result = get_user(login, hashlib.sha256(password.encode()).hexdigest()) if result: print('Вы вошли в систему') break # Выходим из цикла else: print('Неверный логин или пароль') elif user_input == '2': print('Введите логин:') login = input() print('Введите пароль:') password = input() print('Повторите пароль:') password_repeat = input() if password != password_repeat: print('Пароли не совпадают!') continue result = add_user(login, hashlib.sha256( password.encode()).hexdigest()) # Вызываем функцию добавления пользователя. И хешируем пароль(безопасность) if not result: print('Пользователь с таким логином уже существует') else: print('Регистрация прошла успешно!') elif user_input == '3': print('Завершение работы') break # Выходим из цикла
Python-сообщество
- Начало
- » Базы данных
- » преобразование кода для sqlite в mysql
#1 Июнь 16, 2016 11:04:51
Popov Зарегистрирован: 2016-06-14 Сообщения: 6 Репутация: 0 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
Напишу в подробности что нужно:
Мне нужно что бы проводился запрос на наличие совпадения в таблице пары (логин и пароль) если совпадения нет то выводил сообщение что пользователь не найден.
Нашел в youtube урок как это сделать, но вместо mysql там sqllite, в sqlite все работает.
там идет запрос
("SELECT * FROM USERS WHERE USERNAME = ? AND PASSWORD = ?",(username,password))
и проверка результата
(len(result.fetchall()) > 0):
так как Mysql нужно немного изменить логику, во всех доках пишут что нужно использовать query.next(), а как сделать не как понять не могу
мне нужно сделать так что бы запрос повторялся пока запись в таблице не кончиться или пока пара не будет найдена.
У кого есть опыт с mysql и QtSql помогите плиз
#2 Июнь 16, 2016 11:33:44
ZerG Зарегистрирован: 2012-04-05 Сообщения: 2350 Репутация: 64 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
Я понял. Так мы застрянем на долго!
У вас какая то хромоножка
Подозреваю что все поля username уникальны,
тогда все что вам нужно это
# -*- coding: utf-8 -*- import MySQLdb db = MySQLdb.connect(host="localhost", # your host, usually localhost user="john", # your username passwd="megajonhy", # your password db="jonhydb") # name of the data base cur = db.cursor() user = 'some_username' query = "SELECT username, password FROM USERS WHERE USERNAME = '<>'".format(user) # Use all the SQL you like cur.execute(query) result = cur.fetchone() print result cur.close()
таким образом получаете пару логин пароль и сравниваете уже где и как вам нужно.
Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
#3 Июнь 17, 2016 03:46:58
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9629 Репутация: 839 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
Popov
Помогите сделать цикл на подобии этого if(len(query.fetchall()) > 0):
Сделай отдельный тестовый скрипт и тестовую таблицу в базе данных. Потренируйся на них без всяких окон, просто в консоль выводи данные.
#4 Июнь 17, 2016 08:09:05
ZerG Зарегистрирован: 2012-04-05 Сообщения: 2350 Репутация: 64 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
Угу. Скрипт для теста постом выше.
py.user.next — все правильно вам советует!
Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
#5 Июнь 17, 2016 11:45:13
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9629 Репутация: 839 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
ZerG
Угу. Скрипт для теста постом выше.
Не, я имел в виду, что через Qt надо делать. Если у него программа на Qt, то и средства должны Qt’шные использоваться. Это касается всего — дат, потоков, баз данных. Там даже time.sleep() не сможешь использовать, потому что она просто не работает там.
#6 Июнь 17, 2016 11:56:47
ZerG Зарегистрирован: 2012-04-05 Сообщения: 2350 Репутация: 64 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
Сделай отдельный тестовый скрипт и тестовую таблицу в базе данных. Потренируйся на них без всяких окон, просто в консоль выводи данные.
Я имел в виду пусть это сделает вобще в принцыпе без кутей ит так далее.
Что бы понять принцып и логику! Человек с базами вобще понятия ж не имеет а сразу пробует обработку в коде поменять.
Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
#7 Июнь 17, 2016 12:07:36
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9629 Репутация: 839 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
ZerG
Я имел в виду пусть это сделает вобще в принцыпе без кутей ит так далее.
Надо сделать с Qt, сам-то с Qt не смог пример сделать что ли?
Возьми документацию цппшную, там уже готовый пример есть, его только на питон надо перевести.
С базами-то никаких особых команд тут нет у него (кавычки забыл — ерунда).
Просто этот драйвер MySQLdb во-первых, не единственный, их много разных, а во-вторых, действия с ним сильно отличаются от действий с Qt’шным объектом. Смысл ему проходить их, если они ему не пригодятся?
Отредактировано py.user.next (Июнь 17, 2016 12:11:10)
#8 Июнь 17, 2016 12:09:46
ZerG Зарегистрирован: 2012-04-05 Сообщения: 2350 Репутация: 64 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
У него проблема не с куте а с пониманием БД. Он не понимает что и как делается в его коде с базой.
Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
#9 Июнь 17, 2016 12:11:54
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9629 Репутация: 839 Профиль Отправить e-mail
преобразование кода для sqlite в mysql
ZerG
Он не понимает что и как делается в его коде с базой.
Это ты с чего взял? Что-то нигде не вижу, что он не знает, как select сделать.
Смотри, он даже вопросики поставил, про которые ты не знаешь. 😉
Вот ты написал
user = 'some_username' query = "SELECT username, password FROM USERS WHERE USERNAME = '<>'".format(user) # Use all the SQL you like cur.execute(query)
Так же нельзя делать.
Отредактировано py.user.next (Июнь 17, 2016 12:14:44)
Как проверить, совпадает ли пользовательский ввод со словами в .txt файле
Проблема в том, что можно ввести слова login и password , проверка будет пройдена и пользователь войдёт в систему. Это нужно для работы в консоли и не будет использовано где-то на сайте. Прошу по возможности подсказать максимально простое решени — я новичок в python’e.
Отслеживать
20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак
задан 24 ноя 2019 в 15:28
13 3 3 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
все дело в том, что вы неправильно храните данные в текстовом файле, делать это лучше словарем:
тогда при счете файла вы получите такую конструкцию:
преобразуем в словарь:
x = ast.literal_eval(x)
теперь можно спокойно искать наш логин\пароль в логинах\паролях полученного словаря словарей:
for dict in x: if input_login and input_password in dict.items(): print('nice') break
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
ответ дан 24 ноя 2019 в 16:27
2,396 11 11 серебряных знаков 32 32 бронзовых знака
Что значит «неправильно»? Хранение просто в текстовом файле с разделением полей определенным символом — один из возможных вариантов хранения данных. Тем более что тут не нужно хранить какую-то сложную иерархическую структуру. Если говорить про неправильность — то неправильно хранить пароль в открытом виде.
4 дек 2019 в 11:14
Вот тут у вас с кавычками проблема: x = ‘<<'login' : 'admin', 'password' : 'admin'>, . >’ . И dict из такой строки просто вызвав x = dict(x) не получится сделать (тем более что это не словарь, а сет из словарей). Нужно либо ast.literal_eval() использовать, или хранить в json вместо dict, и декодировать с помощью json.loads .
4 дек 2019 в 11:15
@insolor действительно, со словарем ошибся, я естественно имел в виду ast.literal_eval(), сейчас исправлю, а по поводу хранения, это лишние заморочки, если так хочется делить поля — csv в помощь
4 дек 2019 в 15:20
Просто разбор данных, как они представлены в вопросе
def load_logins(): logins = dict() with open('logins.txt') as logins_file: for line in logins_file: line = line.strip() # Проверяем, что строка не пустая if line: # Сначала разбиваем на части по точке с запятой login, password = line.split(';') # Потом каждую часть разбиваем по двоеточию и берем правую часть # (левую не учитываем, считаем что в строке всегда сначала логин, потом пароль) login = login.split(':')[1] password = password.split(':')[1] # Добавляем пару логин-пароль в словарь logins[login] = password return logins login = input("login: ") password = input("password: ") logins = load_logins() if login in logins and logins[login] == password: print("Вы успешно вошли в систему.") else: print("Неверный логин или пароль.")
Отслеживать
ответ дан 4 дек 2019 в 11:42
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
- python
- python-3.x
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Проверка логина и пароля
Имеется программа которая добавляет логин и пароль человека в файл под названием out.txt, теперь требуется программу »Проверка логина и пароля», которая совершает проверку логина и пароля, если проверка логин-пароль пройдена успешно, то вывести »Вход выполнен успешно», если нет то »Не удаётся войти, если вы ещё не зарегистрировались. » нужно нажать какую то клавишу(по вашему желанию) и сделать, так чтобы эта программа закрылась, а программа, которая мной уже написана reg.py, открылась.
Вот код reg.py:
1 2 3
file = open('out.txt', 'w') file.write(input('Введите логин: ') + ' ' + input('Введите пароль: ')+'\n') file.close()
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Проверка логина и пароля
import time logins = passwords = a = 1 while a <= 3: print(‘Введите логин.’) l =.
Проверка пароля
Генерируется пароль и заносится в массив, где будут храниться использованные пароли. Нужно.
Проверка пароля
Как сделать так что бы при введении правильного пароля вылезала надпись, а при неправильном другая.
Проверка пароля
Здравствуйте, не могу разобраться в чём ошибка моего кода, благодарен за Вашу помощь. Задача.
954 / 340 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
Так ваша программа вносит только один логин и пароль в файл. Вам и надо проверить только один логин пароль или в файле их может быть несколько?
Просто Лис
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Теперь открывайте файл и читайте его:
1 2 3
with open('out.txt', 'r') as f: text = f.read() print(text)
Добавлено через 36 секунд
Damenikx, несколько. У человека в коде ошибка. Должно быть так:
file = open('out.txt', 'a')
954 / 340 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
Рыжий Лис, вот я про это и спрашиваю вот сделал ему для одного, он же не уточняет — ошибка это или нет.
Добавлено через 7 минут
1 2 3 4 5 6 7 8
with open('out.txt', 'r') as f: full_txt = f.read() enLog = input('Login: ') enPass = input('Password: ') if enLog and enPass in full_txt: print('True') else: print('Not true')
Просто Лис
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Сообщение от Damenikx
Всегда вернёт True, при любом логине
Добавлено через 17 секунд
Надо построчно сравнивать.
954 / 340 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
Сообщение от Рыжий Лис
Всегда вернёт True, при любом логине
эм, нет же.
Login: asdasd
Password: vcxvx
Not true
2679 / 1585 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1
1 2 3 4 5 6 7 8 9 10 11
# -*- coding: utf-8 -*- login, password = "i, "very_big-pinus" # Регистрация with open("out.txt", "at") as file: file.write(f" \n") # Проверка with open("out.txt", "rt") as file: print("GOOD" if f" " in file.read() else "BAD")
954 / 340 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
DmFat, хорошие у тебя логины с паролями и конкурсы интересные
2679 / 1585 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1
Damenikx, Создай в файле несколько юзеров с пассами, а потом введи юзера_1, а пароль от юзера_2.
954 / 340 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
DmFat, ммм, понимаю. Маме позвонить надо, сказать, что у неё сын — дебил 🙂
Добавлено через 1 минуту
Рыжий Лис, прав, каюсь, пойду переделывать
Просто Лис
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
Сообщение от Damenikx
1 2 3 4 5 6
>>> enLog = input('Login: ') Login: fox >>> if enLog: . print('True') . True
Регистрация: 16.11.2019
Сообщений: 179
а вы не знаете как сделать программу, при нажатие кнопки Y открывась другая программа
Добавлено через 59 секунд
как допилить вашу прогу, чтобы при нажатие кнопки Y открывась другая программа с регистрацией?
Просто Лис
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
1 2 3 4
if input('Хотите зарегистрироваться? Y/n').lower() in 'y': file = open('out.txt', 'w') file.write(input('Введите логин: ') + ' ' + input('Введите пароль: ')+'\n') file.close()
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Проверка пароля
Задача то легкая, но я не понимаю какая у меня ошибка в коде. Условие — Напишите программу.
Проверка пароля
Здравствуйте, у меня возникла проблема в коде Напишите программу, которая будет требовать у.
Проверка пароля
Как известно, когда мы придумываем пароль от аккаунта ВКонтакте, электронной почты или.
Проверка пароля на сложность
По следующим критериям: От 5 символов, нужны заглавные и строчные буквы, нужны цифры и другие.
Проверка пароля на криптостойкость
Пароль называется криптостойким, если он включает в себя и строчные латинские буквы, и заглавные.
Хэш и проверка пароля!
Здравствуйте! Помогите, пожалуйста. Задание следующее: написать формы для авторизации. Сделал.