man alman بتاريخ: 27 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 27 مايو 2009 (معدل) السلام عليكم الاعضاء الكرامأود الاستفسار عن الفكرة وكذلك الطريقة لجعل البرنامج يتوقف بعد مدة معينة(ايام ,اسابيع) أو بعد ادخال عدد معين من الحقول كمايفعل بعض المبرمجين في البرامج التجريبية.وجزاكم الله خيرا تم تعديل 27 مايو 2009 بواسطة man alman اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mustafagamiel بتاريخ: 27 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 27 مايو 2009 يمكنك ذلك فعند الدخول على البرنامج ممكن خلال فانكشن تحصل على عدد السجلات في الاسكيما فلو مثلا زادت عن رقم حدده انت يتم الخروج طبعا باستخدم if----then وتضعه في لحظة التأكد مثلا من ان اسم المستخدم والباسورد صحيحية والدخول الى البرنامج طبعا ده في الفورموخذ هذه الفانكشن التي بتجيب عدد السجلات في الاسكيما CREATE OR REPLACE FUNCTION SCOTT.get_count_all RETURN NUMBER IS CURSOR c1 IS SELECT table_name FROM user_tables; v_sql LONG; v_count NUMBER := 0; v_count_all NUMBER := 0; BEGIN FOR rec IN c1 LOOP v_sql := 'SELECT COUNT(1) FROM ' || rec.table_name; EXECUTE IMMEDIATE v_sql INTO v_count; v_count_all := v_count_all + v_count; END LOOP; RETURN v_count_all; EXCEPTION WHEN OTHERS THEN RETURN -1; END; / اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orahamdi بتاريخ: 27 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 27 مايو 2009 داله ممتازه اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
man alman بتاريخ: 30 مايو 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 30 مايو 2009 شكرا جزيلا اخي مصطفى ولكن ماذا عن موضوع التوقف في تاريخ معين سمعت ان يمكن من خلال timer هل هذا صحيح؟؟؟مع خالص التحايا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orefai بتاريخ: 9 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2009 (معدل) الاخ MAN ALMANالله يعطيك العافية يبدو ان هناك موضوع مشترك نهتم به نحن الاثنين و ساكون انشالله معك اول باول فور الحصول على المستجدات التي تتعلق بحماية البرنامج من النسخاما عن طريق ملفات الريجيستري او عن طريق السيريال الخاص باللوحة الام او الخاص بالهاردديسك او عن طريق التشييك على ملف معين موجود على السيرفر .. الخ و سأوافيك بكل ما أصل اليه في هذا الموضوع ، و ارجو منك و من الاخوة اللذين سبقونا في هذا المجال تزويدنا بمعلومات تفصيلية عن هذه الجزيئيات بالنسبة لتوقف البرنامج عن العمل بعد تاريخ معين توصلت لحل بسيط و فعال وانشالله يكون مخرج لسؤالكفي البداية ننشئ فيه حقلين الاول نخزن فيه التاريخ الذي سيتوقف البرنامج من بعدهوالثاني حقل نعمل UPDATE اذا دخل هذا التاريخ ليصبح 'ACTIVE' في مرحلة معينة CREATE TABLE CLOSE_SYSTEM ( CLOSE_DATE DATE, STATUS VARCHAR2(15) ); وعند فتح البرنامج تعمل تشييك بسيط على TRIGGER WHEN-NEW-FORM-INSTANCE IF SYSDATE >= CLOSE_DATE THEN UPDATE CLOSE_SYSTEM SET STATUS = 'ACTIVE'; COMMIT; EXIT_FORM; RAISE Form_Trigger_Failure; -- -- -- -- وبالامكان ايقاف البرنامج ايضا في حالة محاولة ارجاع تاريخ السيرفر الى الخلف كمحاولة للتحايل للاستفادة من البرنامج قدر الامكان DECLARE VARIABLE varchar2(80); BEGIN BEGIN SELECT STATUS INTO VARIABLE FROM CLOSE_SYSTEM; EXCEPTION WHEN OTHERS THEN EXIT_FORM; RAISE Form_Trigger_Failure; END; IF VARIABLE = 'ACTIVE' THEN EXIT_FORM; RAISE Form_Trigger_Failure; --- --- --- END IF; END; وبامكانك ان تطور الكود و تظهر بعض الرسائل الخاصة بك ، وإليك هذه الفكرة بامكانك حذف ملفات الـ FMX من جهاز السيرفر DECLARE VARIABLE varchar2(80); . . . IF VARIABLE = 'ACTIVE' THEN .. .. HOST('DEL *.FMX'); .. .. EXIT_FORM; RAISE Form_Trigger_Failure; --- --- --- END IF; END; وتقبل تحياتي تم تعديل 9 ديسمبر 2009 بواسطة orefai اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orefai بتاريخ: 9 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2009 (معدل) اما بالنسبة لحماية البرنامج من النسخ عن طريق التشييك على ملف موجود في مكان معين على السيرفر فهذا شرح لخطوات هذه العملية سننشئ ملف نصي عادي و نكتب فيه نص معين يمكنك فيما بعد اجراء بعض العمليات علية ، ونسميه باسم TXT_1 ونحفظه في باث معين و لنفرض انه على السي مباشرةثم بعد ذلك نحاول فتح الملف و القراءة منه في الفورم في TRIGGER WHEN-NEW-FORM-INSTANCEDECLARE in_file text_IO.file_type; linebuf VARCHAR2 (80); BEGIN in_file := text_io.fopen ('c:\TXT_1', 'r'); TEXT_IO.Get_line (in_file, linebuf); :BLOCK1.ITEM1 := :BLOCK1.ITEM1 || linebuf || CHR (20); EXCEPTION WHEN OTHERS THEN EXIT_FORM; RAISE Form_Trigger_Failure; END; هذا و أرجو من الجميع التفاعل , و بانتظار مشاركاتكم و افكاركم و ابداعاتكم ايها الاخوة الأفاضل فيما يتعلق في حماية البرنامج ولي عندكم طلب بسيط : ياحبذا ان تكون المشاركات فيها شئ من التفصيل و تقبلو تحياتي تم تعديل 9 ديسمبر 2009 بواسطة orefai اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orefai بتاريخ: 9 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2009 اما بالنسبة للآلية حماية البرنامج عن طريق التشييك على السيريال والموديل الخاص بالهارد ديسك فبامكانك فتح الرابط التالي http://www.araboug.org/ib/index.php?showtopic=30598 وهي مشاركة من الزميل rmoplusx و الطريقة مجربة و اتمنى ان تعم الفائدةوتقبلو تحياتي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orefai بتاريخ: 9 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 9 ديسمبر 2009 (معدل) أما بالنسبة لآلية حماية البرنامج عن طريق التأكد من عدم تغيير الداتابيز و تحميلها إلى داتابيز اخرى فإليك هذه الفكرة من مشاركة الأخ mageed_ahmed منقولة بتصرف ويشترط أن يكون للمستخدم صلاحية select from table : V$databaseأولا يجب حفظ الكود تماما بحيث لا يصل ليد احد (عمل كل الاحتياطات اللازمة لمنع نسخ SOURCE CODE LIKE FMB's)ثانيا قم باختيار DB ID من جدول V$databaseهذا الرقم لا يتكرر في اي قاعدة بيانات بضمان اوراكل في شاشة login قبل الدخول اختبر القيمة اذا كانت هي نفس قيمتها الفعليه دعه يدخل وان لم تتحقق امنعه من الدخولواليك المثال التاليDECLARE l_dbid NUMBER; l_created DATE; l_DB_UNIQUE_NAME VARCHAR2 (30); BEGIN SELECT DBID, TO_CHAR (CREATED, 'dd/mm/yyyy'), DB_UNIQUE_NAME INTO l_dbid, l_created, l_DB_UNIQUE_NAME FROM v$database; IF (l_dbid <> 9874568215)AND (l_created <> '15/09/2009')AND (l_DB_UNIQUE_NAME <> 'ORCL') THEN -- -- -- :BLOCK1.ITEM1 := 'Un-utharized copy of databse'; EXIT_FORM; RAISE FORM_TRIGGER_FAILURE; -- -- -- END IF; END; تم تعديل 9 ديسمبر 2009 بواسطة orefai اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
orefai بتاريخ: 12 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 12 ديسمبر 2009 [وسط]الاخوة الافاضل اتمنى المزيد من الافكار و الابداعات و المشاركات الفعالةوتقبلو تحياتي [/وسط] اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
prgyasser بتاريخ: 14 مايو 2017 تقديم بلاغ مشاركة بتاريخ: 14 مايو 2017 الاخ MAN ALMAN الله يعطيك العافية يبدو ان هناك موضوع مشترك نهتم به نحن الاثنين و ساكون انشالله معك اول باول فور الحصول على المستجدات التي تتعلق بحماية البرنامج من النسخ اما عن طريق ملفات الريجيستري او عن طريق السيريال الخاص باللوحة الام او الخاص بالهاردديسك او عن طريق التشييك على ملف معين موجود على السيرفر .. الخ و سأوافيك بكل ما أصل اليه في هذا الموضوع ، و ارجو منك و من الاخوة اللذين سبقونا في هذا المجال تزويدنا بمعلومات تفصيلية عن هذه الجزيئيات بالنسبة لتوقف البرنامج عن العمل بعد تاريخ معين توصلت لحل بسيط و فعال وانشالله يكون مخرج لسؤالك في البداية ننشئ فيه حقلين الاول نخزن فيه التاريخ الذي سيتوقف البرنامج من بعده والثاني حقل نعمل UPDATE اذا دخل هذا التاريخ ليصبح 'ACTIVE' في مرحلة معينة CREATE TABLE CLOSE_SYSTEM ( CLOSE_DATE DATE, STATUS VARCHAR2(15) ); وعند فتح البرنامج تعمل تشييك بسيط على TRIGGER WHEN-NEW-FORM-INSTANCE IF SYSDATE >= CLOSE_DATE THEN UPDATE CLOSE_SYSTEM SET STATUS = 'ACTIVE'; COMMIT; EXIT_FORM; RAISE Form_Trigger_Failure; -- -- -- -- وبالامكان ايقاف البرنامج ايضا في حالة محاولة ارجاع تاريخ السيرفر الى الخلف كمحاولة للتحايل للاستفادة من البرنامج قدر الامكان DECLARE VARIABLE varchar2(80); BEGIN BEGIN SELECT STATUS INTO VARIABLE FROM CLOSE_SYSTEM; EXCEPTION WHEN OTHERS THEN EXIT_FORM; RAISE Form_Trigger_Failure; END; IF VARIABLE = 'ACTIVE' THEN EXIT_FORM; RAISE Form_Trigger_Failure; --- --- --- END IF; END; وبامكانك ان تطور الكود و تظهر بعض الرسائل الخاصة بك ، وإليك هذه الفكرة بامكانك حذف ملفات الـ FMX من جهاز السيرفر DECLARE VARIABLE varchar2(80); . . . IF VARIABLE = 'ACTIVE' THEN .. .. HOST('DEL *.FMX'); .. .. EXIT_FORM; RAISE Form_Trigger_Failure; --- --- --- END IF; END; وتقبل تحياتي السلام عليكم استاذ orefaiلكن نفترض ان المستخدم ادخل تاريخ اكبر من تاريخ غلق البرنامج بالخطا وقتها البرنامج يقفل و دى كارثة المفترض ان احنا نفكر فى طريقة نعد فيها عدد الايام المتاحة لاستخدام البرنامج و بعدها نغلق البرنامج( مثلا البرنامج شغال لمدة شهر يعنى 30 يوم) يعنى احنا محتاجين جدول فيه تاريح بداية الترخيص و نهايته و محتاجين field تاريخ غير تاريخ الجهاز ولا السيرفر علشان نشيك بيه اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.