تقنيات نور التعليمية تقنيات نور التعليمية

آخر الأخبار

جاري التحميل ...

📘 الدرس 13: تسجيل الدخول باستخدام قاعدة بيانات SQLite

في هذا الدرس سنتعلم كيف نطور نموذج تسجيل الدخول بحيث تكون أسماء المستخدمين وكلمات المرور مخزنة في قاعدة بيانات SQLite بدلًا من إدخالها يدويًا في الكود.


🎯 الفكرة

1- إنشاء قاعدة بيانات SQLite باسم users.db.
2- إنشاء جدول للمستخدمين يحتوي على الحقول:
  • id (رقم المستخدم)
  • username (اسم المستخدم)
  • password (كلمة المرور)
3- عند تسجيل الدخول:
  • يتم البحث في الجدول عن اسم المستخدم وكلمة المرور.
  • إذا كانت صحيحة → يتم الدخول للنافذة الرئيسية.
  • إذا كانت خاطئة → يظهر تنبيه.

💻 الكود

import sys
import sqlite3
from PyQt5.QtWidgets import (
    QApplication, QMainWindow, QDialog, QLabel, QPushButton,
    QLineEdit, QVBoxLayout, QWidget, QMessageBox
)


# إنشاء قاعدة البيانات وإضافة مستخدم تجريبي
def init_db():
    conn = sqlite3.connect("users.db")
    cursor = conn.cursor()

    # إنشاء الجدول إذا لم يكن موجودًا
    cursor.execute("""
        CREATE TABLE IF NOT EXISTS users (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            username TEXT NOT NULL,
            password TEXT NOT NULL
        )
    """)

    # إدخال مستخدم تجريبي
    cursor.execute("SELECT * FROM users WHERE username=?", ("admin",))
    if not cursor.fetchone():
        cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", ("admin", "1234"))

    conn.commit()
    conn.close()


# النافذة الرئيسية
class MainApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("النافذة الرئيسية")
        self.setGeometry(200, 200, 400, 200)

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        layout = QVBoxLayout(central_widget)

        label = QLabel("مرحبًا بك في التطبيق 🎉")
        layout.addWidget(label)


# نافذة تسجيل الدخول
class LoginWindow(QDialog):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("تسجيل الدخول")
        self.setGeometry(300, 300, 300, 150)

        layout = QVBoxLayout()

        # إدخال اسم المستخدم
        self.username_input = QLineEdit(self)
        self.username_input.setPlaceholderText("اسم المستخدم")
        layout.addWidget(self.username_input)

        # إدخال كلمة المرور
        self.password_input = QLineEdit(self)
        self.password_input.setPlaceholderText("كلمة المرور")
        self.password_input.setEchoMode(QLineEdit.Password)
        layout.addWidget(self.password_input)

        # زر تسجيل الدخول
        self.login_button = QPushButton("تسجيل الدخول", self)
        self.login_button.clicked.connect(self.check_login)
        layout.addWidget(self.login_button)

        self.setLayout(layout)

    def check_login(self):
        username = self.username_input.text()
        password = self.password_input.text()

        conn = sqlite3.connect("users.db")
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM users WHERE username=? AND password=?", (username, password))
        result = cursor.fetchone()
        conn.close()

        if result:
            self.accept()  # تسجيل الدخول ناجح
        else:
            QMessageBox.warning(self, "خطأ", "اسم المستخدم أو كلمة المرور غير صحيحة")


if __name__ == "__main__":
    init_db()  # إنشاء قاعدة البيانات وتجهيزها

    app = QApplication(sys.argv)

    login = LoginWindow()

    if login.exec_() == QDialog.Accepted:
        window = MainApp()
        window.show()
        sys.exit(app.exec_())

✅ ما تعلمناه

  • كيفية إنشاء قاعدة بيانات SQLite وربطها مع PyQt.
  • إنشاء جدول مستخدمين وتعبئته ببيانات تجريبية.
  • ربط إدخالات المستخدم في نافذة تسجيل الدخول ببيانات قاعدة البيانات.

📌 في الدرس 14 سنطور أكثر إن شاء الله ونضيف:

  • إمكانية تسجيل مستخدم جديد من داخل الواجهة.
  • التحقق من قوة كلمة المرور.


عن الكاتب

Tamer Ahmed

التعليقات


اتصل بنا

إذا أعجبك محتوى مدونتنا نتمنى البقاء على تواصل دائم ، فقط قم بإدخال بريدك الإلكتروني للإشتراك في بريد المدونة السريع ليصلك جديد المدونة أولاً بأول ، كما يمكنك إرسال رساله بالضغط على الزر المجاور ...

جميع الحقوق محفوظة

تقنيات نور التعليمية