PDA

View Full Version : مبتدی: فرم Login



m3343kh
شنبه 15 اردیبهشت 1403, 19:07 عصر
سلام
یک فرم لاگین ساخته ام اما مشکلاتی دارد اگر دوستان کمک کنند و راهنمایی بفرمایند ممنون می شوم

پس از وارد کردن نام کاربری، رمز عبور هر کدام از پرسنل داخل جدول که وارد میکنم لاگین میشود

سپاسگزارم

155698

ROSTAM2
شنبه 15 اردیبهشت 1403, 21:41 عصر
سلام
یک فرم لاگین ساخته ام اما مشکلاتی دارد اگر دوستان کمک کنند و راهنمایی بفرمایند ممنون می شوم

پس از وارد کردن نام کاربری، رمز عبور هر کدام از پرسنل داخل جدول که وارد میکنم لاگین میشود

سپاسگزارم


155698

سلام
من از Access زیاد سر در نمیارم ولی بنظر من امنیت کافی نداره
و اینکه نام کاربری یا UserID کلمه انگلیسی باید باشه نه عدد مثلا ROSTAM


Private Sub Command6_Click()


If Nz(Me.txtUsername, "") = "" Then
MsgBox "äÇã ˜ÇÑÈÑí ÑÇ æÇÑÏ ˜äíÏ", vbCritical
Me.txtUsername.SetFocus
Exit Sub
End If




If Nz(Me.txtPassword, "") = "" Then
MsgBox "ÑãÒ æÑæÏ ÑÇ æÇÑÏ ˜äíÏ", vbCritical
Me.txtPassword.SetFocus
Exit Sub
End If




If Nz(DLookup("UserID", "Users_tbl", "UserID='" & Me.txtUsername & "'"), "") = "" Then
MsgBox "äÇã ˜ÇÑÈÑí ÇÔÊÈÇå ÇÓÊ", vbCritical
Me.txtUsername.SetFocus
Exit Sub
End If


Dim dbs As Database
Dim rs As Recordset
Dim strSQL As String
Set dbs = CurrentDb


strSQL = "SELECT * FROM Users_tbl WHERE (((Users_tbl.UserID)='" + Me.txtUsername + "'));"


Set rs = dbs.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then Exit Sub
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
'get results using rs.Fields()

Else


End If


If Not Nz(DLookup("Password", "Users_tbl", "Password='" & Me.txtPassword & "'"), "") = rs.Fields(4) Then
MsgBox "ÑãÒ æÑæÏ ÇÔÊÈÇå ÇÓÊ", vbCritical
Me.txtPassword = Null
Me.txtPassword.SetFocus
Exit Sub
End If


DoCmd.Close acForm, "Login_frm"
DoCmd.OpenForm "Main_frm"
End Sub

m3343kh
شنبه 15 اردیبهشت 1403, 21:56 عصر
سلام
من از Access زیاد سر در نمیارم ولی بنظر من امنیت کافی نداره
و اینکه نام کاربری یا UserID کلمه انگلیسی باید باشه نه عدد مثلا ROSTAM


Private Sub Command6_Click()


If Nz(Me.txtUsername, "") = "" Then
MsgBox "äÇã ˜ÇÑÈÑí ÑÇ æÇÑÏ ˜äíÏ", vbCritical
Me.txtUsername.SetFocus
Exit Sub
End If




If Nz(Me.txtPassword, "") = "" Then
MsgBox "ÑãÒ æÑæÏ ÑÇ æÇÑÏ ˜äíÏ", vbCritical
Me.txtPassword.SetFocus
Exit Sub
End If




If Nz(DLookup("UserID", "Users_tbl", "UserID='" & Me.txtUsername & "'"), "") = "" Then
MsgBox "äÇã ˜ÇÑÈÑí ÇÔÊÈÇå ÇÓÊ", vbCritical
Me.txtUsername.SetFocus
Exit Sub
End If


Dim dbs As Database
Dim rs As Recordset
Dim strSQL As String
Set dbs = CurrentDb


strSQL = "SELECT * FROM Users_tbl WHERE (((Users_tbl.UserID)='" + Me.txtUsername + "'));"


Set rs = dbs.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then Exit Sub
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
'get results using rs.Fields()

Else


End If


If Not Nz(DLookup("Password", "Users_tbl", "Password='" & Me.txtPassword & "'"), "") = rs.Fields(4) Then
MsgBox "ÑãÒ æÑæÏ ÇÔÊÈÇå ÇÓÊ", vbCritical
Me.txtPassword = Null
Me.txtPassword.SetFocus
Exit Sub
End If


DoCmd.Close acForm, "Login_frm"
DoCmd.OpenForm "Main_frm"
End Sub



بسیار سپاسگزارم
لطف کردید

eb_1345
شنبه 15 اردیبهشت 1403, 23:20 عصر
.......................

mazoolagh
دوشنبه 17 اردیبهشت 1403, 21:30 عصر
سلام
من از Access زیاد سر در نمیارم ولی بنظر من امنیت کافی نداره


سلام و روز خوش
بگذریم که روشی که دوستمون به کار بردن به حدی فاجعه بار هست که با هیچ دیتابیسی امنیت نداره،
ولی لازم هست این "امنیت نداشتن اکسس" باز بشه که چیش و کجاش و در مقایسه با چه چیزی امنیت نداره.

من با اجازتون دوباره پست خودم در خبر: تصاویری از یک برنامه حسابداری در دست تهیه (barnamenevis.org) (https://barnamenevis.org/showthread.php?577538) رو اینجا کپی میکنم:


گفته شما البته (کمابیش) درسته، ولی دقیق نیست چون scope امنیت تعریف نشده؛
مثلا اگر منظور از امنیت احتمال corrupt شدن فایل دیتابیس باشه، این وضعیت برای هر دیتابیس file-based مثل SQLite هم هست.
همچنین اگر مثلا یک اپلیکیشن WinForms با سی شارپ بنویسیم ولی backend هنوز اکسس باشه باز هم امنیت فراهم نشده.
و این که: در یک دیتابیس file-based امنیت خود فایل دیتابیس در برابر پاک کردن (عمدی یا غیرعمدی) فایل توسط یک کاربر ضعیف هست درسته.
ولی زمانی که هارددیسک خراب بشه، امنیت هر نوع دیتابیسی که بکاپ منظم و فیزیکی خارج از محل اصلی نداشته باشه، کلا دیگه بی معنی میشه.

اگر منظور امکان دستکاری دیتا خارج از برنامه باشه (tampering)، در اکسس برای یک حرفه‌ای راهش هست و بخشی امنیت برمیگرده به شرایط کاری جایی که برنامه نصب میشه.
ولی حتی با وجود SQL server هم، اگر تمهیدات لازم پیاده نشه این راه‌ها هست.

اگر منظور از امنیت، سورس کد برنامه است که خب accde هم وضعیت خیلی خوبی داره.

خلاصه این که اون امنیتی که مد نظر شما هست باید براش هزینه کرد:
1- استفاده از DBMS بر اساس سرویس (service-based) مثل SQL
2- استفاده از سرور مستقل بدون توجه به تعداد کاربر
3- تمهیدات امنیتی در سطح شبکه (تعریف کاربرها - سطح دسترسی‌ها و ...)
4- تمهیدات امنیتی در خود سرور دیتابیس
5- برنامه بکاپ فیزیکی منظم خارج از سرور
6- داشتن متخصصی که همه این ها رو هندل کنه.

همه اینها که باشه اگر از اکسس بعنوان frontend استفاده بشه دیگه تفاوتی با اپلیکیشن WinForms نداره.

خلاصه این مبحثی هست که نیاز به تاپیک مستقل داره (چند تایی هست اینجا)