الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تغيير كلمة السر للمتسخدم الحالي

بدأه maher salman في 19 أغسطس 2008 · 8 رد · 4,962 مشاهدة · في قسم Oracle Forms
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اريد كود تغيير كلمة السر للمستخدم الحالي الصورة التالية توضح المطلوب

post-114977-1219175231_thumb.jpg

#2

هناك إمكانية إستخدام الأمر Password

or

Alter User Scott Identified by Tiger ;

وتغير الـ Scott بإسم المستخدم الحالي

وَ Tiger بكلمة المرور الجديدة ،،

طبعاً وعشان تتأكد من صحية كملة المرور القديمة هذه سهله تعمل في الكود LogIn وإذا كان Success فممتاز وإلى أعد عمل تسجيل دخول عن طريق الكود من غير مايشوف المستخدم .

#3

شكرا على ردك ولكن الموضوع انو انا عامل جدول داخل هذا اليوزر فيه اسماء المستخدمين وارقامهم السرية هل فهمت علي؟

#4

الاخ العزيز ماهر

على اعتبار انك الان فى المستخدم scott/tiger

وقمت بعمل جدول للمستخدمين الجدد ونفترض اسمه users

ويحتوى على عمودين وهما user_name وpassword

وانت طبعا عامل فورمة للدخول الى الفورمة الرئيسية بتاعتك عن طريق الuser_name وpassword من جدول users بتاعك

وتريد منح كل مستخدم امكانية تغيير كلمة السر الخاصة به

يمكنك عمل الاتى

فى تريجر

when_button_pressed

على الزر change password

اكتب الكود التالى

مع استبدال اسماءال items بالاسماء الموجودة على الفورمة تبعك

begin
if :confirm_new_password=:new_password then
update (users) set password=:new_password where 
password=:old_password;
commit; 
elsif :confirm_new_password !=:new_password then
message('please reconfirm your new password correctly');
message('please reconfirm your new password correctly');
raise form_trigger_failure;
end if;
end;
--where users is your users's table and password is the column of passwords


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#5

اخي الكريم اشكرك شكرا كبيرا لكن في مشكلة صغيرة احاول حلها في هذا الكود وهي انه يتكم فعلا تخزين كلمة السر ولكن لما يظهر لي رسالة بعد التغيير :

no change to save

مع انه يتم تغيير كلمة السر وشكرا

وما معنى raise form_trigger_failure;

Thank you very much

#6

اخى العزيز

عن المشكلة الاولى وهى رسالة NO CHANGES TO SAVE

فهذه بسبب انك عملت COMMIT على جدول تانى فى الداتابيز وليس الجدول الذى بنيت عليه النموذج او الفورمة

وبصراحة انا مازلت اعانى من هذه المشكلة البسيطة حتى الان

ولا اعرف لها حلا

لكن ملحوظة لا تحذف COMMIT مع انها السبب فى ظهور الرسالة لكن لابد منها

اما عن RAISE FORM_TRIGGER_FAILURE;

فهو EXCEPTION جاهز فى الاوراكل يوقف الخطوات عند هذا الخطأ

لانه فى بعض الحالات او النماذج يمكن تخطى الخطأ من قبل البرنامج واكمال الخطوات بطريقة عادية

مما قد بل وبالتأكيد سوف يتسبب فى مشاكل أخرى مستقبلا

ولهذا يفضل استخدامه لمنع مثل هذه الاخطاء وعدم تخطى اى عملية او خطوة من البرنامج الا بعد التأكد من صحتها 100%والا فسوف يقوم بتعطيل البرنامج عند هذا الخطأ وهذا احسن من التغاضى عن اخطاء سوف ترهقنا مستقبلا

ارجو الا اكون مخطأ وان اكون قد افدتك

ولك منى خالص التحية واطيب التمنيات


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#7

مرحباً مرة أخرى ،،

حسناً الآن بالبداية لازم تكون آخذ أنت userid معاك وانت داخل في شاشة تسجيل الدخول كـ global ماشي ؛

والآن تروح على حقل الـ Old_Password وتعمل when-validate-item trigger وتكتب فيه التالي :

لكي يتأكد من ان كلمة المرور القديمة المدخلة هي الصحيحة .

declare
   v_pass users.password%type;
begin
   select password 
   into v_pass 
   from users 
   where (user_id = :global.userid);
 if :old_password <> v_pass then
 	message(' the password you entered is incorrect , please retry to enter the correct password');
 	message(' the password you entered is incorrect , please retry to enter the correct password');
	raise form_trigger_failure;
  end if;
end;

وانا عدلت في كود الأخ الكريم السابق لكي يكون أدق وحتى في حالة تشابه كلمة المرور بين أكثر من مستخدم :

وطبعاً حليتلك مشكلة الرسالة اللي تطلع معاك أيضاً .

begin
	if :confirm_new_password=:new_password then
		update users set password=:new_password where
		user_id = :global.userid;
		forms_ddl(' commit ');
	 else 
		message('please reconfirm your new password correctly');
		message('please reconfirm your new password correctly');
		raise form_trigger_failure;
	 end if;
end;
#8

اخي الكريم انا مبتدئ في pl/sql وهذا هوي كود الدخول في شاشة اليوزرنيوم والباسوورد

declare x number;

v_status number(1);

v_type number(1);

v_flag number(1);

v_from date;

v_to date;

begin

BEGIN

select count(1)

into x

from USERS_ACCOUNTS

where upper(user_id ) = upper(:usertxt)

and upper(user_password) = (:passwordtxt);

exception

when no_data_found then

x:=0;

END;

begin

if x=0 then

:parameter.y := nvl((:parameter.y)+1,1);

if :parameter.y=3 then

exit_form(no_commit,no_validate);

else

go_block('block3');

clear_block(no_commit);

end if;

else

begin

select USER_STATUS , USER_USER_TYPE , USER_EXP_FLAG , USER_EXP_FROM ,USER_EXP_TO

into v_status , v_type , v_flag , v_from , v_to

from USERS_ACCOUNTS

where upper(user_id) = upper(:block3.usertxt)

and upper(user_password) = upper(:block3.passwordtxt);

exception

when no_data_found then

null;

end;

-----------------------------------------------------------------------

---------------- Checking User Setting --------------------------------

-----------------------------------------------------------------------

IF V_STATUS <> 1 THEN

MESSAGE('NOT ACTIVE');

MESSAGE(' ');

EXIT_FORM(NO_VALIDATE);

END IF;

IF v_flag = 0

AND (SYSDATE NOT BETWEEN v_from AND V_TO) THEN

MESSAGE ('USER EXPIRED');

MESSAGE (' ');

EXIT_FORM(NO_VALIDATE);

end if;

:GLOBAL.PUSER := :userTXT;

NEW_FORM('D:\Center System\forms\mainmenu');

end if;

end;

end;

#9

السلام عليكم

المشكلة الاولى وهى رسالة NO CHANGES TO SAVE

لعلاج هذه الرسالة ومنع ظهورها أو ظهور رسائل الخطا التلقائية يمكن كتابة لامر التالي في:

نضيف تريجر للفورم نوعه:

when_new_form_inestans>

ثم نكتب الامر التالي داخل هذا التريجر:

;system.message_level:=25:

واتمنى ان يكون هذا حلا.

مواضيع مشابهة