لنفرض ان لدينا نظام يعمل بشبكة بمحلية ومرتبط بجهزي او اكثر ولدينا اكثر من مستخدم .
مثل
في جهاز 1
تم تسجيل الدخول باسم المستخدم (عمرو).
وفي جهاز 2
حاول احد المستخدمين الدخول باسم المستخدم ( عمرو ).
النتجية (ستيم الدخول بالجهازين بنفس اسم المستخدم )
السوال هنا هل يمكنني ان امنع دخل مستخدم واحد للنظام مرتين بنفس الوقت ما الطريقة لعمل ذلك هل عن طريق الكود ام بنشاء جدول .
اخي khodor1985 الف شكر على تفعالك وتعاونك معى ....
يا عزيزي الفكرة وصلت .
انا فكرت كذا وطريقة حلوة لكن هناك ستكون مشكلة اذا اضافت حقل Active .
تعال نشوف الية الفكرة .
عند تسجل الدخول سيكون قيمة الحقل 0 اي ان المستخدم غير متواجد
سيتم الدخول بشكل سليم لانه تحقق الشرط الثالث في الولوج .
بعدها يتم تعديل قيمة الحقل Active من 0 الى 1 اى ان المستخدم موجود بجهاز واذا ادخلنا نفس بيانات المستخدم بجهاز اخر سيتم الوصول الى الشرط الثالث ويرفض تسجل الدخول لان لم يحقق الشرط .
هنا يتوجب علينا عند تسجيل خروج المستخدم تعديل القيمة من 1 الى 0 لكى يتمكن الدخول مرة اخره .
المشكلة هنا .
اذا تم قطع التيار او اغلاق البرنامج بشكل خطاء من إدارة المهام او باي طريقة اخرى
لن يتم التعديل من قيمة 1 الى 0 وهنا لن يتمكن المستخدم بالدخول رغم انه غير موجود بالفعل لكن الشرط الثالث يتعرف انة موجود ويرفض الموصلة .
هذي طريقة فكرت فيها ولكن توقفت عند هاذي المشكلة
السلام عليكم
استاذ
khodor1985
هناك مشكلة ستحدث في اقتراحكم، وهو لو تم تسجيل الدخول وعلم على Active=1 وأغلق البرنامج دون أن يتم ارجاعه الى 0 في تسجيل الخروج، فلن يتمكن من تسجيل الدخول مرة أخرى.
إذا كان يتم استخدام SqlServer فيمكن الاستعلام عن اسم المستخدم هل تم الدخول أم لا مثل
كود :
SELECT COUNT(loginname) FROM master.dbo.syslogins WHERE [name] = @loginName
فإذا أعاد القيمة (صفر) فيسمح بتسجيل الدخول
هذا يعتمد على المستخدمين المسجلين في SqlServer وليس في جدول بيانات عادي
المشكلة عند عدم إغلاق البرنامج بشكل طبيعي، ولكن لو تم قتل البرنامج (طبعاً أنتم تعرفوا المقصد).
برامجكم استاذنا لم تعمل معي لاختلاف الاصدار، ولكن بالاطلاع على الكود، وجدت أنكم استخدتم تسجيل الخروج في Form3_FormClosed
أخي الكريم (مساعدة) من مشاركتك الرائعة عرفت كود الاستعلام عن المستخدمين المضافين يدويا عن طريق الخادم لكن هل يمكن الاضافة بالكود؟ اي اضيف مستخدم للجدول الرئيسي الخاص بالخادم؟
بحثت على عجالة بقوقل لكن ربما لم اوفق لمصطلح صحيح للبحث عنه.
بارك الله بكما جميعا.
مرحباً أستاذ
سعود
تفضل إضافة مستخدم: اسم المستخدم بدون علامات ' ' ولا يحتوي مسافات
كود :
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'