أثناء عمل فورم اسم المستخدم وكلمة المرور للبرنامج حصل المشكل التالي
عندي فورم 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؟؟؟
ضع مكان Form5.Hide;
Form5.free;
أولا عليك البحث بقاعدة البيانات بإستخدام 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;
السلام عليكم
البحث بالاستعلام هو العمل المتقن لكن حذاري من بعض الأخطاء
هذا هو الاستلام
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
الجواب عن سؤالي وجده الأخ bouh25 في شرح الفديو
أما بقية الأخوة شكرا لكم فلم يكن ذلك ماأقصده