Hoàng Văn Tài
Hoàng Văn Tài
Thảo luận 15 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 1430 lượt xem

về ví dụ nhập username và password trong bài giảng ạ Bắt buộc phải liệt

thầy giáo cho e hỏi về ví dụ nhập username và password trong bài giảng ạ:

- Bắt buộc phải liệt kê bảng danh sách account (username và pass) sẵn trên file ah? Như vậy thì người khác thấy được luôn sẽ không còn bảo mật

Thảo luận 15 câu trả lời
Lượt xem 1430 lượt xem
Vỗ tay vỗ tay
Hoàng Văn Tài 16:01 - Jan 18, 2021

Về bản chất bạn cần có 1 danh sách Username, password để kiểm tra, đối chiếu xem người dùng nhập đúng hay không. Bạn có thể làm theo 2 cách:

- Cách 1: Đặt tại 1 vùng ô trong 1 Sheet => Ẩn sheet này bằng TeenSSheet.Visible = xlSheetVeryHidden (người dùng sẽ không tự mở ẩn được theo cách thông thường, phải mở ẩn trong VBA)

- Cách 2: bạn có thể đưa trực tiếp vào VBA dưới dạng hằng số (mã hóa username, password bằng 1 đoạn ký tự nào đó cố định) => kiểm tra username, password khi nhập có giống với các hằng số này không. Cách này phức tạp hơn nhưng không có liên quan gì tới Sheet (thuần VBA) và có tính bảo mật cao hơn (được mã hóa riêng) => Tuy nhiên cách lập trình phức tạp và rất dễ bị quên, sai sót.

Do đó mình hướng dẫn cách làm dễ hiểu (là show hết ra) để khi học chúng ta dễ theo dõi, dễ hiểu nguyên lý. Còn trong quá trình ứng dụng thực tế các bạn cần bảo vệ kỹ vùng UserName, password đó để tránh người khác tự ý truy cập vào file (nhưng chú ý là rất nhiều người giỏi phá mã, kể cả VBA nên chủ yếu cách này ngăn chặn những người dùng phổ thông thôi bạn nhé).

Vỗ tay vỗ tay
Hoàng Văn Tài 16:01 - Jan 18, 2021

Chào bạn bạn có thể để account đó trong một file khác dạng như access hoặc mã hoá mật khẩu lại bằng function

Vỗ tay vỗ tay
Hoàng Văn Tài 16:01 - Jan 18, 2021

- với cách 1 của G-Learning thì e cũng đã nghĩ đến, còn cách 2 thì phức tạp e sẽ tìm hiểu thêm sau

- còn với cách của thầy Tuấn BA, thầy có thể nói rõ hơn được không ah?

+ ví dụ như kết nối access với VBA như thế nào để code nó chạy

+ hoặc nếu mã hóa bằng function thì mình viết function nào được ah

Vỗ tay vỗ tay
Hoàng Văn Tài 17:01 - Jan 18, 2021

Chào bạn với các sử dụng access làm dữ liệu bạn cần biết về sql còn cách sử dụng function mã hoá bạn có thể tham khảo mã hoá bằng md5 hoặc sha256 hoặc sha512

Vỗ tay vỗ tay
Hoàng Văn Tài 23:01 - Jan 18, 2021

vâng, cho e hỏi về 2 vấn đề này nữa ah:

- vòng lặp Do While không giới hạn số lần lặp, vậy ở ví dụ trong bài giảng có cần thiết thêm điều kiện i < 110 không ah? Vì e đang thấy là mình đang giới hạn i = 108 to i < 110 thì nó lại giống vòng lặp For Next

- bình thường thì người ta sẽ chỉ để 1 username + password thôi, thì lúc này không dùng được vòng lặp Do While đúng không ah?

Vỗ tay vỗ tay
Hoàng Văn Tài 09:01 - Jan 19, 2021

Chào bạn vòng lặp Do While thì bạn phải có biến để so sánh đúng sai ở đây nên bạn muốn lặp từ 101 đến 111 chẳng hạn thì bạn cần bắt đầu i=101 và điều kiện i<=111 

bạn hoàn toàn có thể thêm nhiều use vào nhé nhưng đièu kiện bạn bắt ở đây là mỗi use là duy nhất sẽ có các pass khác nhau đầu tiên bạn load use vào trước (dùng combobox)nếu đúng thì bắt đầu lặp pass để so sánh

Vỗ tay vỗ tay
Hoàng Văn Tài 10:01 - Jan 19, 2021

- ở câu 1 thì e vẫn thấy nó giống vòng lặp For :)) e có thử dùng vòng lặp For vào ví dụ trên thì code nó chỉ chạy đúng 1 trường hợp, thầy xem giúp e

Sub Login_confirm()

    Dim i As Integer

    For i = 108 To 109

        If Sheets(1).Range("B3").Value = "" Or Sheets(1).Range("B6").Value = "" Then

            MsgBox "Vui long nhap du thong tin UserName va Password"

        ElseIf Sheets(1).Range("B3").Value = Sheets(1).Range("F" & i).Value And _

            Sheets(1).Range("B6").Value = Sheets(1).Range("G" & i).Value Then

            MsgBox "Dang nhap thanh cong"

        Else

            MsgBox "Dang nhap khong thanh cong"

            Exit Sub

        End If

    Next i

End Sub

Vỗ tay vỗ tay
Hoàng Văn Tài 10:01 - Jan 19, 2021

Chào bạn bạn cần thêm điều kiện and nữa để bắt thêm trường hợp mật khẩu nhé.

Vỗ tay vỗ tay
Hoàng Văn Tài 10:01 - Jan 19, 2021
trong code có And rồi đấy ạ. e chạy thì với account đầu tiên thì nó báo đăng nhập thành công, tuy nhiên thử với account 2 thì nó báo đăng nhập không thành công
Vỗ tay vỗ tay
Hoàng Văn Tài 10:01 - Jan 19, 2021

Chào bạn bạn có thể đẩy file lên được không?

Vỗ tay vỗ tay
Hoàng Văn Tài 11:01 - Jan 19, 2021

đây ạ: file ví dụ

Vỗ tay vỗ tay
Hoàng Văn Tài 11:01 - Jan 19, 2021
Hoàng Văn Tài 11:01 - Jan 19, 2021

Chào bạn bạn sửa lại code như sau

Option Explicit
Sub Login_confirm()
    Dim i As Integer
    For i = 3 To 4
        If Sheets(1).Range("B3").Value = "" Or Sheets(1).Range("B6").Value = "" Then
            MsgBox "Vui long nhap du thong tin UserName va Password"
            Exit Sub
        ElseIf Sheets(1).Range("B3").Value = Sheets(1).Range("F" & i).Value And _
            Sheets(1).Range("B6").Value = Sheets(1).Range("G" & i).Value Then
            MsgBox "Dang nhap thanh cong"
            Exit Sub
        End If
    Next i
     MsgBox "Dang nhap khong thanh cong"
End Sub
do phần else của bạn chạy có 1 lần bạn đã dừng sub nên xảy ra lỗi đăng nhập không thành công
Vỗ tay vỗ tay
Hoàng Văn Tài 11:01 - Jan 19, 2021

e cảm ơn ạ

Vỗ tay vỗ tay
Hoàng Văn Tài 11:01 - Jan 19, 2021

Chúc bạn học tốt cùng gitiho

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông