اذهب الي المحتوي
أوفيسنا

استفسار بخصوص المستخدمين


amir_adam83

الردود الموصى بها

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

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

user: Amr

Pass:****

تم دخول امير على جهاز رقم واحد

ومن ثم ذهب الى جهاز اتنين وادخل نفس اسم المستخدم وكلمة المرور وللاسف الشديد تم دخوله الى الجهاز رقم اتنين

هل من طريقه او من كود عند ادخال اسم المستخدم يعطي له رسالة بان اسم المستخدم هذا متواجد بالفعل

شكرا لكم

رابط هذا التعليق
شارك

هناك افكار عديدة لعمل ذلك منها هذه الصوره جرب تشغيل المرفق باي يوزر ..... ثم اعد تشغيل النموذج الرئيسي مرة اخرى ولا حظ

جرب الخروج من النموذج عن طريق الضغط على Exit ثم اعد تشغيل النموذج الرئسي مرة اخرى ولاحظ

 

Test_kan.accdb

تم تعديل بواسطه kanory
  • Like 1
رابط هذا التعليق
شارك

اخي الكريم بامكانك عمل مصادقة عن طريق اسم المستخدم والرقم السري المشار اليه أعلاه Amr - ****  بالاضافة الى عنوان الـ uuid الخاص بجهاز المستخدم الذي يحاول الدخول .. بمعنى اخر عندما يقوم احد المستخدمين بتسجيل الدخول باسم Amr والرقم السري **** يقوم نموذج تسجيل الدخول بقراءة رقم الـ uuid لجهاز المستخدم هذا ومن ثم يخزن هذا الرقم في الجدول الذي فيه بيانات الدخول username   password  uuid 

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

 

طبعا لابد من وضع كود يحذف رقم ال uuid من الجدول عندما يقوم المستخدم الاول بتسجيل خروجه لكي يسمح لمستخدم اخر بالدخول 

 

ملاحظة: رقم الـ uuid هو رقم فريد لكل جهاز كومبيوتر لايتكرر ولا يتغير حتى لو تمت فرمته الجهاز وهنالك كود يعمل على قراءة هذا الرقم 

Public Function GetUUID()
On Error Resume Next
Dim strComputer As String
Dim objWMIService, colItems, objItem

    strComputer = "." 'default to localhost
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct", , 48)
    
    For Each objItem In colItems
        GetUUID = Nz(Trim(objItem.UUID), 0)
    Next


End Function

 

اتمنى ان تكون الفكرة واضحة

 

تحياتي

  • Like 1
رابط هذا التعليق
شارك

19 hours ago, sandanet said:

اخي الكريم بامكانك عمل مصادقة عن طريق اسم المستخدم والرقم السري المشار اليه أعلاه Amr - ****  بالاضافة الى عنوان الـ uuid الخاص بجهاز المستخدم الذي يحاول الدخول .. بمعنى اخر عندما يقوم احد المستخدمين بتسجيل الدخول باسم Amr والرقم السري **** يقوم نموذج تسجيل الدخول بقراءة رقم الـ uuid لجهاز المستخدم هذا ومن ثم يخزن هذا الرقم في الجدول الذي فيه بيانات الدخول username   password  uuid 

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

 

طبعا لابد من وضع كود يحذف رقم ال uuid من الجدول عندما يقوم المستخدم الاول بتسجيل خروجه لكي يسمح لمستخدم اخر بالدخول 

 

ملاحظة: رقم الـ uuid هو رقم فريد لكل جهاز كومبيوتر لايتكرر ولا يتغير حتى لو تمت فرمته الجهاز وهنالك كود يعمل على قراءة هذا الرقم 


Public Function GetUUID()
On Error Resume Next
Dim strComputer As String
Dim objWMIService, colItems, objItem

    strComputer = "." 'default to localhost
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct", , 48)
    
    For Each objItem In colItems
        GetUUID = Nz(Trim(objItem.UUID), 0)
    Next


End Function

 

اتمنى ان تكون الفكرة واضحة

 

تحياتي

بارك الله فيك sandanet

ولكن هل الكود هذا يتم وضعه في وحده نمطيه ام وين

هل نشاء جدول جديد

بارك الله بك هل من طريقه قريبه لهذا الشيء

20 hours ago, kanory said:

هناك افكار عديدة لعمل ذلك منها هذه الصوره جرب تشغيل المرفق باي يوزر ..... ثم اعد تشغيل النموذج الرئيسي مرة اخرى ولا حظ

جرب الخروج من النموذج عن طريق الضغط على Exit ثم اعد تشغيل النموذج الرئسي مرة اخرى ولاحظ

 

Test_kan.accdb 708 kB · 5 downloads

بارك الله بك اخي الكريم ولكن ممكن شرح الكود

رابط هذا التعليق
شارك

1 ساعه مضت, amir_adam83 said:

ولكن هل الكود هذا يتم وضعه في وحده نمطيه ام وين

نعم تضعه في وحدة نمطية وتستدعي الدالة في نموذج تسجيل الدخول

ولاتحتاج الى انشاء جدول جديد بل تستخدم نفس الجدول الذي فيه بيانات اسم المستخدم Amr والرقم السري *** عليك ان تضيف حقل اسمه uuid فقط

رابط هذا التعليق
شارك

11 hours ago, sandanet said:

نعم تضعه في وحدة نمطية وتستدعي الدالة في نموذج تسجيل الدخول

ولاتحتاج الى انشاء جدول جديد بل تستخدم نفس الجدول الذي فيه بيانات اسم المستخدم Amr والرقم السري *** عليك ان تضيف حقل اسمه uuid فقط

اخي الكريم تم بالفعل عمل وحدة نمطيه

Public Function GetUUID()
On Error Resume Next
Dim strComputer As String
Dim objWMIService, colItems, objItem

    strComputer = "." 'default to localhost
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct", , 48)
    
    For Each objItem In colItems
        GetUUID = Nz(Trim(objItem.UUID), 0)
    Next


End Function
 

وهذه هي اكواد شاشة الدخول

Option Compare Database
Dim GR_Language As Byte
Const GR_Arabic As Byte = 1
Const GR_English As Byte = 2
Dim Stest As Byte
Dim sTimer As Integer
'Dim db As DAO.Database
'Dim rs As Recordset
Private Sub CmdExit_Click()
On Error Resume Next
'---------------------------------------------------------------------
' هذا الكود لاغلاق النموذج والخروج من البرنامج                         |
'---------------------------------------------------------------------
DoCmd.Quit
End Sub
Private Sub Form_Load()
On Error Resume Next
'---------------------------------------------------------------------
' هذا الكود لعدم تفعيل زر الدخول الى البرنامج قبل التاكد من التصريخات|
'---------------------------------------------------------------------
Me.Log_In.Enabled = False
Me.TextYaer.Caption = Format(Date, "yyyy")
Me.Labenname.Caption = DLookup("[The_Company's_name]", "Table_02_Copmany_Enter_Pimr")
Me.Labelconectt.Caption = CurDir$
End Sub
Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
Me.TimerInterval = 1000
sTimer = 45

'---------------------------------------------------------------------
' هذا الكود لافراغ كافة التكستات بوكس بالنموذج عند فتح النموذج        |
'---------------------------------------------------------------------
Me.Us.Text = ""
Me.Pass.Text = ""
Me.LinkPhoto.Text = ""


End Sub
Private Sub Log_in_Click()
On Error Resume Next
myAmirNamw = Me.AmirNamw()
'اسفل
mynameuser = Me.NameUser()
'اسم لينك الصورة
mylinkSalma = Me.LinkPhoto()
mycode = Me.Coder
DoCmd.GoToRecord , , acNewRec

    Dim db As DAO.Database
    Dim Rs As DAO.Recordset

    Set db = CurrentDb
    Set Rs = db.OpenRecordset("Table_02_EmpMoveUsersdr")
    Rs.AddNew
    Rs!Code_Emp = Me.Coder
    Rs!Nam_Emp = Me.NameUser
    Rs!UserName = Me.AmirNamw
    Rs!Passowred = Me.Passore
    Rs!Data_in = Me.DatIn
    Rs!Tim_in = Me.Time_In
    Rs!Tim_Out = Me.TimOut
    Rs!IP_Compuoter = Me.IpComp
    Rs!Nam_Compuoter = Me.Name_Comp
    Rs!PicPath1 = Me.LinkPhoto
    Rs.Update
    Rs.Close
    db.Close
    Set Rs = Nothing
    Set db = Nothing
    Forms!Form_02_User_Login.Form.Requery
    DoCmd.Close
    DoCmd.OpenForm "Form_03_MainScareen"
End Sub
Private Sub Pass_AfterUpdate()
On Error Resume Next
'---------------------------------------------------------------------
' هذا الكود للتحقق من كلمة مرور الدخول للبرنامج                      |
'---------------------------------------------------------------------
If Pass = Passore Then
Me.Log_In.Enabled = True
Else
MsgBox "عفوا كلمة المرور المدخله غير صحيحه      ,Sorry, The Password You Entered Is Incorrect", vbCritical, "Information Systems Security and Protection Officer"
Me.Us.Text = ""
Me.Pass.Text = ""
Me.Log_In.Enabled = False
End If
End Sub
Private Sub Us_AfterUpdate()
On Error Resume Next
'---------------------------------------------------------------------
' هذا الكود خاص بجلب بيانات مستخدم من جدول الموظفين في قاغدة البيانات|
'---------------------------------------------------------------------
[NameUser] = DLookup("[Nam_Emp]", "Table_01_EnterDataUsers", "UserName=[Us]")
[Coder] = DLookup("[Code_Emp]", "Table_01_EnterDataUsers", "UserName=[Us]")
[AmirNamw] = DLookup("[UserName]", "Table_01_EnterDataUsers", "UserName=[Us]")
[Passore] = DLookup("[Passowred]", "Table_01_EnterDataUsers", "UserName=[Us]")
[LinkPhoto] = DLookup("[PicFile]", "Table_01_EnterDataUsers", " UserName=[Us]")
If IsNull(DLookup("[UserName]", "Table_01_EnterDataUsers", "[UserName]='" & [Us] & "'")) Then
MsgBox " اسم المستخدم المدخل هذا غير صحيح وغير مسجل بسجلات المستخدمين     This Username Entered Is Incorrect And Not Registered In User Records", vbCritical, "Information Systems Security and Protection Officer"
Me.Us.Text = ""
Cancel = -1
 Else
 End If
End Sub
Private Sub Form_Current()
On Error Resume Next
'---------------------------------------------------------------------
' هذا الكود لجلب اسم الكمبيوتر الذي تم الدخول عليه البرنامج          |
'---------------------------------------------------------------------
Me.Name_Comp = fOSMachineName
'---------------------------------------------------------------------
'هذا الكود لجلب اي بي الكمبيوتر الذي تم الدخول عليه البرنامج         |
'---------------------------------------------------------------------
Dim myWMI As Object, myobj As Object, itm
Set myWMI = GetObject("winmgmts:\\.\root\cimv2")
Set myobj = myWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each itm In myobj
Me.IpComp = itm.IPAddress(0)
Next
End Sub
Private Sub Form_Timer()
On Error Resume Next
sTimer = sTimer - 1
Me.Text10.Value = sTimer
If sTimer = 0 Then
TimerInterval = 0
MsgBox " انتهى الزمن المخصص للدخول Entry Time Expired...", vbQuestion, "Monitor users"
DoCmd.Quit
End If
Me.LabeNAM.Caption = Name_Comp


End Sub




 اين اضع هذا الكود داخل شاشة الدخول

وتم انشاء حقل جديد في جدول المستخدمين اسمه uuid

رابط هذا التعليق
شارك

فكرة الكود ...

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

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

 

  • Thanks 1
رابط هذا التعليق
شارك

11 hours ago, kanory said:

فكرة الكود ...

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

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

 

    GetUUID = Nz(Trim(objItem.UUID), 0)

هذا الكود اضعه في نموذج الدخول عند التحقق من اسمه المستخدم وكلمة المرور تقصد

رابط هذا التعليق
شارك

انا كنت اتحدث عن هذا المرفق

بارك الله فيك 

13 ساعات مضت, kanory said:

هناك افكار عديدة لعمل ذلك منها هذه الصوره جرب تشغيل المرفق باي يوزر ..... ثم اعد تشغيل النموذج الرئيسي مرة اخرى ولا حظ

جرب الخروج من النموذج عن طريق الضغط على Exit ثم اعد تشغيل النموذج الرئسي مرة اخرى ولاحظ

 

Test_kan.accdb 708 kB · 6 downloads

 

  • Thanks 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information