الانتقال إلى المحتوى

شاشة login اتمني ان تعطوني رايكم بها


majed_3

Recommended Posts

قمت بعمل هذه الفورم والخاصة بـ login واتمني ان تعطوني رأيكم فيها ، واليكم ماعملته:
اولا قمت بعمل فورم واسميتها login وقمت بتعديل ابعادها كالتالي
x = 150
y = 100
العرض = 250
الطول = 150

وهذا جدول المستخدمين

create table users (
                    username   varchar2(20),
                    passwd     varchar2(20))


وقمت بعمل البروسيجر التالي

PROCEDURE check_auth  
(p_user in varchar2,
p_pass in varchar2)
IS
v_user   varchar2(20);
v_pass   varchar2(20);
tmp      varchar2(20);
BEGIN loop
   select username
   into v_user from users; if v_user = p_user then exit;
      else
      	message('Not Valid User');
      	
      	exit;
      	
      end if;
      				
  end loop;
  
 if v_user = p_user then
      	select passwd
      	into tmp from users where username=v_user;
      	if tmp != p_pass then
      		message('Wrong Password!');
      		clear_form(no_validate);
      		
      	else
      		new_form('main_menu');
      	end if;
      	      	
      end if;
      
ENd;



ثم قمت بعمل زر Login وبه trigger من نوع when-button-preesed ووضعت به الكود التالي

check_auth(:users.username,:users.passwd);



وطبقت واشتغلت كويس ،، بس في مشكلة لو كان البرنامج عن طريق الفورم 9 فمعني ذلك ان المستخدم يستطبع ان يغير في الباراميتر الموجود في عنوان الفورم ، ويقوم بالدخول لشاشة التى يريدها من دون المرور على شاشة login :unsure:

وفكرت ان اعمل في جميع الفورم trigger من نوع pre-form يقوم بتشغيل الفورم الخاصة بـ login ، ولاكن اتضح لى ان هذا الامر مستحيل ، لان ذلك يعني انا كل فورم يقوم المستخدم بالدخول ستحوله الى شاشة login والتى بدورها ستحوله الى الشاشة الرئيسية ،،،، :D

login.fmb

رابط هذا التعليق
شارك

بالنسبه لموضوع التاكد من ان المستخدم بدأ بشاشة الدخول
يمكنك انشاء متغير من النوع global عند الدخول من هذه الشاشه
و علي كل شاشه في تريجر when_new_form_instance
تقوم بوضه قيمة افتراضيه للمتغير باستخدام default_value وهي داله
وذلك لانه اذا قام المستخدم بالدخول غير المشروع نضع قيمه للمتغير للننا سنقوم بالتاكد من قيمته
ثم نضع جمله شرطيه اذا كانت قيمة المتغير كما كتبناها في شاشة الدخول يستمر
و اذا كانت كما كتبناها افتراضيا نغلق الشاشه
بالنسبه للكود افضل كتابته بهذه الطريقه

PROCEDURE check_auth 
(p_user in varchar2,
p_pass in varchar2)
IS
x varchar2(20);
BEGIN SELECT 1 INTO X FROM users WHERE username = p_user AND passwd = p_pass ;
new_form('main_menu');
EXCEPTION
WHEN NO_DATA_FOUND THEN
message('Not Valid User');message('Not Valid User');
EXIT_FORM;
END;


لانها هكذا اسرع من عمل LOOP علي الجدول باكمله مع البيانات الكثيره ستاخذ وقت طويل

مع تمنياتي بالتوفيق

رابط هذا التعليق
شارك

  • بعد 1 سنة...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية