الانتقال إلى المحتوى
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

بتاريخ:

السلام عليكم الاعضاء الكرام
أود الاستفسار عن الفكرة وكذلك الطريقة لجعل البرنامج يتوقف بعد مدة معينة(ايام ,اسابيع) أو بعد ادخال عدد معين من الحقول كمايفعل بعض المبرمجين في البرامج التجريبية.
وجزاكم الله خيرا

تم تعديل بواسطة man alman

بتاريخ:

يمكنك ذلك
فعند الدخول على البرنامج ممكن خلال فانكشن تحصل على عدد السجلات في الاسكيما فلو مثلا زادت عن رقم حدده انت يتم الخروج طبعا باستخدم 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;
/

بتاريخ:

داله ممتازه

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

شكرا جزيلا اخي مصطفى ولكن ماذا عن موضوع التوقف في تاريخ معين سمعت ان يمكن من خلال timer هل هذا صحيح؟؟؟
مع خالص التحايا

  • بعد 6 شهور...
بتاريخ:

الاخ 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

بتاريخ:

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


فهذا شرح لخطوات هذه العملية

سننشئ ملف نصي عادي و نكتب فيه نص معين يمكنك فيما بعد اجراء بعض العمليات علية ، ونسميه باسم TXT_1
ونحفظه في باث معين و لنفرض انه على السي مباشرة
ثم بعد ذلك نحاول فتح الملف و القراءة منه في الفورم في TRIGGER WHEN-NEW-FORM-INSTANCE
DECLARE
  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;



هذا و أرجو من الجميع التفاعل , و بانتظار مشاركاتكم و افكاركم و ابداعاتكم ايها الاخوة الأفاضل فيما يتعلق في حماية البرنامج
ولي عندكم طلب بسيط : ياحبذا ان تكون المشاركات فيها شئ من التفصيل و تقبلو تحياتي

تم تعديل بواسطة orefai

بتاريخ:

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



http://www.araboug.org/ib/index.php?showtopic=30598

وهي مشاركة من الزميل rmoplusx و الطريقة مجربة و اتمنى ان تعم الفائدة

وتقبلو تحياتي

بتاريخ:

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

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;


تم تعديل بواسطة orefai

بتاريخ:


[وسط]الاخوة الافاضل اتمنى المزيد من الافكار و الابداعات و المشاركات الفعالة

وتقبلو تحياتي

:(

[/وسط]

  • بعد 7 سنة...
بتاريخ:

الاخ 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 تاريخ غير تاريخ الجهاز ولا السيرفر علشان نشيك بيه

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

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

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

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

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

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.