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

بتاريخ:

بسم الله الرحمن الرحيم



الأمن في نظم إدارة قواعد البيانات معقد، و القليل من مدراء قواعد البيانات، مدراء النظم، المدراء، و مطوري البرامج يفهمون كيفية تطبيق الأمن في نظم قواعد البيانات.

من خلال Oracle security يمكن عمل التالي:
- التحكم في الوصول إلى عناصر قاعدة البيانات ( Tables, Views, Rows, Columns, … ).
- إنشاء User profiles, Roles, Privileges.
- مراقبة العمليات التي تتم على قاعدة البيانات.

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

الخطوات التي ستتبع في بناء هذا التطبيق

- Create users.


- Create tables.
- Create roles.
- Assign privileges to roles and users through the GRANT command.
- Build main form.
- Build menu.
- Assign roles to menu and sub-menus.
- Create forms that control the user creation and gave them privileges needed.



ملاحظة: سيتم استخدام Oracle8i، Developer6i لبناء هذا النظام.
العرض
إنشاء مستخدم و إعطاءه صلاحيات الاتصال بقاعدة البيانات:
لإنشاء مستخدم لا بد لك من تشغيل برنامج SQL Plus و الذي من خلاله يمكن التعامل مع الـ Oracle.
Start Button – All programs – OraHome81 – Application
Development – SQL Plus.
- بعد تشغيل SQL Plus ادخل اسم المستخدم و كلمة المرور system/manager


- نقوم بإنشاء مستخدم و الذي سيكون مالك للـ Objects التي سيتم انشاؤها مثل الـ Tables. و ذلك بكتابة جملة الـ DDL التالية:

Create User username Identified By password;



و ليكن:

Create user sv identified by sv;



- بعد انشاء المستخدم لا بد من منحه بعض صلاحيات النظام، مثل:

Oracle Default Roles


Role Name Type of Privileges
CONNECT Allows login and ability to create tables, views, synonyms, and database links.
RESOURCE Adds cluster, procedure, and trigger privileges.
DBA Complete authority to manage database and users. Can create users.
SYSOPER Ability to start up and shut down the database.
SYSDBA All privileges available to the DBA role with the ability to create, start up, shut down, and recover a database.



عن طريق كتابة جملة الـ DDL التالية:

Grant role_name/privilege_name To username;


و ليكن:

Grant connect, resource to sv;


- بعد اعطاء المستخدم الصلاحية للاتصال بقاعدة البيانات، نقوم بالاتصال بقاعدة البيانات عن طريق المستخدم الجديد الذي تم انشاؤه باستخدام جملة الـ SQL Plus:

Conn sv/sv;


- صلاحيات استخدام الـ Roles
من خلال الـ SQL Plus نستدعي الملفين:

SQL> @path\FRM60GRT.SQL يستدعى في كل مرة يتم فيها إنشاء مستخدم
SQL> @path\FRM60SEC.SQL يستدعى مرة واحدة بعد تثبيت الاوراكل



إنشاء الجداول
- سنقوم بإنشاء جدولين لهذا المستخدم و ذلك لاختبار إدخال و تحرير البيانات و هما DEPT و EMP، باستخدام جملة الـ DDL التالية:

Create table table_name
( field1 data type(length), field2 data type(length));



و ليكن:

Create table dept 
( deptno number primary key,
dept_name varchar2(40) not null,
loc varchar2(100) not null);




Create table emp
( empno number primary key,
ename varchar2(60) not null,
job varchar2(60),
hiredate date not null,
sal number,
deptno number references dept(deptno));



إنشاء شريط قوائم Menu Bar

- لانشاء Menu Bar لا بد لك من تشغيل الـ Form Builder:
Start Button – All Programs – Oracle Forms6i – Form Builder.
- ننشيء شريط قوائم جديد و نسميه MAIN_MENU مثلاً.
- ثم بالضغط المزدوج على اسم الـ MENU ننتقل الى نافذة MENU EDITOR.
- و هناك نقوم بانشاء القوائم باستخدام الخيارات المتاحة.

- و في كل SUBMENU ندخل الى الـ PL-SQL EDITOR و نكتب الامر التالي:

NULL;



- بعد ذلك نقوم بعمل BUILD للقائمة:
FILE – ADMINISTRATION – COMPILE FILE ( CTRL + T )
- عند عمل BUIL للـ MENU يتم انشاء ملف تنفيذي MAIN_MENU . MMX.
- نقوم بحفظ الملف ( SOURCE FILE ) – MAIN_MENU . FMB.
- بعد ذلك سنقوم بإنشاء الـ FORMS التي سيتم ربطها مع الـ MENU.

إنشاء النماذج FORMS
- سنتطرق هنا إلى إنشاء مجموعة من النماذج و التي تختص بالتعامل مع المستخدم ( كيفية الإنشاء و الجمل البرمجية المكتوبة ). و هي:
NEW_USER.
DROP_USER.
CHANGE_PW.
PRIVILEGES.
- ملاحظة: جميع الـ FIELDS في هذا النموذج هي NON DATABASE ITEMS.

NEW_USER FORM:
- هذه النافذة تستخدم لإنشاء مستخدم جديد و إعطاءه الصلاحيات اللازمة للاتصال بقاعدة
البيانات.

- بعد تصميم النموذج أعلاه نقوم بكتابة الجمل البرمجية اللازمة لإنشاء المستخدم. كما يلي:
CREATE BUTTON
WHEN-NEW-FORM-INSTANCE TRIGGER
هذا الحدث ينطلق عند تشغيل النموذج. و يقوم بتسجيل الخروج من المستخدم الحالي، و من ثم يعمل تسجيل دخول للمستخدم System.

declare
un varchar2(10) := 'system';
pw varchar2(10) := 'manager';
begin
logout;
logon(un,pw);
end;



WHEN-BUTTON-PRESSED TRIGGER
ينطلق هذا الحدث عند الضغط على مفتاح " إنشاء " ، حيث يتم التأكد من ادخال اسم المستخدم، كلمة المرور، و التأكيد على كلمة المرور، و التأكد من تطابق كلمة المرور مع التأكيد. و من ثم انشاء المستخدم حسب الاسم و كلمة المرور المدخلتين.

declare
alertnuser number;
begin
if :un is null then
set_alert_property('alert_nu',alert_message_text,' Enter a user name');
alertnuser := show_alert('alert_nu');
go_item('un');
raise form_trigger_failure;
end if;
if :Pw is null then
set_alert_property('alert_nu',alert_message_text,' Enter a password');
alertnuser := show_alert('alert_nu');
go_item('pw');
raise form_trigger_failure;
end if;
if :confirm is null then
set_alert_property('alert_nu',alert_message_text,' Confirm the password');
alertnuser := show_alert('alert_nu');
go_item('confirm');
raise form_trigger_failure;
end if;
if :Pw != :confirm then
set_alert_property('alert_nu',alert_message_text,' The password doesn''t match the confirm password');
alertnuser := show_alert('alert_nu');
raise form_trigger_failure;
end if;
forms_ddl('create user '||:un||' identified by '||:Pw);

forms_ddl('grant connect,resource to '||:un);
forms_ddl('grant select on FRM50_ENABLED_ROLES to '||:un);
if not form_success then
set_alert_property('alert_nu',alert_message_text,' User name '''||upper(:un)||''' conflicts with another user or role name');
alertnuser := show_alert('alert_nu');
else
set_alert_property('alert_nu',alert_message_text,' User created');
alertnuser := show_alert('alert_nu');
logout;
logon(:global.un,:global.pw);
end if;
end;





PRIVS BUTTON
WHEN-BUTTON-PRESSED TRIGGER
ينطلق هذا الحدث عند الضغط على مفتاح " صلاحيات النظام " ، حيث يقوم بإنشاء Parameter يحمل اسم المستخدم، و يستدعي نموذج " الصلاحيات " حيث يتم تحديد الصلاحيات التي سيتعامل معها المستخدم.

declare
p_username paramlist;
begin
p_username := create_parameter_list('pl');
add_parameter(p_username,'p_un',text_parameter,:un );
new_form('d:\test\privs.fmx',no_rollback,no_query_ only,p_username);
end;



EXIT BUTTON
WHEN-BUTTON-PRESSED TRIGGER
ينطلق هذا الحدث عند الضغط على مفتاح " خروج " ، حيث يقوم بتسجيل الخروج من المستخدم الحالي، و من ثم تسجيل الدخول للمستخدم السابق.

logout;
logon(:global.un,:global.pw);
exit_form;



DROP_USER FORM:
- تستخدم هذه النافذة لحذف مستخدم.

DROP BUTTON
WHEN-BUTTON-PRESSED TRIGGER
ينطلق هذا الحدث عند الضغط على مفتاح " حذف "، حيث يقوم بحذف المستخدم الذي تم إدخاله في حقل " اسم المستخدم ". ويقوم بحذف الصلاحيات المخزنه في جدول Privs الذي سنتطرق إليه فيما بعد.

declare
alertnuser number;
begin
if :un is null then
set_alert_property('alert_du',alert_message_text,' Enter a user name');
alertnuser := show_alert('alert_du');
raise form_trigger_failure;
end if;
forms_ddl('drop user '||:un);
if not form_success then
set_alert_property('alert_du',alert_message_text,' User '''||upper(:un)||''' does not exist');
alertnuser := show_alert('alert_du');
else
set_alert_property('alert_du',alert_message_text,' User dropped');
alertnuser := show_alert('alert_du');
delete from scott.privs
where un = :un;
commit;
clear_form;
end if;
end;




CHANGE_PW FORM
- تستخدم هذه النافذة حتى يغير المستخدم كلمة مروره كل فترة.


CHANGE BUTTON
WHEN-BUTTON-PRESSED TRIGGER
ينطلق هذا الحدث عند الضغط على مفتاح " تغيير " ، حيث يقوم بالتأكد من ادخال كلمة المرور الحالية و الكلمة الجديدة و التأكيد، و من ثم يغير كلمة المرور حسب الكلمة المدخلة.

declare
alertcpw number;
begin
if :un is null then
set_alert_property('alert_cpw',alert_message_text, 'Enter a user name');
alertcpw := show_alert('alert_cpw');
go_item('un');
raise form_trigger_failure;
end if;
if :current_pw is null then
set_alert_property('alert_cpw',alert_message_text, 'Enter a current password');
alertcpw := show_alert('alert_cpw');
go_item('current_pw');
raise form_trigger_failure;
end if;
if :new_pw is null then
set_alert_property('alert_cpw',alert_message_text, 'Enter a new password');
alertcpw := show_alert('alert_cpw');
go_item('new_pw');
raise form_trigger_failure;
end if;
if :confirm is null then
set_alert_property('alert_cpw',alert_message_text, 'Confirm the password');
alertcpw := show_alert('alert_cpw');
go_item('confirm');
raise form_trigger_failure;
end if;

if :new_pw != :confirm then
set_alert_property('alert_cpw',alert_message_text, 'The password doesn''t match the confirm password');
alertcpw := show_alert('alert_cpw');
raise form_trigger_failure;
end if;
forms_ddl('alter user '||:un||' identified by '||:new_pw);
if not form_success then
set_alert_property('alert_cpw',alert_message_text, 'User name '''||upper(:un)||''' does not exist');
alertcpw := show_alert('alert_cpw');
else
set_alert_property('alert_cpw',alert_message_text, 'User altered');
alertcpw := show_alert('alert_cpw');
:global.pw := :new_pw;
clear_form;
logout;
logon(:global.un,:global.pw);
end if;
end;



PRIVILEGES FORM
- تستخدم هذه النافذة لمنح مستخدم جديد صلاحيات استخدام النظام من قِبل مدير النظام.


- هذه النافذة تحتوي على DATABASE BLOCK ، حيث يتم حفظ الصلاحيات في جدول تم إنشاؤه. ( هذا الجدول ننشئه تحت المستخدم SV الذي تم انشاؤه مسبقاً )
جملة انشاء الجدول الخاص بنافذة PRIVILEGES :

create table privs
( un varchar2(50),
log_out number(1),
change_pw number(1),
new_user number(1),
drop_user number(1),
privs number(1),
employ number(1),
department number(1),
calc number(1));




WHEN-BUTTON-PRESSED TRIGGER
ينطلق هذا الحدث عند تشغيل النموذج، و يقوم بتأكد من وجود قيمة للـ Parameter الذي تم تمريره من النموذج New User، اذا كان الـ Parameter لا يحمل قيمة اجعل حالة النموذج " ادخال استعلام " اذا أردت الاستعلام عن صلاحيات مستخدم مخزن مسبقاً، أما اذا كان الـ Parameter يحمل قيمة يتم اسناد قيمة الـ Parameter الى اسم المستخدم لكي لا يتم كتابته مرة اخرى، و من ثم يتم تحديد الصلاحيات.

if :parameter.p_un is null then
enter_query;
else
:un := :parameter.p_un;
end if;




LOG_OUT CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على تسجيل خروج، ويقوم بمنح صلاحية تشغيل نافذة " تسجيل الدخول " أو سحبها.

check_user;
if checkbox_checked('log_out') then
forms_ddl('grant log_out to '||:un);
else
forms_ddl('revoke log_out from '||:un);
end if;



CHANGE_PW CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على تغيير كلمة المرور، ويقوم بمنح صلاحية تشغيل نافذة " تغيير كلمة المرور " أو سحبها.

check_user;
if checkbox_checked('change_pw') then
forms_ddl('grant change_pw to '||:un);
else
forms_ddl('revoke change_pw from '||:un);
end if;



NEW_USER CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على انشاء مستخدم جديد، ويقوم بمنح صلاحية تشغيل نافذة " مستخدم جديد " أو سحبها.

check_user;
if checkbox_checked('new_user') then
forms_ddl('grant new_user to '||:un);
else
forms_ddl('revoke new_user from '||:un);
end if;



DROP_USER CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على حذف المستخدم، ويقوم بمنح صلاحية تشغيل نافذة " حذف مستخدم " أو سحبها.

check_user;
if checkbox_checked('drop_user') then
forms_ddl('grant drop_user to '||:un);
else
forms_ddl('revoke drop_user from '||:un);
end if;



PRIVS CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على منح الصلاحيات، ويقوم بمنح صلاحية تشغيل نافذة " صلاحيات النظام " أو سحبها.

check_user;
if checkbox_checked('privs') then
forms_ddl('grant privs to '||:un);
else
forms_ddl('revoke privs from '||:un);
end if;



EMPLOY CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على الموظفين، ويقوم بمنح صلاحية تشغيل نافذة " الموظفين " و صلاحية كاملة على الجدول Emp أو سحبها.

check_user;
if checkbox_checked('employ') then
forms_ddl('grant employ to '||:un);
forms_ddl('grant all on scott.emp to '||:un);
else
forms_ddl('revoke employ from '||:un);
forms_ddl('revoke all on scott.emp from '||:un);
end if;



DEPARTMENT CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على الاقسام، ويقوم بمنح صلاحية تشغيل نافذة " الاقسام " و صلاحية كاملة على الجدول Deptأو سحبها.

check_user;
if checkbox_checked('departmnt') then
forms_ddl('grant departmnt to '||:un);
forms_ddl('grant all on scott.dept to '||:un);
else
forms_ddl('revoke departmnt from '||:un);
forms_ddl('revoke all on scott.dept from '||:un);
end if;



CALC CHECKBOX
WHEN-CHECKBOX_CHECKED TRIGGER
ينطلق هذا الحدث عند عمل Check أو Uncheck على الآلة الحاسبة، ويقوم بمنح صلاحية تشغيل نافذة " الآلة الحاسبة " أو سحبها.

check_user;
if checkbox_checked('calc') then
forms_ddl('grant calc to '||:un);
else
forms_ddl('revoke calc from '||:un);
end if;



SAVE BUTTON
WHEN-BUTTON-PRESSED TRIGGER
يقوم بعمل حفظ للنموذج.

Commit;



- سبق و تم انشاء Two tables و هما Emp, Dept ، و للتعامل مع هذه الجداول بشكل أسهل نقوم بإنشاء نموذجين بالاعتماد على الجدولين المذكورين.

انشاء الـ Roles

- A role :
A role is a named collection of privileges. A role may be assigned to a user, but a user cannot be assigned to a role. For example, users can log into the database; roles cannot. A user can own objects while a role cannot. The function of a role is to group logically associated privileges and allow those privileges to be passed to a user by referencing the role.
هي عبارة عن مجموعة من الصلاحيات، يمكن إسنادها للمستخدم.
- لإنشاء Role يجب أن يملك المستخدم ( SV ) صلاحية لعمل ذلك أو يمكن الاتصال عن طريق المستخدم system/manager و من هناك يمكن عمل ذلك.

- لإعطاء الصلاحية للمستخدم ( SV ) بإنشاء Roles :

Conn system/manager ( SQL Plus
بداخل نافذة )

Grant dba to sv; ( DBA is a ROLE )



- الآن سنقوم بإنشاء الـ Roles حسب الـ Menu Module الذي أنشأناه سابقاً.

- يوجد في الـ Menu أعلاه قائمتين، مجموع الأوامر أو الخيارات في القائمتين يساوي 8.
إذاً يمكننا إنشاء 8 Roles. و لتكن أسماء الـ Roles كالتالي:

- Log_out.


- New_user.
- Drop_user.
- Change_pw.
- Privs.
- Employ.
- Departmnt.
- Calc.



- كما ذكرنا سالفاً يمكن إنشاء الـ Roles من خلال الاتصال بالنظام عن طريق
system/manager أو منح المستخدم SV الـ DBA Role و إنشاءها من هناك.


- جملة انشاء الـ Role:

Create role role_name;



- Create role Log_out;
- Create role New_user;
- Create role Drop_user;
- Create role Change_pw;
- Create role Privs;
- Create role Employ;
- Create role Departmnt;
- Create role Calc;


- الـ ( Employ, Departmnt Roles ) يتم منحهم للمستخدم الذي
سيتصل بقاعدة البيانات لادخال، تعديل الجدولين Emp, Dept لذلك سنقوم بمنح
Employ, Departmnt Roles صلاحيات عمل كل شيء على هذين الجدولين
و بالتالي يتم منحهم للمستخدم:

Conn sv/sv;
Grant all on emp to employ;
Grant all on dept to department;



ربط الـ Menu مع الـ Form
- نقوم بفتح الـ Main_form الذي تم إنشاؤه مسبقاً.
- من نافذة الـ Object Navigator ندخل الى خصائص ( Property Palette ) الخاصة
بالـ Form Module .
- في خاصية Menu Module نضع إسم الـ Menu مع مسارها.
- هكذا نكون قد ربطنا الـ Menu مع الـ Form.
إسناد الـ Roles الى الـ Menu

- نقوم بتشغيل الـ Form builder و نستدعي الملف Main_Menu .
- من خصائص الـ Main_Menu، نجعل الخاصية USE SECURITY = YES،
و نُدخل في الخاصية MODULE ROLES أسماء الـ Roles التي أنشأناها مسبقاً و هي:

Log_out. New_user.


Drop_user. Change_pw.
Privs. Employ.
Departmnt. Calc.



- كما نعلم أن الـ Menu يوجد بها Submenus و لا بد من توزيع الـ Roles عليها.
- Exit القائمة الفرعية الاولى:
بما أن الامر Exit يستخدم من جميع المستخدمين، نقوم بإسناد جميع الـ Roles لها.
و ذلك بالدخول الى خصائصها ( Property Palette ):
الخاصية Item Roles : نختار منها جميع الـ Roles.
- System القائمة الفرعية الثانية:
نُسند إليها الـ Roles المعنية بها و هي:
Log_out. New_user.
Drop_user. Change_pw.
Privs.
- Windows القائمة الفرعية الثالثة:
نُسند إليها الـ Roles المعنية بها و هي:
Employ. Departmnt.
Calc.


ربط الـ Forms مع الـ Menu

- من نافذة الـ Object Navigator في الـ Form Builder نقوم بإستدعاء الملف
Main_Menu.mmb.

- النماذج التي سنربطها مع القائمة:
New_User Drop_User Change_Pw
Privs Employee Department

- لنأخذ مثلاً الـ Menu Item New User ، ندخل الى الـ PL/SQL Editor
و نكتب ما يلي:

open_form('d:\test\new_user.fmx');



open_form : اجراء يستخدم لاستدعاء نموذج مع كتابة مسار الملف
المراد استدعاءه.

- و نكرر العملية مع كل الـ Menu Items مع تغيير اسم الملف.


- بالنسبة للـ Log_out Menu Item ، تستخدم لعمل تسجيل خروج من النظام.

declare
un varchar2(40);
pw varchar2(40);
begin
logout;
logon_screen; 
un := get_application_property(username);
pw := get_application_property(password);
logon(un,pw);
:global.un := un;
:global.pw := pw;
copy(upper(un),'main_blk.u');
replace_menu('d:\test\main_menu.mmx');
end;




- بالنسبة للـ Calc Menu Item ، عند اختيارها تفتح نافذة الآلة الحاسبة التابعة
لنظام التشغيل windows.

Host('c:\windows\system32\calc.exe’);


Host : Executes an indicated operating system command.

بعض المفاهيم منقولة للامانة العليمة.
واخيرا وليس آخرا....اتمنى الاستفادة للجميع...
بالتوفيق

تم تعديل بواسطة PALI.ORACLE

  • الردود 48
  • المشاهدات 26.6k
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

بتاريخ:

ماشاء الله

مجهود يستحق الإشادة

بارك الله فيك
وفتح لك أبواب علمه

بتاريخ:

السلام عليكم
شرح جميل ووافى
بارك الله فيك وزادك من علمك
ونفعك بما علمك

  • بعد 4 شهور...
بتاريخ:
  • كاتب الموضوع

أشكرك أخي الجبالي على مرورك الكريم..
تحياتي

بتاريخ:

الاخوة المشرفين والادارة الكرام

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

سؤال واحد فقط على هذا الموضوع موجه للمشرفين والادارة واتمنى فعلا ان يتم تنفيذه:

تثبيت هذه المشاركة لما فيها من معلومات قيمة جدا وتفيدنا في عملنا.

وشكرا

بتاريخ:

السلام عليكم ورحمة الله

الأخ / احمد

شكرا لك على التألق والجهد المتميز بالمنتديات ... وجزاك الله خيرا

الأخ / rose_4_pretty

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

سيتم التثبيت

تقبل تحياتى

بتاريخ:
  • كاتب الموضوع
الاخوة المشرفين والادارة الكرام

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

سؤال واحد فقط على هذا الموضوع موجه للمشرفين والادارة واتمنى فعلا ان يتم تنفيذه:

تثبيت هذه المشاركة لما فيها من معلومات قيمة جدا وتفيدنا في عملنا.

وشكرا


العفو أخي معتز..
وأشكرك على مرورك الكريم..
تحياتي

السلام عليكم ورحمة الله

الأخ / احمد

شكرا لك على التألق والجهد المتميز بالمنتديات ... وجزاك الله خيرا

الأخ / rose_4_pretty

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

سيتم التثبيت

تقبل تحياتى



أشكرك أخي أمجد...
تحياتي..
بتاريخ:

مبارك التثبيت اخي احمد

وبالتوفيق دوما باذن الله

بتاريخ:

FRM-10256 : المستخدم غير معتمد لتشغيل قائمة FORM BUILDER



حاولت أطبق مثال صغير ...ظهرت لي هذه المشكلة .... شو السبب :blink:

بتاريخ:

[وسط]


ممكن توضيح ماذا فعلت ؟؟


نعم أخي ,,, قمت بإنشاء رول وقمت بمنح هذه الرول لمستخدم , وقمت بإضافة الرول فى المنيو سكيرتي وعند التنفيذ ظهرت هذه الرسالة.


[/وسط]

بتاريخ:

الصحيح انه حاجه متعوب عليها شكرا على الشرح
مهندس احمد

بتاريخ:

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

بتاريخ:

موضوع جميل جدا أخي أحمد
يسلموا الأيادي
هذا ما أ ريده بالضبط في مشروعي وكنت بصدد نشر موضوع بخصوصه ..
أرحتني كثيرا
شكرا

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


أشكرك حبيبي ماهر...



موضوع جميل جدا أخي أحمد
يسلموا الأيادي
هذا ما أ ريده بالضبط في مشروعي وكنت بصدد نشر موضوع بخصوصه ..
أرحتني كثيرا
شكرا


لا شكر على واجب أخي العزيز..
تحياتي

تم تعديل بواسطة PALI.ORACLE

بتاريخ:

عااااااااااااااااشت ايييييييييدك يا وردة على الشرح

  • بعد 2 أسابيع...
بتاريخ:

مشكور على الشرح المفصل بس عندي المشكله الاتيه عند ادخال يوزر جديد ادخل اسم اليوزر وكلمه السر والتاكيد وبعدين اضغط على ادخال الصلاحيات واختار واخزن بس ماهو الكود الي يرجعني لفورم ادخال اليوزر حتى اضغط creat user
ولو انت شغلك وشرحك لا يعلى عليه بس عندي ملاحضه وهو عندالجملهlog in يجب ادخال اسم الداتا بيس الموجود بيها اليوزر وبارك الله بيك افدتنا كثيرا

بتاريخ:
  • كاتب الموضوع
مشكور على الشرح المفصل بس عندي المشكله الاتيه عند ادخال يوزر جديد ادخل اسم اليوزر وكلمه السر والتاكيد وبعدين اضغط على ادخال الصلاحيات واختار واخزن بس ماهو الكود الي يرجعني لفورم ادخال اليوزر حتى اضغط creat user
ولو انت شغلك وشرحك لا يعلى عليه بس عندي ملاحضه وهو عندالجملهlog in يجب ادخال اسم الداتا بيس الموجود بيها اليوزر وبارك الله بيك افدتنا كثيرا


السلام عليكم
بالنسبه للسؤال الاول ممكن توضيح اكتر ؟؟
والملاحظة صحيحة..اشكرك..
  • بعد 3 أسابيع...
بتاريخ:

يعني اكتب اليوزر احمد واكتب كلمه السر وبعدين اظغط على دكمه خلق يوزر او دكمه اعطاء الصلاحيات
المهم اريد الكود الي يرجعني الى الفورم الي كنت بيها قبل ظغط دكمه اعطاء الصلاحيات وهي فورم خلق يوزر

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

هل تقصدين

open_form('');

بتاريخ:

الف شكر لك أخي ,,,
موضوع ثري متكامل
في خاصية مهمة لأي نظام ,,,,

أنا لي فترة أقوم بناء نظام متكامل لأدارة المشتشفيات الخاصة ,,,

قطعت مرحلة منه ,,,,

و كنت في حاجة لموضوع الأمن في هذا النظام ,, فوجدت موضوع الرائع

.
.

الله يجزاك خير ,,,,

.
.
سيتم الرجوع له ,, قريبا , و الأستفاده منه

.
.

تحيتي

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

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

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

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

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

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.