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

بتاريخ:

السلام عليكم ............................................

قد تحتاج لتغير كلمات المرور بشكل دوري للمستخدمين

في هذه الحالة لنفرض انك الشخص المكلف بعملية تغير كلمات المرور ولنفرض ان هنالك مجموعة كبيرة من المستخدمين في قاعدة البيانات (العيوب) :

1-ستقوم بالتبديل يدويا وهذا متعب .
2-إهدار للوقت .
غير ذلك من العيوب ..... .

هنا وقفت وفكرت في عمل فورم تقوم بتغير كلمة المرور آليا حيث تؤدي وظائف عكس الأحداث السابقة .

المتطلبات :

1-جدول للمستخدمين .
يحتوي على (اسم المستخدم + كلمة المرور الحالية + كلمة المرور السابقة) .
2-FUNCTION .
تزيل كلمة المرور السابقة .
3-.PROCEDURE
يمنح كلمة المرور الجديدة .

آلية تبديل كلمة المرور التي استخدمتها :

من المعروف أن كلمة المرور تحتوي دائما على (ارقام وحروف وبعض الرموز المسموحة بها) فلذلك عملت السلسة التالية حيث يتم من خلالها منح كلمات المرور.
آليا ('abcdefghijklmnopqrstuvwxyz1234567890') لنسمي هذه السلسة بـX
السؤال الآن كيف تتم عملية التبديل آليا ؟؟
الطريقة سهلة لأن المطلوب تبديل كلمة المرور مع شرط عدم حصول المستخدم عليها مرة أخرى
مثال :
أثناء إنشاء مستخدم ليكن : SCOTT
وكلمة مرور :TIG107ER
سوف يتم إزالة الحروف من السلسة X

post-30456-1175863649_thumb.jpg

بعد ذلك ستحصل على سلسة جديدة ومن خلال هذه السلسة سيتم إعطاء المستخدم كلمة المرور الجديدة هذا مختصر آلية التبديل وبناء على ذلك عملت function التالية
والتي بدورها إزالة حروف كلمة المرور السابقة .

FUNCTION


FUNCTION erase_last_pass(pass VARCHAR2) RETURN char
IS
NEW_PASSWORD VARCHAR2(50(;
main_password  varchar2(50):=('hfgacbedlikjpnmowqrzsxyvut8142367950');
BEGIN
new_password:= replace(translate(main_password  ,pass,'________'),'_');

RETURN (NEW_PASSWORD);

END;



procedure:

يأتي الآن وظائف procedure الذي يمنح المستخدم كلمة المرور الجديدة بعد إزالة كلمة
المرور من السلسة x)) وهي :

1-يقوم بتقسيم السلسلة x إلى أربعة أجزاء وكل جزء يحتوي على 7 حروف
لماذا استخدمت هذه الخاصية ؟؟؟؟
الجواب

* السلسة x تحوي 36من( حروف و ارقام ) والمطلوب من البرنامج ان يعطي المستخدم كلمة مرور= 8 أحرف لذلك نطلب من البرنامج ان يزيل 8 حروف(لكلمة المرور السابقة) من السلسة وبعد ذلك يكون عدد السلسة هو 28 ومن خلال هذه العملية
نستنتج أن 28÷4=7 وهي عدد الحروف لكل مجموعة

2-بعد تقطيع السلسة x إلى أربعة أجزاء يأخذ ثلاثة حروف من الجزء الأول والثاني
وحرف من الجزء الثالثة والرابعة حتى يكون العدد 8

هنا مشكلة كبيرة هذه الآلية قابلة للكشف أثناء الملاحظة القوية من المستخدم ماهو الحل؟؟؟؟؟الجواب

يوجد متغير في procedure يأخذ قيمة اليوم وبناء على اليوم تختلف طريقة
إعطاء كلمة المرور الجديدة فإذا كان اليوم (السبت أو الأحد أو الاثنين)
سيقوم كما قلنا بأخذ ثلاثة حروف من الجزء الأول والثاني وحرف من المجموعة الثالثة والرابعة حتى يكون العدد 8 , أما إذا كان اليوم (الثلاثاء أو الأربعاء أو الخميس أو الجمعة) ستختلف طريقة إعطاء كلمة المرور عن الأيام الأخرى وستكون كالتالي
ثلاثة حروف من المجموعة الثالثة والرابعة وحرف من المجموعة الأولى والثانية حتى يكون العدد 8 لكلمة المرور الجديدة .

3- من وظائفه ايضا المحافظة قدر الممكن على عدم إعطاء المستخدم كلمة مرور سابقة
فإذا تعارضت كلمة المرور السابقة مع الحالية سيقوم بإنشاء سلسة جديدة .


PROCEDURE get_new_pass(passwords varchar2) 
IS
/*==========================================================
I USE SUBSTR FUNCTION FOR CUTTING THE PASSWORD TO 4 PARTS
==========================================================*/
group1 varchar2(7);-- the first  group  contain 7 letters
group2 varchar2(7);-- the first  group  contain 7 letters
group3 varchar2(7);-- the first  group  contain 7 letters
group4 varchar2(7);-- the first  group  contain 7 numbers 
day_of_week NUMBER(2) := TO_CHAR(SYSDATE,'D'); 
new_password varchar2(8);
pass_length  number:=0;
erase varchar2(36):=passwords;
 
BEGIN

if length(passwords)>28 then
pass_length :=length(passwords)-28;
pass_length :=pass_length+1;
erase:=substr(passwords,pass_length);
end if;
if length(erase)=28 then
group1 :=substr(erase,1,7);
group2 :=substr(erase,8,7);
group3 :=substr(erase,15,7);
group4 :=substr(erase,22,7);
if day_of_week<=3 then	--<< day_of_week=(saturday+sunday+monday)
group1:=substr(group1,1,3);
group2:=substr(group2,1,3);
group3:=substr(group3,1,1);
group4:=substr(group4,1,1);
new_password:=group1||group3||group2||group4;
:cc.newpass:=new_password;

if :last_pass=:cc.newpass then
:global.changepass:=substr(:last_pass,1,4)||substr(:curre_pass,1,4);
:global.reget_pass:= erase_last_pass(:global.changepass);
get_new_pass(:global.reget_pass);
end if;
else --<< day_of_week=(tuesday+wednesday+thursday+friday)
group3:=substr(group3,1,3);
group4:=substr(group4,1,3);
group2:=substr(group2,1,1);
group1:=substr(group1,1,1);
new_password:=group3||group4||group2||group1;
:cc.newpass:=new_password;
 
if :last_pass=:cc.newpass then -- when the [last password] conflict with [new password] 
:global.changepass:=substr(:last_pass,-4)||substr(:curre_pass,-4);
:global.reget_pass:= erase_last_pass(:global.changepass);
get_new_pass(:global.reget_pass);
end if;
end if;	
else
message('ERROR AT CREATE PASSWORD');
end if;
END;




وهذه الفورم والملفات ............................... تحياتي


change_automatic.zip

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

كل مايهم ياشباب الحصول على وجهات نظركم ......................................... لأنها مهمه بالنسبة لي

بتاريخ:

عمل اكثر من رائع
اكمل فى مواضيعك فهي مهمة ومفيدة وفى انتظار الجديد من افكارك
وشكرا
ميجا

بتاريخ:

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

بس اكيد فكرتك ممتازه و اكيد اخذت منك وقت و مجهود تستحق له التقدير

ايهاب وجدى

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

والله مشكورين ياشباب للتشجيع

اخي ايهاب هذا المجهود الذي قمت به انا لايساوي قطرة ماء مقارنة بما قدمته انت والأعضاء الطيبين

وبالمناسبة إذا اردت طريقة توزيع كلامات المرور تكون اكثر صعوبة تستطيع التحكم بناء على الأيام

واي توضيح انا حاضر

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

الأخ ايهاب ممكن تضع او ترسل الطريقة التي تحدثت عنها

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

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

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

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

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

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.