الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

بتاريخ:
  • مشاركة ذات تفاعل كبير

السلام عليكم
سوف نقوم بانشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين من خلال هذا الموضوع
ااااااااااارجو التثبيت
----------------------------------------------------------------------------------------------------------
اولا نفتح SQL*PLUS
ندخل على احد المستخدمين الذين لديهم صلاحيات لانشاء جدول وافضل استخدام SYSTEM OR SCOTT
او اي مستخدم انت خلقته ولكن معه صلاحيات DBA
الان نقوم بانشاء الجدول التالي:-

CREATE TABLE USERS_ACCOUNTS
(
 USER_ID         VARCHAR2(100 ),
 USER_ANAME      VARCHAR2(100 ),
 USER_ENAME      VARCHAR2(100 BYTE),
 USER_PASSWORD   VARCHAR2(100 BYTE),
 USER_TYPE  NUMBER(1),
 USER_STATUS     NUMBER(1),
 USER_EXP_FLAG   NUMBER(1),
 USER_EXP_FROM DATE, USER_EXP_TO     DATE
);



----------------------------------------------------------------------------------------------------------
شرح عناصر الجدول :
USER_ID اسم الدخول للبرنامج
USER_ANAME بعض الشركات يكون للمستخدم اسم باللغة العربية او الانجليزية هذا العنصر يمثل الاسم بالعربية
USER_ENAME الاسم بالانجليزية
USER_PASSWORD كلمة المرور
USER_TYPE نوع المستخدم حسب الصلاحيات
USER_STATUS حالة المستخدم هل هو فعال ام انه مقفل نستخدمه في كثير من الاوقات مثال اخذ الموظف اجازة ليس من المعقول ان نترك حسابه مفتوح وحتى لا يتاح لاحد العمل على حسابه وهو من باب الحماية
USER_EXP_FLAG بعض الشركات تحتاج الى مستخدمين لفترة محدودة هذا العنصر يمثل اشارة ان المستخدم مؤقت ام لا
USER_EXP_FROM وقت بدء المستخدم بالتاريخ وتفعيله للمستخدمين المؤقتين
USER_EXP_TO وقت انهاء هذا المستخدم وقفله لانه ليس من المعقول متابعة المستخدمين خصوصا اذا كان عددهم كبير

بهذا نكون انتهينا من عملنا هنا وفي الدرس القادم ان شاء الله سوف نبدأ في oracle developer suite 10g وتصميم الشاشات الثلاث

  • الردود 97
  • المشاهدات 92.3k
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

Most Popular Posts

  • والان اقدم لكم العمل كاملا من خلال الفورم وهو على 10g واتمنى ان يستفيد الجميع

  • بسم الله الرحمن الرحيم اولا اشكر كل من اطلع على الموضوع واستفاد منه وانا لا اهتم بالردود ابدا لاني اعمل لكسب الاجر وليس من اجل ان يرد علي فلان يشكرني لاني لا اطلب الا الاجر والمساعدة وانا اعلم تماما ا

  • نبدأ بتصميم شاشة الدخول اولا من قائمة file نختار new ثم form - من object navigator نضغط على اسم الفورم الجديد الذي انشأناه ونمسح الكلمة الموجودة بجانب menu module - من windows نعيد تسمية الويندو ب

بتاريخ:
  • كاتب الموضوع

نبدأ بتصميم شاشة الدخول

اولا من قائمة file نختار new ثم form

- من object navigator نضغط على اسم الفورم الجديد الذي انشأناه ونمسح الكلمة الموجودة بجانب menu module
- من windows نعيد تسمية الويندو بالاسم التالي WIN_LOGIN
- ندخل على الفورم وهو في حالة التصميم
- ونضع عليه TEXT BOX ونسميه USERID
- نضع TEXT BOX ونسميه PASSWORD ومن الخصائص نختار خاصية CONCEAL DATA=TRUE
- نضع BUTTON ونسميه LOGIN
- نضع BUTTON ونسميه CANCEL
- نضع BUTTON ونسميه CHANGE PASSWORD
- في PARAMETER نختار انشاء جديد ونسميه P_TRIALS ونعطيه نوع البيانات NUMBER
- في PROGRAM UNIT نختار PROCEDURE ونسميه P_CHECKUSER
ونكتب فيه الكود التالي :

PROCEDURE P_CHECKUSER IS
VN_COUNT		  NUMBER(10)	:= 0  ;
 VV_USRSTS	   NUMBER(1)   := '' ; حالة المستخدم تقابل USERT_STATUS
VV_USRTYPE		NUMBER(1)   := '' ; صلاحيات المستخدم تقابل USER_TYPE
BEGIN ----------------------------------------------------------------------------------
التأكد من اسم المستخدم وكلمة السر
 ----------------------------------------------------------------------------------
 BEGIN SELECT COUNT(1) تاكد من وجود المستخدم في قاعدة البيانات
  INTO VN_COUNT ضعه في المتغير
  FROM USERS_ACCOUNTS WHERE UPPER(USER_ID)   =  UPPER(:BLKLOGIN.USERID) لكي لا تتحسس الاحرف ان كانت كبيرة او صغيرة AND UPPER(USER_PASSWORD) =  UPPER(:BLKLOGIN.PASSWORD);
 EXCEPTION WHEN NO_DATA_FOUND THEN
  VN_COUNT := 0;
 END;

 IF VN_COUNT = 0 THEN
  :PARAMETER.P_TRIALS := NVL(:PARAMETER.P_TRIALS,0) + 1 ; متغير نضعه لكي نعطي المستخدم ثلاث محاولات للدخول وبعدها يخرج من البرنامج
 IF :PARAMETER.P_TRIALS = 3 THEN
   EXIT_FORM(NO_COMMIT,NO_VALIDATE);
 ELSE
   GO_BLOCK('BLKLOGIN'); الذهاب الى البلوك  
   CLEAR_BLOCK(NO_COMMIT);
   GO_BLOCK('BLKLOGIN');
 END IF;
  ELSE
[يمين][/يمين]	 BEGIN ----------------------------------------------------------------------------------
   -- اخذ المعلومات الخاصة بالمستخدم
   ----------------------------------------------------------------------------------
		   نأخذ حالة وصلاحية المستخدم SELECT USER_STATUS , USER_USER_TYPE
   INTO VV_USRSTS , VV_USRTYPE
   FROM USERS_ACCOUNTS WHERE UPPER(USER_ID)   =  UPPER(:BLKLOGIN.USERID) AND UPPER(USER_PASSWORD) =  UPPER(:BLKLOGIN.PASSWORD);
  EXCEPTION WHEN NO_DATA_FOUND THEN
 	   NULL;
 END;
 ----------------------------------------------------------------------------------
 -- CHECKING USER SETING ----------------------------------------------------------
 ----------------------------------------------------------------------------------
 اذا كانت قيمة الحالة صفر يمنع الدخول IF VV_USRSTS <> '0' THEN
 	 MESSAGE('المستخدم غير فعال');
 	 MESSAGE('المستخدم غير فعال');
 	  اخرج من البرنامج EXIT_FORM(NO_VALIDATE);
 END IF;

 -------------------------------------------------------------------------------
 تحديث بيانات المستخدم قبل الدخول لاستخدامها لاحقا ----------------------------------------
 -------------------------------------------------------------------------------	
	  : غلوبال لاستخدام الاسم لاحقا GLOBAL.P_USER_ID := :BLKLOGIN.USERID;
 NEW_FORM('MAINMENU');
 END IF;
END;



TRIGGERS

CANCEL >>> WHEN BUTTON PRESSED
exit_form(NO_COMMIT,NO_VALIDATE);


LOGIN >>> WHEN BUTTON PRESSED
P_CHECKUSER; نستدعي البروسيجر
وبهذا نكون قد انشانا شاشة دخول في الدرس القادم سوف نكمل في كيفية تغيير كلمة السر للمستخدم

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:
  • كاتب الموضوع
  • مشاركة ذات تفاعل كبير

بسم الله الرحمن الرحيم
اولا اشكر كل من اطلع على الموضوع واستفاد منه وانا لا اهتم بالردود ابدا لاني اعمل لكسب الاجر وليس من اجل ان يرد علي فلان يشكرني لاني لا اطلب الا الاجر والمساعدة
وانا اعلم تماما ان هذا الموضوع كثير سأل عنه في المنتدى لذلك لا اطلب سوى تثبيت الموضوع ان كان في راي المشرفين انه مهم ؟؟؟؟؟؟؟؟؟؟؟

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

نبدأ الان
على نفس الفورم التي صممنا عليها الدخول نضيف كانفس من نوع كونتنت ونسميها CV_CHANGE
ونضيف ايضا ويندو جديدة ونسميها WIN_CHANGE
سنضع في ال BUTTON الذي سميناه CHANGE PASSWORD
الكود التالي

GO_BLOCK('BLKCHANGE');
HIDE_WINDOW('WIN_LOGIN');
SHOW_WINDOW('WIN_CHANGE');


طبعا هذا الكود معروف لكي يخفي شاشة الدخول ويذهب الى شاشة تغيير كلمة السر
الان نضع التالي
TEXTBOX : V_USERID
TEXTBOX:V_PASSWORD
TEXTBOX:V_NEWPASSWORD
TEXTBOX:V_CONFIRMP
BUTTON: CHANGE PASSWORD
BUTTON: CANCEL

TRIGGERS

CANCEL:

EXIT_FORM(NO_COMMIT,NO_VALIDATE);



CHANGE PASSWORD :

DECLARE
اسم المستخدم ويجب وضعه وذلك من باب الحماية	V_USER	  VARCHAR2(100);
كلمة السر القديمة	V_OLD_PASS  VARCHAR2(100);
BEGIN جلب البيانات الى المتغيرات		SELECT USER_ID , USER_PASSWORD
	INTO V_USER,V_OLD_PASS FROM  USERS_ACCOUNTS
	WHERE USER_ID = :BLKCHANGE.V_USERID AND USER_PASSWORD = :BLKCHANGE.V_PASSWORD;

 IF :BLKCHANGE.V_NEWPASSWORD IS NULL OR :BLKCHANGE.V_CONFIRMP IS NULL THEN
اذا كانت كلمة السر الجديدة  فاضية يظهر رسالة تفيد بوجو بملء الحقول 		MESSAGE(' íÌÈ ãáÆ ÍÞæá ßáãÉ ÇáÓÑ ÇáÌÏíÏÉ æÊÃßíÏåÇ  ');
			MESSAGE(' íÌÈ ãáÆ ÍÞæá ßáãÉ ÇáÓÑ ÇáÌÏíÏÉ æÊÃßíÏåÇ  ');
		RAISE FORM_TRIGGER_FAILURE;
		CLEAR_FORM(NO_COMMIT);
 ELSE
  IF :BLKCHANGE.V_NEWPASSWORD <> :BLKCHANGE.V_CONFIRMP THEN
		MESSAGE('ÊÃßÏ ãä ÊæÇÝÞ ßáãÉ ÇáÓÑ æÊÃßíÏåÇ');
	MESSAGE('ÊÃßÏ ãä ÊæÇÝÞ ßáãÉ ÇáÓÑ æÊÃßíÏåÇ');
اذا كانت كلمة السر الجديدة غير متوافقة مع تاكيدها يظهر رسالة تفيد بخطأ في كتابة كلمة السر الجديدة			RAISE FORM_TRIGGER_FAILURE;
		CLEAR_FORM(NO_COMMIT);
  ELSE
غير ذلك قم بتغيير كلمة السر القديمة   		FORMS_DDL('UPDATE USERS_ACCOUNTS
				   SET USER_PASSWORD = '''||:BLKCHANGE.V_NEWPASSWORD||
				   ''' WHERE UPPER(USER_ID) = UPPER('''||:BLKCHANGE.V_USERID||''')');
	  FORMS_DDL('COMMIT');
	  MESSAGE('Êã ÊÛííÑ ßáãÉ ÇáÓÑ ÈäÌÇÍ');
تم تغيير كلمة السر بنجاح   		MESSAGE('Êã ÊÛííÑ ßáãÉ ÇáÓÑ ÈäÌÇÍ');
الذهاب الى شاشة الدخول   		GO_BLOCK('BLKLOGIN');
HIDE_WINDOW('WINCHANGE');
SHOW_WINDOW('WNDLOGIN');
  END IF;	
 END IF;
 EXCEPTION	WHEN NO_DATA_FOUND THEN
		RAISE FORM_TRIGGER_FAILURE;
		CLEAR_FORM(NO_COMMIT);
	
END;


والسلام ختااااااااااام
شايفين ما اصعبها سهلة جدا واي استفسار من عيوني ولاتنسوني في دعوة في ظهر الغيب
في الدرس الثالث والاخير سنقوم بالتحكم بالمستخدمين وبعدها سأقوم بارفاق شاشة الدخول وتغيير كلمة السر وشاشة التحكم بالمستخدمين لنستفيد منها جميعا الى اللقاء

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:
  • كاتب الموضوع

بسم الله الرحمن الرحيم

اولا لا بد لي ان اشكر المشرفين على تثبيت الموضوع
نكمل موضوعنا وذلك بعد ان تكلمنا عن كيفية عمل شاشة دخول بالاضافة الى شاشة تغيير كلمة سر
الان سوف نتكلم عن التحكم في المستخدمين
نفتح فورم جديد ونضع فيه جدول المستخدمين نمسح كلمة المرور من الشاشة ونغير العناصر التالية الى CHECK BOX
USER_STATUS
USER_EXP_FLAG
نحول صلاحيات المستخدم الى LIST ITEM
USER_TYPE
في الخصائص نذهب الى ELEMENTS IN LIST
ونضع فيها الصلاحيات التي تناسبنا حسب البرنامج ونعطي كل صلاحية رقم LIST ITEM VALUE
INITIAL VALUE نضع فيها الصلاحية التي ستنشئ مع المستخدم الجديد يعني ال DEFAULT
بالنسبة الى USER_STATUS نضع القيمة 1 اذا كان غير فعال و 0 اذا كان فعال يعني اذا تم وضع علامة صح على العنصر سيتم قفل المستخدم
وهذه قمنا ببرمجتها في شاشة الدخول اذا بتتذكرو

TRIGGERS

PRE INSERT للبلوك نضع الكود التالي :

اذا تم وضع علامة صح على ان المستخدم مؤقت يجب ادخال الفترة المتاحة لهذا المستخدم  IF :USER_EXP_FLAG = '1' AND (:USER_EXP_FROM IS NULL  OR :USER_EXP_TO IS NULL) THEN
	MESSAGE('ÇáãÓÊÎÏã ãÄÞÊ íÌÈ ÅÏÎÇá ÇáÝÊÑÉ');
	MESSAGE('ÇáãÓÊÎÏã ãÄÞÊ íÌÈ ÅÏÎÇá ÇáÝÊÑÉ');
	RAISE FORM_TRIGGER_FAILURE;
END IF;

IF :USER_TYPE IS NULL THEN
اذا كانت صلاحيات المستخدم غير محددة يجب اعطاءه صلاحيات  	MESSAGE('ÊÍÏíÏ ÕáÇÍíÇÊ ááãÓÊÎÏã ');
	MESSAGE('ÊÍÏíÏ ÕáÇÍíÇÊ ááãÓÊÎÏã ');
	RAISE FORM_TRIGGER_FAILURE;
END IF;



بقي عندنا الغلوبال التي عرفناها في شاشة الدخول وقلنا اننا سوف نستخدمها لاحقا
وهذه نضعها على ايا فورم في البرنامج ليكون المستخدم معرف ونناديها بالطريقة التالية :
WHEN NEW FORM INSTANCE
:BLK_MAIN.USER_NAME := :GLOBAL.P_USER_ID;اسم البلوم . اسم ال TEXTBOX
والسلام ختااااااااام اي ملاحظات او استفسارات من عيوني
سأضع الشاشات قريبا ولكن لم يبق لي متسع من الوقت الان الى اللقاء

بتاريخ:
  • كاتب الموضوع
  • مشاركة ذات تفاعل كبير

والان اقدم لكم العمل كاملا من خلال الفورم وهو على 10g واتمنى ان يستفيد الجميع

بتاريخ:

يعطيك العافية أخي ماهر وراح أجربها على ديفلوبر 6i أو 9i

بالتوفيق والى الامام

بتاريخ:

شكرا....الفكرة حلوة اووووووووووووووووي..شكرا

  • بعد 2 أسابيع...
بتاريخ:

مشكورررر كتير يا اخي وبارك الله فيك

بتاريخ:

جزاكم الله خيرا وجعله الله في ميزان حسناتك

بتاريخ:

بسم الله الرحمن الرحيم
مشكور اخ ماهر على هذا المجهود الرائع

بتاريخ:

الله يحفظكم جميعا...بس بيطلعلي ارور في البروسجر..
اللي بعرف ليه الارور يتفضل مشكورا بالتوضيح...الارور اللي يطلع معاي موجود بالمرفق

Error.zip

بتاريخ:

لو سمحتو ايش كلمه المرور والباسوورد ؟؟؟

  • بعد 4 أسابيع...
بتاريخ:

السلام عليكم

لقد قمت باتباع الخطوات الموضحة لانشاء شاشة الدخول

ولقد تم بعون الله تعالى

ولكن السؤال

كيف سيتم استخدامها ... لاني حاولت اضيفها على فورم معين وما اشتغلت

ارجو لمن لديه فكرة ان يطلعنا عليها للافادة لاني اريد استخدامهافي مشروعي ان شاء الله

جزيتم الف خير

بتاريخ:

PROCEDURE P_CHECKUSER IS
VN_COUNT NUMBER(10) := 0 ;
VV_USRSTS NUMBER(1) := '' ;
VV_USRTYPE NUMBER(1) := '' ;
BEGIN BEGIN SELECT COUNT(1)
INTO VN_COUNT FROM USERS_ACCOUNTS WHERE UPPER(USER_ID) = UPPER(:BLKLOGIN.USERID) AND UPPER(USER_PASSWORD) = UPPER(:BLKLOGIN.PASSWORD);
EXCEPTION WHEN NO_DATA_FOUND THEN
VN_COUNT := 0;
END;

IF VN_COUNT = 0 THEN
:PARAMETER.P_TRIALS := NVL(:PARAMETER.P_TRIALS,0) + 1 ;
IF :PARAMETER.P_TRIALS = 3 THEN
EXIT_FORM(NO_COMMIT,NO_VALIDATE);
ELSE
GO_BLOCK('BLKLOGIN');  
CLEAR_BLOCK(NO_COMMIT);
GO_BLOCK('BLKLOGIN');
END IF;
ELSE

BEGIN SELECT USER_STATUS , USER_TYPE
INTO VV_USRSTS , VV_USRTYPE
FROM USERS_ACCOUNTS WHERE UPPER(USER_ID) = UPPER(:BLKLOGIN.USERID) AND UPPER(USER_PASSWORD) = UPPER(:BLKLOGIN.PASSWORD);
EXCEPTION WHEN NO_DATA_FOUND THEN
NULL;
END;

IF VV_USRSTS <> '0' THEN
MESSAGE('user not active');
MESSAGE('user not active');
EXIT_FORM(NO_VALIDATE);
END IF;


:GLOBAL.P_USER_ID := :BLKLOGIN.USERID;
NEW_FORM('MAINMENU');
END IF;
END;




اخي الكريم

هاد الكود ان شاء الله بدون ايرور

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:

السلام عليكم ورحمة الله

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

ولقد تم تجريب جميع الاجزاء المتعلقة سواء التغير او الدخول

ولكن بقي لي نقطة واحدة فقط

وهي طريقة الاستعمال اقصد انه كيف سيتم استخدام الفورم الخاص بالدخول بالمشروع لانو هناك مستخدمين ( ادمن , موظف )

هل سنقوم بربط المشروع بشاشة الدخول ؟ وما هي الطريقة يعني يتم اضافة تريجير معين بالمشروع ام بشاشة الدخول

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

ارجو لمن عنده خلفية افادتنا جزاكم الله الف خير

وسأقوم بارفاق الفورمز لانو الفورمز المرفق مع الموضوع انكودد

بانتظاركم اخواني بالله

بتاريخ:

الله ينور عليك ممتاز

بتاريخ:

جزاك الله كل خير يا اخى و جعلة فى ميزان حسناتك
....................!

بتاريخ:

اعتقد الله اعلم ان الكود ناقصه كارسير CURSOR

بتاريخ:

شكرا ليك اخى على هذا الشرح المفيد جدا

بتاريخ:

يعطيك العافية اخوي

ياليت تكمل و شكرا لك :(

بتاريخ:

موضووووع جدا رائع و أكثر من رائع
و يعطيك الف عافية

بتاريخ:

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

  • بعد 3 أسابيع...
بتاريخ:

السلام عليكم ورحمة الله

فعلا الموضوع شيق و أنا شخصيا أعجبت بهذه الطريقة ، لكن أعتقد أن طريقة استخدام الـ Menu Security هي أفضل طريقة للتعامل داخل المشرووع.
و شكراً لجميع أعضاء المنتدى.

بتاريخ:

يا اخوان الى الان الفورم لا يشتغل معي حيث عند كتابة البروسيجر
مع اني قمت بنسخ الثاني الذي هو معدل؟

فما الحل لانه عندي مشروع تخرج واحتاج بشكل ضروري جدا استخدام هذه الشاشة

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.