Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

مشكلة في تسجيل دخول المستخدم

السلام عليكم ورحمة الله وبركاته، إخوانِ الكرام أنا أواجه مشكلة في SQlite3

حالياً أعمل على تطبيق Desktop, لتحميل الفيديوهات والموسيقى من اليوتيوب، واجهتني مشكلة في تسجيل الدخول من (المُستخدم)، قمت بعمل واجهة تسجيل حساب جديد للمُستخدم وقمت بحفظ البيانات في قاعدة البيانات في جدول إسمه (User) البيانات التي تَّلقيتها من المُستخدم هي كالآتي:

User Name , Email , Password , confirm Password

هذه البيانات تَّلقيتها في تسجيل حساب جديد وقمت بحفظها وكل الأمور جيدة لا يوجد أيّ مشكلة في واجهة التسجيل هذه، نأتي إلى المشكلة التي واجهتني

والمشكلة تحديدًا في واجهة تسجيل الدخول.

يعني منطقيًا عندما يقوم المستخدم بإنشاء حساب جديد بالتأكيد سيحتاج إلى تسجيل الدخول في حسابه الذي إنشأهُ، أنا لدّي مُستخدمين إثنين طبعاً أنا قمت بإضافتهم فقط للتجربة لا أكثر، عمومًا، لدي مُستخدمين إثنين:

المُستخدم الأول لديه إيميل بهذا العنوان alaa-jasim@gmail.com و كلمة مرور 12345678

ولدّي المُستخدم الثاني : لديه إيميل بهذا العنوان raad-ahmed@gmail.com و كلمة مرور 12345678

ربما لاحظتم أن المُستخدمين لديهم كلمة سر موحدة؟

نعم وأنا اخترت ذلك حتى أُبين لكم المشكلة. الآن فالنفرض إنه المُستخدم صاحب إيميل alaa قام بتسجيل الدخول بواسطة بيانته التي قام بتسجيلها.

المشكلة عندما يتلقى بيانته وأقوم بتخزينهن في متغيرات بهذا الشكل:

self.email = self.email_sign

self.password = self.password_sign

عندما أقوم بفتح قاعدة البيانات بهذا الشكل:

(curs.execute(select Email , password from User

أنا قمت بالإستعلام بهذا الشكل لأنني أريد الوصول فقط إلى الإيميل وكلمة المرور، لا أريد الوصول إلى إسم المستخدم.

لاحظوا: عندما أقوم بطباعة البيانات بإستخدام التعليمة ()curs.fetchall سأحصل على جميع الإيميلات وكلمات المرور بداخل Tuple يعني بهذا الشكل

(alaa-jasim@gmail.com , 12345678)

(raad-ahmed@gmail.com , 12345678)


نأتي على التفصيلة الأخيرة.

فالنفرض أن المُستخدم صاحب الإيميل alaa-jasim@gmail.com قام بالتسجيل مع الإشارة إلى أن كلمة المرور لهذا المستخدم هي: 12345678

عندما أقوم بإنشاء for loop وأقوم بالمرور على البيانات وأبدأ في التحقق يعني هكذا فالنفرض إنه هذا المستخدم قام بإدخال كلمة مرور خاطئة بهذا الشكل

12344

:()for row in curs.fetchall

[0]if self.password in row

الآن عندما أبدأ في التحقق من كلمة السر هذه 12344 فعند التنفيذ سيقول لي بأنها موجودة !! لماذا لأنه مباشرةً ذهب إلى المُستخدم raad وقام بالتحقق إنه لديه كلمة مرور تشبه كلمة مرور alaa ومباشرةً قام بالتسجيل الدخول ومن المفترض إنه يجب أن يقول لي إنها غير موجودة لأنه منطقيًا.


المطلوب

أنا بحاجة إلى طريقة بحيث تتحقق من كلمة المرور الخاصة بالمستخدم إذا كانت تتوافق مع الإيميل المُسجل في هذا الحالة أريد أن يسمح بالتسجيل وإذا كانت موجودة ولكن لا تتوافق مع الإيميل المُسجل بهذه الحالة لا أريد أن يسمح بالتسجيل.

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

أعلم لقد أطلت في الشرح جداً عليكن لكن والله سامحوني حقيقةً مشكلة جعلتني أفقد أعصابي.

أتمنى أن تفيدوني ولكم جزيل الشكر.

تعليقات 1

أضف تعليق

يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.