تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] لخبراء واصحاب الخبرة في برامج صلاحيات المستخدمين.
#1
Information 
لنفرض ان لدينا نظام يعمل بشبكة بمحلية ومرتبط بجهزي او اكثر ولدينا اكثر من مستخدم .
مثل
في جهاز 1 
تم تسجيل الدخول  باسم المستخدم (عمرو). 
وفي جهاز 2 
حاول احد المستخدمين  الدخول باسم المستخدم ( عمرو  ). 
النتجية (ستيم الدخول بالجهازين بنفس اسم المستخدم )
السوال هنا هل يمكنني ان امنع دخل مستخدم واحد للنظام مرتين بنفس الوقت ما الطريقة لعمل ذلك هل عن طريق الكود ام بنشاء جدول .
الرد }}}}
تم الشكر بواسطة:
#2
السلام عليكم أخي العزيز ورحمة الله وبركاته
هناك عدة طرق لتفادي هذه المشكلة، وسأقترح عليك الفكرة التالية وأعتقد أنها بسيطة إن شاء الله.
أولا - قم بإضافة حقل جديد على جدول المستخدمين وليكن إسم الحقل Active ونوعه Int ولتكن قيمة الحقل الإبتدائية أو الإفتراصية هي الرقم 0.
ثانيا - عندما عملية الولوج سوف نضيف شرط ثالث إضافة إلى إسم المستخدم وكلمة المرور وهو الحقل Active، فإذا كانت قيمة الحقل Active عند الولوج هي 0 ستتم العملية بنجاح، أما لو كانت قيمة الحقل Active هي 1 فهذا يعني هذا المستخدم هو قيد التفعيل والتنشيط.
ثالثا - ولكن كيف سنقوم بالتعديل على الحقل Active من 0 إلى 1، سوف نستخدم الحدث Update أي عندما يتحقق التطابق بين قيمتي المستخدم وكلمة المرور مع القيم الموجودة في جدول المستخدمين في قاعدة البيانات، بالتالي سوف ينتقل للشرط الثالث وهو ويتحقق من قيمة الحقل Active فإذا كانت 0 سوف يتم الولوج ويعمل على تحديث القيمة من 0 إلى 1 ليصبح المستخدم قيد الإستخدام، بحيث لا يمكن للشخص ثاني أن يستخدم نفس المستخدم لأنه في وضعية التشغيل لأن قيمته الحالية هي 1.

أتمنى أن أكون قد أوصلت الفكرة.
عن مولا نا علي ابن أبي طالب عليه السلام :
إضرب بعض الرأي ببعض يتولد منه الصواب.
الرد }}}}
تم الشكر بواسطة: sendbad100 , sendbad100 , noway
#3
اخي khodor1985 الف شكر على تفعالك وتعاونك معى ....
يا عزيزي الفكرة وصلت .
انا فكرت كذا وطريقة حلوة لكن هناك ستكون مشكلة اذا اضافت حقل Active .
تعال نشوف الية الفكرة .
عند تسجل الدخول سيكون قيمة الحقل 0 اي ان المستخدم غير متواجد
سيتم الدخول بشكل سليم لانه تحقق الشرط الثالث في الولوج .
بعدها يتم تعديل قيمة الحقل Active من 0 الى 1 اى ان المستخدم موجود بجهاز واذا ادخلنا نفس بيانات المستخدم بجهاز اخر سيتم الوصول الى الشرط الثالث ويرفض تسجل الدخول لان لم يحقق الشرط .
هنا يتوجب علينا عند تسجيل خروج المستخدم تعديل القيمة من 1 الى 0 لكى يتمكن الدخول مرة اخره .
المشكلة هنا .
اذا تم قطع التيار او اغلاق البرنامج بشكل خطاء من إدارة المهام او باي طريقة اخرى
لن يتم التعديل من قيمة 1 الى 0 وهنا لن يتمكن المستخدم بالدخول رغم انه غير موجود بالفعل لكن الشرط الثالث يتعرف انة موجود ويرفض الموصلة .
هذي طريقة فكرت فيها ولكن توقفت عند هاذي المشكلة
الرد }}}}
تم الشكر بواسطة: khodor1985 , sendbad100 , noway
#4
السلام عليكم

استاذ khodor1985

هناك مشكلة ستحدث في اقتراحكم، وهو لو تم تسجيل الدخول وعلم على Active=1 وأغلق البرنامج دون أن يتم ارجاعه الى 0 في تسجيل الخروج، فلن يتمكن من تسجيل الدخول مرة أخرى.

إذا كان يتم استخدام SqlServer فيمكن الاستعلام عن اسم المستخدم هل تم الدخول أم لا مثل
كود :
SELECT COUNT(loginname) FROM master.dbo.syslogins WHERE [name] = @loginName
فإذا أعاد القيمة (صفر) فيسمح بتسجيل الدخول

هذا يعتمد على المستخدمين المسجلين في SqlServer وليس في جدول بيانات عادي
الرد }}}}
تم الشكر بواسطة: khodor1985 , khodor1985 , سعود , sendbad100 , noway
#5
السلام عليكم أخي العزيز ورحمة الله وبركاته
نعم صحيح أخي مساعدة وقد التفت لهذا الموضوع، لقد قمت بتصميم مشروع صغير قاعدة بياناته من نوع أكسس، فكرة المشروع :
- عند إنشاء مستخدم جديد سوف تكون قيمة الحقل Active الإفتراضية 0.
- عند نجاح عملية الدخول سوف يتم تحديث قيمة الحقل Active إلى 1.
- عند الخروج من البرنامج سوف يتم تحديث قيمة الحقل Active إلى 0.

المشروع :
.rar   khodor1985 - DetectSameLogin.rar (الحجم : 114.74 ك ب / التحميلات : 54)

أتمنى لك التوفيق

نعم أخي العزيز عامر ، كلامك بمحله
عن مولا نا علي ابن أبي طالب عليه السلام :
إضرب بعض الرأي ببعض يتولد منه الصواب.
الرد }}}}
تم الشكر بواسطة: سعود , sendbad100 , Amrjamil
#6
المشكلة عند عدم إغلاق البرنامج بشكل طبيعي، ولكن لو تم قتل البرنامج (طبعاً أنتم تعرفوا المقصد).

برامجكم استاذنا لم تعمل معي لاختلاف الاصدار، ولكن بالاطلاع على الكود، وجدت أنكم استخدتم تسجيل الخروج في Form3_FormClosed
الرد }}}}
تم الشكر بواسطة: sendbad100
#7
أخي الكريم (مساعدة) من مشاركتك الرائعة عرفت كود الاستعلام عن المستخدمين المضافين يدويا عن طريق الخادم  لكن هل يمكن الاضافة بالكود؟ اي اضيف مستخدم للجدول الرئيسي الخاص بالخادم؟
بحثت على عجالة بقوقل لكن ربما لم اوفق لمصطلح صحيح للبحث عنه.
بارك الله بكما جميعا.
كل مااعرفه في البرمجة تجدونه هنا
الرد }}}}
تم الشكر بواسطة: sendbad100
#8
مرحباً أستاذ سعود

تفضل إضافة مستخدم: اسم المستخدم بدون علامات ' ' ولا يحتوي مسافات
كود :
CREATE LOGIN abc WITH PASSWORD = '123';

وإذا كان اسم المستخدم يحتوي مسافات يجب وضعه بين قوسين []
كود :
CREATE LOGIN [a b c] WITH PASSWORD = '123';

وشاهد هذا المقال
Create a Database User

وإذا أردت بدون كلمة مرور فلا يتم وضع WITH PASSWORD

وإذا أردت الاستعلام عن جميع المستخدمين لقاعدة بيانات معينة
كود :
SELECT  [loginname]
FROM    master.dbo.syslogins
WHERE   [name] = @loginName
    AND [dbname] = 'myDatabaseName'
الرد }}}}
تم الشكر بواسطة: khodor1985 , sendbad100


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  اريد المساعده لعمل نظامي يقبل تعدد المستخدمين يعمل على الشبكه samawi 3 127 26-11-17, 01:09 PM
آخر رد: Amir_alzubidy
  [VB.NET] سؤال لخبراء الداتا جريد محمد اسماعيل 3 143 10-11-17, 12:55 AM
آخر رد: محمد اسماعيل
  [سؤال] الحصول على اسماء المستخدمين Mohamed20 1 147 02-10-17, 02:54 PM
آخر رد: سعود
  [VB.NET] التحققمن تنصيب برامج معينه علي الحاسوب عبدالرحمن المكاوي 2 155 19-09-17, 12:22 PM
آخر رد: عبدالرحمن المكاوي
  [VB.NET] لخبراء قواعد البيانات create table dubai.eig 4 174 19-09-17, 10:39 AM
آخر رد: dubai.eig
  [VB.NET] ابحث عن شرح عمل صلاحيات محددة 0theghost0 13 397 28-08-17, 08:48 PM
آخر رد: 0theghost0
  ارجو المساعدة من اهل الخبرة اريد كود لعمل فورم نقل او تحويل الاصناف من مخزن الى مخزن احمد الامين 8 384 24-08-17, 06:23 AM
آخر رد: احمد الامين
  [VB.NET] عمل صلاحيات محددة hitman48 6 201 15-08-17, 04:11 PM
آخر رد: hitman48
  [سؤال] استفسار عن امكانية مشاركة برامج فيجول بيسك بين اكثر من حاسوب Marwan9990 7 286 21-07-17, 12:49 AM
آخر رد: أبوبكر سويدان
  [VB.NET] مشكلة في صلاحيات Administration Yazan Alatoom 1 194 17-07-17, 11:08 AM
آخر رد: Amir_alzubidy

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم