بتاريخ: 27 مايو 200917 سنة comment_158311 السلام عليكم الاعضاء الكرامأود الاستفسار عن الفكرة وكذلك الطريقة لجعل البرنامج يتوقف بعد مدة معينة(ايام ,اسابيع) أو بعد ادخال عدد معين من الحقول كمايفعل بعض المبرمجين في البرامج التجريبية.وجزاكم الله خيرا تم تعديل 27 مايو 200917 سنة بواسطة man alman تقديم بلاغ
بتاريخ: 27 مايو 200917 سنة comment_158331 يمكنك ذلك فعند الدخول على البرنامج ممكن خلال فانكشن تحصل على عدد السجلات في الاسكيما فلو مثلا زادت عن رقم حدده انت يتم الخروج طبعا باستخدم 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; / تقديم بلاغ
بتاريخ: 30 مايو 200917 سنة كاتب الموضوع comment_158603 شكرا جزيلا اخي مصطفى ولكن ماذا عن موضوع التوقف في تاريخ معين سمعت ان يمكن من خلال timer هل هذا صحيح؟؟؟مع خالص التحايا تقديم بلاغ
بتاريخ: 9 ديسمبر 200916 سنة comment_178717 الاخ 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 ديسمبر 200916 سنة بواسطة orefai تقديم بلاغ
بتاريخ: 9 ديسمبر 200916 سنة comment_178719 اما بالنسبة لحماية البرنامج من النسخ عن طريق التشييك على ملف موجود في مكان معين على السيرفر فهذا شرح لخطوات هذه العملية سننشئ ملف نصي عادي و نكتب فيه نص معين يمكنك فيما بعد اجراء بعض العمليات علية ، ونسميه باسم 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 ديسمبر 200916 سنة بواسطة orefai تقديم بلاغ
بتاريخ: 9 ديسمبر 200916 سنة comment_178731 اما بالنسبة للآلية حماية البرنامج عن طريق التشييك على السيريال والموديل الخاص بالهارد ديسك فبامكانك فتح الرابط التالي http://www.araboug.org/ib/index.php?showtopic=30598 وهي مشاركة من الزميل rmoplusx و الطريقة مجربة و اتمنى ان تعم الفائدةوتقبلو تحياتي تقديم بلاغ
بتاريخ: 9 ديسمبر 200916 سنة comment_178732 أما بالنسبة لآلية حماية البرنامج عن طريق التأكد من عدم تغيير الداتابيز و تحميلها إلى داتابيز اخرى فإليك هذه الفكرة من مشاركة الأخ 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 ديسمبر 200916 سنة بواسطة orefai تقديم بلاغ
بتاريخ: 12 ديسمبر 200916 سنة comment_178989 [وسط]الاخوة الافاضل اتمنى المزيد من الافكار و الابداعات و المشاركات الفعالةوتقبلو تحياتي [/وسط] تقديم بلاغ
بتاريخ: 14 مايو 20179 سنة comment_286729 الاخ 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 تاريخ غير تاريخ الجهاز ولا السيرفر علشان نشيك بيه تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.