سلام
من می خوام یه برنامه لاگین درست کنم که اطلاعات یوزر و پسورد رو از دیتابیس بگیره و در صورت صحت اطلاعات ورودی لاگین کنه.
از چه دستورات مقایسه ای باید استفاده کنم؟
ممنون می شم جواب بدین
Printable View
سلام
من می خوام یه برنامه لاگین درست کنم که اطلاعات یوزر و پسورد رو از دیتابیس بگیره و در صورت صحت اطلاعات ورودی لاگین کنه.
از چه دستورات مقایسه ای باید استفاده کنم؟
ممنون می شم جواب بدین
با فرض اینکه یوزر و پسورد را در TBL_USER ذخیره کرده اید از کد زیر استفاده کنید.
موفق باشید.کد:if TBL_USER.Locate('Usr;Pass',VarArrayOf([Edt_User.Text,Edt_Pass.Text]),[loCaseInsensitive]) then
//ورود به برنامه
else
MessageDlg('ورود به سيستم امكان پذير نمي باشد',mtError,[mbOk],0);
من از sql استفاده می کنم ، میشه واسه این کار از select استفاده کرد؟
شما باید قبل از اینکه این بخش کد رو بنویسین از یک Select * from table استفاده کنی و بعد از این کد.
نیازی به استفاده از فرمان SQL نیست.
اگر از SQL استفاده میکنید میتونید خیلی راحت با یه دستور Select اطلاعات ورودی کاربر رو با مقادیر موجود در جدول بررسی کنید و در صورت صحت اطلاعات اجازه ورود بدید .
برای اینکار شما نیاز به یه جدول جهت نگهداری اطلاعات کاربران دارید که حد اقل باید 2 فیلد نام کاربری و کلمه عبور رو داشته باشه .
دستورات زیر رو میتونید در Event کلیک دکمه ورود بذارید و میتونه مثال خوبی باشه برای شما :
شما باید فرم Login تون رو بعد از نمایش فرم اصلی فراخوانی کنید تا دستورات بدرستی عمل کنه .
کدها رو فلبداعه نوشتم ، اگه کلمه ای جا افتاده خودتون تصحیحش کنید . با یکم کار بیشتر میشه نسخه خیلی خوبی ازش در آورد .کد:Var
Form_Login: TForm_Login;
access : boolean ;
accesscount : integer ;
procedure TForm_Login.FormShow(Sender: TObject);
begin
access := false ;
accesscount := 0 ;
end;
procedure TForm_Login.Button_LoginClick(Sender: TObject);
begin
if (Trim(edit_username.text) <> '') AND (Trim(edit_password.text) <> '') then
begin
accesscount := accesscount + 1 ;
//==
with querytable do
begin
sql.clear ;
sql.add('select * from usertable where namefield = '+quotedstr(edit_username.text)+' AND passfield = '+quotedstr(edit_password.text));
open ;
//==
if recordcount > 0 then
access := true
else
access := false ;
end ;
end
else
showmessage('لطفا نام کاربري/کلمه رمز را وارد نماييد');
//===
if access = true then
begin
self.close ;
end
else
begin
showmessage('نام کاربري/کلمه رمز اشتباه است');
//== اگر تعداد دفعات سعي براي ورود بيشتر از3 بار اشتباه بود برنامه خارج ميشود
if accesscount > 3 then
application.terminate ;
end ;
end ;
ممنون دوست عزیز. و به جمع ما خوش آمدید.
حق با شماست و یا SQL هم میشه این کارو کگرد .لی تعدادخطوط برنامه ای که باید نوشته بشه بیشتره و من خودم از این روش استفاده نمیکنم.
موفق باشید.