فورم تسجيل الدخول
#1
أثناء عمل فورم اسم المستخدم وكلمة المرور للبرنامج حصل المشكل التالي
عندي فورم 1accueil وفورم 2 Form5
عند ادخال اسم مستخدم وكلمة المرور في الفورم 1 وضغط على butoun 
التي تحتوي الكود التالي

كود :
begin if (DataModule1.utilisateur.FieldByName('NomUtilisateur').AsString=edit1.Text)and  (edit2.Text=DataModule1.utilisateur.FieldByName('Password').AsString)then  begin  accueil.show;  Form5.Hide;  end  else  ShowMessage('اسم مستخدم أو كلمة مرور خاطئة'); end;


تغلق فورمaccueil وتفتح Form5
ويختفي التطبيق من شريط المهام في الاسفل ولكنه يبقى موجود gestion de tache؟؟؟
الرد
#2
ضع مكان Form5.Hide;
Form5.free;
الرد
#3
(24-06-2016, 12:36 PM)bouh25 كتب : ضع مكان Form5.Hide;  
Form5.free;
شكرا لك 
المشكل مزال موجود
الرد
#4
أولا عليك البحث بقاعدة البيانات بإستخدام query عن إسم المستخدم و كلمة المرور و من ثم المقارنة بالمعطيات المدخة من طرف المستخدم
مثال بسيط للكيوري و الكود
كود :
  with ADOQuery1 do begin     Close;     SQL.Clear;       SQL.Add('select * from Table where username='+QuotedStr(edituser.Text));     Open;  if Query.RecordCount = 0 then      Application.MessageBox('أسم المستخدم غير موجود', 'Information',      MB_OK or MB_ICONINFORMATION)  else begin    if Query.FieldByName('password').AsString <> editpass.Text      then Application.MessageBox('تأكد من كلمة المرور المدخلة', 'Error',      MB_OK or MB_ICONERROR)  else begin    Hide;    Mainform.Show;    end  end;
الرد
#5
[فيديو: https://www.youtube.com/watch?v=3ATXQLV1R5k]
تابع هذا الفيديو
[-] كل من 1 user says قال شكرا ل bouh25 على المشاركة المفيدة
  • djilani.net
الرد
#6
السلام عليكم
البحث بالاستعلام هو العمل المتقن لكن حذاري من بعض الأخطاء
هذا هو الاستلام
sql.add('select * from Table where ( username='+QuotedStr(edituser.Text)+ ') and ( password='+QuotedStr(editpassword.Text)+')')
1- قم بالتأكد أن المستخدم أدخل مدخلات . في مثالك اسم المستخدم والرقم السري
ان كان لم يدخل exit
2- قم بالتأكد من نوع المدخلات فمثلا لو أدخل المستخدم * سوف يكون الاستعلام صحيح و يمكن أن يكون حقييقي
و هذا نوع من أنواع الاختراق sql injection
لكن هذه الخطوة أنت تقرر كيف تستغلها استغلال صحيح و قوي وهذا عن طريق الممارسة
كفرض ان المستخدم عند تسجيله تفرض عليه ان يبدأ اسمه بحرف ثم الارقام تكون اختيارية و الاحرف الاتينية فقط
عند ذلك يمكن عند تسجيل الدخول تتأكد من أن المستخدم أدخل أحرف لاتينية و أرقام ليست بالضرورة لكن الضروري هو عدم ادخال غيرهما
ان كان أدخل رموز و لم يستوفي الشرط exit
3- المرحلة التي تليها تأكد من طول الكلمة المدخلة وهذا أيضا تفرضه عند التسجيل و هنا تقوم فقط بالتأكد أن الاسم أو الرقم السري ليسا أصغر من القيمة التي فرضتها
ان كان الطول أصغر exit
بعد هذا تستطيع أن نقوم باستعلامك و أنت أمن كليا
و لكن لا تفعل مثل هذا الخطأ الكبير
if Query.RecordCount = 0 then
بل هكذا
if Query.RecordCount = 1 then
ان جلب سجل واحد فمرحبا به
و ان كان غير ذلك exit
الحكمة ضالة المؤمن أنى وجدها فهو أحق الناس بها
الرد
#7
الجواب عن سؤالي وجده الأخ bouh25 في شرح الفديو
أما بقية الأخوة شكرا لكم فلم يكن ذلك ماأقصده
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم