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

شاشة المدير


الجنتل

Recommended Posts

السلام عليكم ...
اخواني واخواتي مبرمجي الاوراكل لدي مشكلة بسيطة .. وهي انني صممت نظام محاسبي شبه متكامل لشركة
ولكن بقيت مشكلة عندي في نظام المدير اوصلاحيات المدير
وقد اشترطت عليا الشركة عمل نظام للمدير يقوم بالتالي :
اولا : معرفة المستخدم الذي دخل النظام عند دخوله وهذة ما فيها مشكلة .
ثانيا: معرفة وقت دخول المستخدم النظام ووقت خروجه وهذة ايضا ما فيها مشكلة .
ثالثا: ايقاف مستخدم معين عن الدخول اذا دخل في وقت غير المحدد له .
رابعا: وهنا المشكلة وهي طرد المستخدم بمجرد تاشير المدير على check box التابع لطرد المستخدم
ولكن واجهتني مشكلة .. مع العلم اني عملت مستخدمين على الفورم اي في جدول خاص في قاعدة البيانات خصصته للمستخدمين ولم اعمل على مستخدمين قاعدة البيانات ..
ففكرت بالتالي ان اعمل تايمر على مستوى كل شاشة من شاشات النظام يقوم بتحسس جدول المستخدمين
وهل هناك امر طرد .. وهذا حل منطقي ولكن الشاشات المتواجدة عندي كثيرة جدا اكثر من 80 شاشة
فمن غير المعقول عمل تايمر على مستوى كل شاشة ...
فاللي عنده حل رجاء يسعفنا فيه وله جزيل الشكر والتقدير املا اني قد وضحت المشكلة ..
ولكم خالص التحية والتقدير ............
اخوكم الجنتل .

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

الاخ الكريم
بالنسبة لطرد المستخدم فيوجد طريقة اسهل وهي انك تنهي عمل session فلكل مستخدم sessionمعين
يعني تعمل kill session وكنا زمان نطبق هذه المعادلة بس ما ابتفي بالغرض اذا كنت تريد ان تنفذها من خلال فورم وهي

--ممكن تطبيق الجملة من خلال الداتا بيس مباشرة 
alter system kill session 'sid,serial#'


بس لازم يكون لليوزر صلاحيات تساوي صلاحيات يوزر sys
على جدول v_$session وبالشكل التالي

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

begin    
  for i in (select sid,serial# from v$session where username  = 'OSAMA ) 
loop   
       execute immediate 'alter system kill session ' ||''''|| i.sid ||','|| 
i.serial# ||''' immediate';
  end loop;
end;



ارجو ان تكون هذه المعلومة افادتك
وسؤالك مميز بصراحة ونرجو الاستمرار بمثل هذه الاسئلة
;)

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

السلام عليكم
الأخ أسامة
يبدو انه قد فاتك جزء من سؤال الأخ السائل ;)
فهو ذكر ان المستخدمين لديه ليسوا داتا بيز يوزرز
و هم يوزرز في جدول خاص بالنظام فقط و ليس الداتا بيز
لذلك لا يمكن عمل KILL SESSION :D

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

جرب و عموما السؤال جميل فعلا كما قال الأخ أسامة
و أكيد هناك حل سنحاول ايجاده

بالتوفيق

تم تعديل بواسطة hanon_OCP
رابط هذا التعليق
شارك

لحل مشكله يوزر ابلكيشن و ليس داتا بيز يمكن عمل جدول و عمل ادخال فيه بعد فتح السيشن مباشره في البرنامج وتسجيل رقم السشن و اسم اليوزر الي شغال بيها و الجهاز الذي تم فتح السشن منه و الوقت
وبناء علي هذه المعلومات يمكنك استخدام KILL SESSION
مع تمنياتي بالتوفيق

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

السلام عليكم
شكرا لكم اخواني على اجاباتكم
بالنسبة للصلاحيات وعمل مستخدمين على الداتا بيز فأنا من المتشائمين من هذة الطريقة وذلك لسبب
انه اذا تم معرفة اي يوزر نيم وباسورد لاي مستخدم فعال في النظام فبإمكان اي مستخدم له خبرة ولو بسيطة في الداتا بيز ان يخش على قاعدة البيانات ويعمل مشاكل وقد واجهتني هذة المشكلة في مرة من المرات ومن بعدها لم اعد استخدم غير مستخدمين على جدول معين اقوم بعمله في قاعدة البيانات التابعة لي وبهذة الطريقة لا اسمح لاي احد من دخول قاعدة البيانات .
طبعا مع شكري الجزيل للاخ الكريم اسامة الذي اشار علي باستخدام الــ kill session
اما بالنسبة للاخ الكريم هانون فقد فهمت طريقته ولا اعرف ان كنت فهمتها جيدا ولكن المشكلة ان التايمر وبمجرد الخروج من الشاشة اللي عامله عليها يتم ايقافة اي ان التايمر لا يعمل جلوباال على مستوى الفورمز كله ..
واخي الكريم عبدالله ندا ارجو منك ان توضح لي الطريقة التي اشرت بها ولو بمثال ولك كل التقدير

واشكركم على تعاونكم والمعلومات القيمة التي ادليتم بها ..
وتقبلوا خالص تحياتي وتقديري ..
اخوكم الجنتل .................................

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

السلام عليكم
الأخ الكريم
بالنسبة لمسألة اذا كان المستخدمين علي قاعدة البيانات افضل او علي الابلكيشن
فبالطبع علي الداتا بيز افضل كثيرا خصوصا عند طلب اشياء مثل التي تسال عليها
فيمكنك بسهولة عمل kill session لكل يوزر حسب اسمه
بالاضافة الي امكانية التعامل بسهولة مع الصلاحيات علي الداتا بيز

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

CONNECT / AS SYSDBA;

CREATE OR REPLACE TRIGGER block_tools_from_prod
 AFTER LOGON ON DATABASE
DECLARE
 v_prog sys.v_$session.program%TYPE;
BEGIN
 SELECT program INTO v_prog 
   FROM sys.v_$session
 WHERE  audsid = USERENV('SESSIONID')
   AND  audsid != 0  -- Don't Check SYS Connections
   AND  rownum = 1;  -- Parallel processes will have the same AUDSID's

 IF UPPER(v_prog) LIKE '%TOAD%' OR UPPER(v_prog) LIKE '%T.O.A.D%' OR -- Toad
    UPPER(v_prog) LIKE '%SQLNAV%' OR	-- SQL Navigator
    UPPER(v_prog) LIKE '%PLSQLDEV%' OR -- PLSQL Developer
    UPPER(v_prog) LIKE '%BUSOBJ%' OR   -- Business Objects
    UPPER(v_prog) LIKE '%EXCEL%'       -- MS-Excel plug-in
 THEN
    RAISE_APPLICATION_ERROR(-20000, 'Development tools are not allowed on PROD DB!');
 END IF;
END;
/
SHOW ERRORS



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

و بالنسبة لطريقة الأخ عبدالله ندا فهي تتمثل في فكرة ان المستخدمين عندك لو كانوا ليسوا داتا بيز يوزرز فكلهم يدخل بنفس اليوزر و لكن ككل منهم سيشن مختلفة بسيريال مختلف
و يمكنك عمل جدول تسجل به اسم اليوزر و رقم السيشن التي دخل بها ثم تتخدم الkill session لعمل انهاء لاتصال المستخدم بالبرنامج

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

بالتوفيق

تم تعديل بواسطة hanon_OCP
رابط هذا التعليق
شارك

الاخ الكريم " الجنتل "
من سؤالك فهمت انك تريد عمل طرد للمستخدم بمجرد ضغط check box من قبل المدير
الحلول السابقة كلها اكثر من رائعة وبرأيي اليوزر من الداتا بيز افضل واسهل في عملية التحكم
اما بالنسبة انو تستخدم تايمر لانو اليوزر على الفورمز مش ضروري فيك تعمل تريجر على insert وupdate وdelete ولما يحاول وحدة من العمليات هاي يستدعي التريجر ويشيك هل هو مطرود ولا لأ واذا مطرود نعملو أمر exit_form
انا عملت شيء قريب من فكرة التايمر على شاشة ايميلات داخلية على الداتابيز كل ما وصلت رسالة جديدة تظهر اليرت تحكيلو في رسالة جديدة بس بصراحة بتاخد لود عالشاشات

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

السلام عليكم
اخص بشكري الجزيل للاخ hanon و الاخ almare على الافكار الرهيبة
وكذلك جميع الذين ساهموا وبالاخص عبد الله ندى الذي اعطاني الفكرة الرئيسة للحل .
وبالفعل فقد نجحت الطريقة وبفاعلية كبيرة سواء على قاعدة بيانات او ابليكاشن
وانشاء الله اول ماحصل وقت بنزلها مع الشرح
لكي يستفيد منها الاخوة جميعا
وعندي موضوع اود مشاركتكم معاي ومساهماتكم الجميلة والفعالة
وهو عن كيفية قراءة السيريل نمبر حق الهارد ديسك عند الدخول من قبل المستخدم سواء
داتا بيز او ابليكاشن يوزر ..... ارجو مساهمتكم ,
ولكم خالص التحية والتقدير .....
اخوكم الجنتل .

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

السلام عليكم
اخص بشكري الجزيل للاخ hanon و الاخ almare على الافكار الرهيبة
وكذلك جميع الذين ساهموا وبالاخص عبد الله ندى الذي اعطاني الفكرة الرئيسة للحل .
وبالفعل فقد نجحت الطريقة وبفاعلية كبيرة سواء على قاعدة بيانات او ابليكاشن
وانشاء الله اول ماحصل وقت بنزلها مع الشرح
لكي يستفيد منها الاخوة جميعا
وعندي موضوع اود مشاركتكم معاي ومساهماتكم الجميلة والفعالة
وهو عن كيفية قراءة السيريل نمبر حق الهارد ديسك عند الدخول من قبل المستخدم سواء
داتا بيز او ابليكاشن يوزر ..... ارجو مساهمتكم ,
ولكم خالص التحية والتقدير .....
اخوكم الجنتل .

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

  • بعد 14 سنة...

يا جماعه عندي تقريبا نفس المشكله

مطلوب مني  ع شاشة ال ادمن يقدر يعرف كم عدد ساعات عمل  كل موظف

متى دخل متى خرج

وايضا كمية المبيعات 

الافرج والارباح 

كيف يتم ذلك

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

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

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

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

×   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.

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

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

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