Nhờ sửa code kiểm tra user, password form đăng nhập

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Gửi Các Anh/ Chị
em đang tập tành học vba kết nối với database là SQL, ở đây em tạo form đăng nhập kiểm tra user pass tồn tại trong CSDL thì bế tắc ạ
nhờ các Anh/Chị sửa giúp em với ạ. em cám ơn.
Private Sub btLogin_Click()
Dim conn As Object
Dim sRun As Object
Dim strConn As Object
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
Set strConn = CreateObject("ADODB.Connection")
strConn = "Provider=SQLOLEDB;Data Source=.SQLEXPRESS; Initial Catalog=DVC;User ID=sa;Password=123456;"
conn.Open strConn
Ma_NV = txtUser.Text
M_K = txtMatkhau.Text
Sql = "Select Count(*)from . where Ma_NV = '" & Ma_NV & "' and M_K = '" & M_K & "'"
Set rst = conn.Execute(Sql)
If rst = 1 Then
MsgBox "valid", vbInformation
Else
MsgBox "Invalid", vbCritical
End If
conn.Close
Set conn = Nothing
End Sub

Bạn phải tập viết code cẩn thận, khai báo đúng kiểu dữ liệu.

Private Sub btLogin_Click()
Dim conn As Object
Dim rst As Object
Dim strConn As String
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")

strConn = "Provider=SQLOLEDB;Data Source=.SQLEXPRESS; Initial Catalog=DVC;User ID=sa;Password=123456;"
conn.Open strConn
Ma_NV = txtUser.Text
M_K = txtMatkhau.Text
Sql = "Select Count(*) As RowCount From [dbo].[DSNV] where Ma_NV = '" & Ma_NV & "' and M_K = '" & M_K & "'"
Set rst = conn.Execute(Sql)
If rst!RowCount = 1 Then
MsgBox "valid", vbInformation
Else
MsgBox "Invalid", vbCritical
End If
conn.Close
Set conn = Nothing
End Sub

Nói chuyện ngoài lề cho các bạn tập tễnh muốn theo kiểu này:

SQL Server Express thì bảo mật thấp. Chơi kiểu này không sao.

SQL Server chính bản mà chơi kiểu này bọn hắc-cơ chúng chận đường (intercept), phá (inject) cho nát mặt.

Ông chú có chiêu gì chỉ dạy "các bạn tập tễnh" không nào? –=0

SQL Server chính bản mà chơi kiểu này bọn hắc-cơ chúng chận đường (intercept), phá (inject) cho nát mặt.

Bác nói đúng. Đối với bạn này thì kết nối được, kiểm tra User/Pass là mừng rồi, chưa tính tới việc bị SQL injection 😀
Tôi thì chỉ dùng store procedure để kiểm tra đăng nhập và lưu log file, cùng lắm là dùng SQL động để truyền tham số chứ không truyền trực tiếp vào câu lệnh SQL như vậy.
Nên viết theo kiểu này:

Private Sub btLogin_Click()

Dim oConn As Object
    Dim oCmd As Object
    Dim oParam As Object
    Dim oRst As Object
    Dim sConnString As String, sSQL As String, Ma_NV As String, M_K As String

Set oConn = CreateObject("ADODB.Connection")
    Set oRst = CreateObject("ADODB.Recordset")
    Set oCmd = CreateObject("ADODB.Command")
    Set oParam = CreateObject("ADODB.Parameter")

sConnString = "Provider=SQLOLEDB;Data Source=.SQLEXPRESS; Initial Catalog=DVC;User ID=sa;Password=123456;"
    oConn.Open sConnString

Ma_NV = txtUser.Text
    M_K = txtMatkhau.Text
    sSQL = "Select Count(*) As stt From [dbo].[USERS] Where Ma_NV = ? And M_K =?;"

With oCmd
        .ActiveConnection = oConn
        .CommandText = sSQL
        .CommandType = 1 'adCmdText
        .Prepared = True

'Truyen tham so
        .Parameters.Append .CreateParameter("", 200, 1, 20, Ma_NV)
        .Parameters.Append .CreateParameter("", 200, 1, 20, M_K)
        Set oRst = .Execute
    End With

If oRst!Stt = 1 Then
        MsgBox "Success", vbInformation, "Login"
    Else
        MsgBox "Invalid username or password", vbCritical, "Login"
    End If

oConn.Close
    Set oConn = Nothing
    Set oCmd = Nothing

End Sub

Đúng ra là có cái hàm con thực hiện kết nối tới SQL SV, kiểm tra hiện trạng kết nối trước khi kết nối tới Database. Hàm đóng kết nối. Để vô mắc công tẩu hoả nhập ma. 🙂

Hi hi. Cám ơn Anh, cám ơn mọi người đã hỗ trợ ạ, em làm được rồi ạ.
em mới chỉ ở bước tập tành hiểu code thôi ạ, sau này mong mọi người giúp đỡ thêm ạ.
Em cám ơn, chúc cả nhà ngày mới làm việc tràn đầy năng lượng.

www.giaiphapexcel.com/diendan/threads/nh%E1%BB%9D-s%E1%BB%ADa-code-ki%E1%BB%83m-tra-user-password-form-%C4%91%C4%83ng-nh%E1%BA%ADp.156763/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm