نمونه برنامه فرم لاگین با طراحی یک دیتابیس داخلی و هش کردن- پایتون

برای ایجاد یک برنامه لاگین ساده با یک دیتابیس داخلی با هش شدن در پایتون، می‌توانید از کتابخانه‌ی SQLite که بخشی از کتابخانه‌های استاندارد پایتون است، استفاده نمود.

آموزش کد:

  1. اتصال به دیتابیس:
    • دیتابیس SQLite با نام user_database.db ایجاد یا به آن متصل می‌ کنیم.
  2. ایجاد جدول:
    • اگر جدولی به نام users وجود نداشته باشد، ایجاد می‌شود.
  3. ثبت نام:
    • در صورت ورود یک نام کاربری جدید، داده‌های آن در جدول ذخیره می‌شود. اگر نام کاربری تکراری باشد، خطای IntegrityError مدیریت می‌شود.
  4. ورود:
    • در این بخش، بررسی می‌شود که آیا نام کاربری و رمز عبور وارد شده با داده‌های موجود در دیتابیس تطابق دارد یا خیر.
  5. منوی اصلی:
    • کاربر می‌تواند بین ثبت‌نام، ورود، و خروج از برنامه انتخاب کند.

در اینجا یک نمونه کد برای ساخت چنین برنامه‌ای ارائه می گردد:

				
					
import sqlite3
from hashlib import sha256

# ایجاد و اتصال به دیتابیس
def create_database():
    conn = sqlite3.connect("user_database.db")
    cursor = conn.cursor()
    # ایجاد جدول کاربران (اگر وجود ندارد)
    cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            username TEXT UNIQUE NOT NULL,
            password TEXT NOT NULL
        )
    """)
    conn.commit()
    conn.close()

# ثبت‌نام کاربر
def register_user(username, password):
    conn = sqlite3.connect("user_database.db")
    cursor = conn.cursor()
    try:
        hashed_password = sha256(password.encode()).hexdigest()  # هش کردن رمز عبور
        cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, hashed_password))
        conn.commit()
        print("User registered successfully!")
    except sqlite3.IntegrityError:
        print("Error: Username already exists.")
    finally:
        conn.close()

# بررسی اطلاعات ورود کاربر
def login_user(username, password):
    conn = sqlite3.connect("user_database.db")
    cursor = conn.cursor()
    hashed_password = sha256(password.encode()).hexdigest()  # هش کردن رمز عبور
    cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, hashed_password))
    user = cursor.fetchone()
    conn.close()
    if user:
        print(f"Welcome, {username}!")
    else:
        print("Invalid username or password.")

# منوی اصلی
def main():
    create_database()
    while True:
        print("\n1. Register")
        print("2. Login")
        print("3. Exit")
        choice = input("Choose an option: ")
        
        if choice == "1":
            username = input("Enter username: ")
            password = input("Enter password: ")
            register_user(username, password)
        elif choice == "2":
            username = input("Enter username: ")
            password = input("Enter password: ")
            login_user(username, password)
        elif choice == "3":
            print("Exiting program.")
            break
        else:
            print("Invalid choice. Please try again.")

# اجرای برنامه
if __name__ == "__main__":
    main()

#---
				
			

توضیحات کد:
1. پایگاه داده داخلی SQLite:
با استفاده از sqlite3، پایگاه داده‌ای محلی و داخلی ایجاد می‌شود.
جدول users شامل دو ستون username و password است.
2. هش کردن رمز عبور:
رمز عبور کاربران با استفاده از الگوریتم SHA-256 هش می‌شود تا امنیت بیشتری فراهم شود.
3. ثبت‌نام کاربر:
تابع register_user بررسی می‌کند که آیا نام کاربری قبلاً وجود دارد یا خیر و در صورت موفقیت کاربر جدید را ثبت می‌کند.
4. ورود کاربر:
تابع login_user اطلاعات کاربر را در جدول جستجو کرده و ورود او را تأیید می‌کند.
5. منوی اصلی:
کاربران می‌توانند بین گزینه‌های ثبت‌نام، ورود، یا خروج انتخاب کنند.

نحوه اجرا:
1. فایل را ذخیره کنید و اجرا کنید.
2. برنامه از شما می‌خواهد که ثبت‌نام کنید یا وارد شوید.
3. اطلاعات کاربران در فایل پایگاه داده user_database.db ذخیره می‌شود.

نمونه اجرا:

1. Register
2. Login
3. Exit
Choose an option: 1
Enter username: Test
Enter password: 12345
User registered successfully!

1. Register
2. Login
3. Exit
Choose an option: 2
Enter username: Test
Enter password: 12345
Welcome, Test!

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا