السلام .. الصراحة هذي أول مرة أتتشرف بالدخول إلى المنتدى و لا اعرف مستوى الأخوه الأعضاء والمشاركين , عموما أنا بفضل الله أجيد ORACLE DATABASE AND DEVELOPER2000 وبإمكانياتي المتواضعة أود تقبل مشاركاتي و أتمنى أن تكون مفيدة للأخوة ..
سأتطرق لعدة مواضيع وأفكار برمجية و أكود ولكن أود أن تكون بطريقة منظمة لذلك اعتقد بل اجزم أن أي نظام معلوماتي يجب أن يدعمه نظام أمني متكامل و ذلك للمحافظة على سرية البيانات و التحكم بمستخدمي النظام , فمن الضروري قبل الشروع في عمل أي مشروع يجب أن يحتوي على نظام أمنى وحيث أن أو راكل كقاعدة بيانات تعتبر متمكنة من هذه الناحية إلا إن القصور يأتي عندما تريد بناء برنامج باستخدام أحد منتجات أو راكل و نركز هنا على ال DEVELOPER2000 ولتخطي هذا القصور يجب أن تقوم ببناء نظامك الأمني الخاص بك , فيمكنك هذا النظام بأن تقوم بإنشاء مستخدمين وإعطاءهم بعض الصلاحيات و تسجيل دخولهم و خروجهم من النظام وما العمليات التي قاموا بها وعدة ميزات أخرى ، وسوف أقوم بتقسيم العمل إلى أجزاء ليتسنى للأخوة بفهم أولا ..أولا.. أولا و من ثم التطبيق لأن الأهم هو فهم الفكرة لاعطاء الفكر مساحة للا بتكار و التطوير ..
في هذا الجزء سنقوم بإنشاء جدول في قاعدة البيانات و إنشاء FORM يقوم بالتأكد من المستخدم وكلمة مروره وصلاحياته و حالته , فالرجاء اتباع الآتي :
1)
) CREATE TABLE USER
USER_ID VARCHAR2(10) NOT NULL,
USER_PAS VARCHAR2(10) NOT NULL,
USER_N VARCHAR2(35) NOT NULL,
USER_G VARCHAR2(15) NOT NULL,
USER_S VARCHAR2(8) NOT NULL,
USER_D DATE);
2)
INSERT INTO USERS VALUES(‘ADMINISTRATOR’,’ADMNPASS’,’THE ADMINISTRATOR FOR SYSTEM’,’ADMINS’,’ACTIVE’,SYSDTAE);
حيث أن :-
USER_ID= رقم المستخدم
USER_PAS=كلمة المرور( الرقم السري )
USER_N= اسم المستخدم
USER_G=مجموعة المستخدم التي تبين صلاحياته(مشرف,مستخدم,إداري)
USER_S=حالة المستخدم( نشط أو مقفل)
USER_D=تاريخ إنشاء المستخدم
ويمكن إضافة العديد من الحقول التي يمكن الاستفادة منها ولكن نكتفي بهذا القدر لفهم الفكرة
3) الذهاب إلى DVELOPER و تشغيل FORM BUILDER و إنشاء NEW MODULE
4) إنشاء 3 TEXT ITEM ليس مربوطين بقاعدة البيانات DATABASE = No
5) إنشاء 2 BUTTON
6) كتابة هذا الكود في BUTTON 1
DECLARE
V_USER_ID NUMBER;
V_USER_PAS VARCHAR2(10);
V_ALRT NUMBER;
V_USER_G VARCHAR2(15);
V_USER_S VARCHAR(8);
BEGIN
IF :TEXT_USER_ID IS NULL THEN
V_ALRT:=SHOW_ALERT('ALRT_F_USER');
GO_ITEM('TEXT_USER_ID');
RETURN;
END IF;
IF :TEXT_PASSWORD IS NULL THEN
V_ALRT:=SHOW_ALERT('ALRT_F_PASSWORD');
GO_ITEM('TEXT_PASSWORD');
RETURN;
END IF;
SELECT COUNT(*) INTO V_USER_ID FROM USERS WHERE USER_ID=:TEXT_USER_ID;
IF V_USER_ID!=0 THEN
SELECT USER_PAS INTO V_USER_PAS FROM USERS WHERE USER_ID=:TEXT_USER_ID;
IF V_USER_PAS=:TEXT_PASSWORD THEN
SELECT USER_G,USER_S INTO V_USER_G,V_USER_S FROM USERS WHERE USER_ID=:TEXT_USER_ID;
:GLOBAL.USER_G :=V_USER_G;
:GLOBAL.USER_ID:=:TEXT_USER_ID;
IF V_USER_S='ACTIVE' THEN
INSERT INTO LOG (LOG_NO,USER_ID,LOG_S,LOG_D) VALUES(S_LOG.NEXTVAL,:TEXT_USER_ID,'LOGON',SYSDATE);
COMMIT;
NEW_FORM('C:FORMSFRM_MAIN.FMX');
ELSE
V_ALRT:=SHOW_ALERT('ALRT_DISABLED');
EXIT_FORM(NO_VALIDATE);
END IF;
ELSE
V_ALRT:=SHOW_ALERT('ALRT_PASSWORD');
:DISP_COUNTER:=:DISP_COUNTER+1;
GO_ITEM('TEXT_PASSWORD');
END IF;
ELSE
V_ALRT:=SHOW_ALERT('ALRT_USER');
GO_ITEM('TEXT_USER_ID');
END IF;
IF :DISP_COUNTER > 3 THEN
UPDATE USERS SET USER_S='DISABLED' WHERE RTRIM(USER_ID)=RTRIM(:TEXT_USER_ID);
COMMIT;
V_ALRT:=SHOW_ALERT('ALRT_DISABLED');
EXIT_FORM(NO_VALIDATE);
END IF;
exception
when others then
message(sqlerrm);
END;
ارجو ابلاغي ما اذا كان ما قدمتة مفيد, لاستكمال البقية؟؟؟!!!
لا تترد بطلب الايضاح ..