Как создать пару логин пароль в python
Перейти к содержимому

Как создать пару логин пароль в python

  • автор:

Как сделать регистрацию+вход на пайтон?

Здравствуйте!
Суть вопроса, я хочу сделать регистрацию и вход с помощью Пайтон
Допустим если я выберу регестрацию то введу свой логин и пароль и он сохраниться в 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-сообщество

[RSS Feed]

  • Начало
  • » Базы данных
  • » преобразование кода для 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

Так ваша программа вносит только один логин и пароль в файл. Вам и надо проверить только один логин пароль или в файле их может быть несколько?

Просто Лис

Эксперт Python

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')

Просто Лис

Эксперт Python

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

Эксперт Python

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, хорошие у тебя логины с паролями и конкурсы интересные

Эксперт Python

2679 / 1585 / 512
Регистрация: 21.02.2017
Сообщений: 4,205
Записей в блоге: 1
Damenikx, Создай в файле несколько юзеров с пассами, а потом введи юзера_1, а пароль от юзера_2.
954 / 340 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

DmFat, ммм, понимаю. Маме позвонить надо, сказать, что у неё сын — дебил 🙂

Добавлено через 1 минуту
Рыжий Лис, прав, каюсь, пойду переделывать

Просто Лис

Эксперт Python

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 открывась другая программа с регистрацией?

Просто Лис

Эксперт Python

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 символов, нужны заглавные и строчные буквы, нужны цифры и другие.

Проверка пароля на криптостойкость
Пароль называется криптостойким, если он включает в себя и строчные латинские буквы, и заглавные.

Хэш и проверка пароля!
Здравствуйте! Помогите, пожалуйста. Задание следующее: написать формы для авторизации. Сделал.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *