AnNguyen > 22-06-20, 11:43 AM
thuyyeu99 > 22-06-20, 01:06 PM
Noname > 22-06-20, 02:21 PM
(22-06-20, 01:06 PM)thuyyeu99 Đã viết: Lập thêm 1 cột Active nữa và check trên cột nàyĐúng rồi.
AnNguyen > 22-06-20, 03:46 PM
(22-06-20, 02:21 PM)Noname Đã viết: Đúng rồi.
Mình từng thấy 1 chương trình cỡ lớn, họ dùng cách mỗi khi user đăng nhập thì check vào ô Active, thoát ra thì bỏ check.
Cúp điện thì trạng thái treo đó, vì vậy trang bị thêm 1 tool nữa là clear user, cho phép người nhập password với quyền quản trị được trả về trạng thái uncheck
Noname > 22-06-20, 04:47 PM
AnNguyen > 22-06-20, 04:57 PM
(22-06-20, 04:47 PM)Noname Đã viết: Thì đơn giản thế này,Thế tức là họ đang dùng mà bị mất điện thì trạng thái đó cứ treo mãi và sau khi có điện họ k đăng nhập được nữa mà phải báo lại cho admin để admin setup lại trạng thái đó ạ?
lập 1 table user, có UserID, và trạng thái
Khi user đăng nhập: Kiểm tra trạng thái,
nếu yes thì báo đã đăng nhập rồi,
no thì cho đăng nhập
thì chạy 1 query, update trạng thái là yes
Khi user thoát, chạy 1 query update trạng thái user đó là no
Còn quyền admin thì cho phép update trạng thái No cho user khác, đề phòng người dùng bị tắt chương trình đột xuất mà không kịp thoát chương trình
maidinhdan > 22-06-20, 09:04 PM
AnNguyen > 23-06-20, 09:06 AM
(22-06-20, 09:04 PM)maidinhdan Đã viết: Cách làm đơn giản nhất đó là lập thêm cột thời gian đăng nhập, sau đó viết hàm hàm đếm thời gian:
- Ở các máy Client: 30s check True cho tài khoản chính mình;
- Ở máy chủ: cứ mỗi 1 giây lọc ra những tài khoản đăng nhập đủ 29s Giây, sau đó cho check False những tài khoản đó.
Bạn có thể kéo dài ra không nhất thiết là 30s. Nên để khoản cách chênh lệch 0,5-1s là đủ. Riêng các Game online thông thường hàm sẽ được viết tự động trên SQL Server, sau 5-10s không hồi đáp là out ngay.
Hoặc tham khảo link này: trên SQL Server cũng có tính năng tương tự.
[Thủ Thuật] Demo Liệt kê số lượng User đang mở table nào
Thân mến!
ongke0711 > 23-06-20, 12:34 PM
(22-06-20, 11:43 AM)AnNguyen Đã viết: Em thiết kế data có 1 bảng tbUser là để lưu thông tin đăng nhập, và trong kết nối thì dùng 1 tài khoản duy nhất có quyền để truy cập SQL,
Hiện tại em muốn ngăn không cho 2 tài khoản cùng sử dụng ứng dụng 1 lúc, Nhưng do em đang sử dụng 1 tài khoản SQL để kết nối thì sẽ không check được điều này.
Và em phát triển thêm bằng 1 cách đó là, tạo 1 Database tạm chỉ để add các user tương ứng từ bảng tbUser kia vào user của SQL để từ đó có thể show ra được ai đang đăng nhập.
Em có viết code để để kết nối với Database tạm kia bằng user đang login ở form Main sự kiện load_form
Nhưng e vào sql check thì chỉ được 1 lúc là user đang kết nối đang bảng tạm kia bị biến mất trong khi ứng dụng của em vẫn đang mở.
Vậy em phải làm gì để giữ được kết nối kia liên tục ạ?
Em cảm ơn!
"Do kiến thức của em ít nên chỉ nghĩ được cách này để check ai đang đăng nhập thôi ạ"
AnNguyen > 23-06-20, 12:52 PM
(23-06-20, 12:34 PM)ongke0711 Đã viết: Tôi nghĩ chắc phải ngồi phân tích lại nhu cầu và giải pháp thực thi chứ tôi thấy cách này nó hơi lạ.
- Về SQL Server thì muốn quản lý Users thì cứ tạo tài khoản mới rồi dùng công cụ có sẳn (sp_Who2) để kiểm tra tình trạng User.
- Về việc kết nối tới SQL Server thì không ai giữ kết nối liên tục, cứ thực thi một tác vụ gì đó xong là ngắt connection, khi đó SQL SV sẽ hoạt động tốt hơn. Ví dụ: bạn có 10 Users nhưng thực chất chỉ cần 3, 4, 5 Connections cùng lúc tới SQL SV chứ không phải lúc nào cũng 10 Connections. Vì cách thiết kế mở, đóng Connection giúp giảm tải cho SQL SV.
- Nếu bạn dùng 1 User cho SQL SV và nhiều User cho ứng dụng Font-end thì phân tích lại cách quản lý xem. Ý bạn đang muốn quản lý phần bản quyền ứng dụng như có lần nào bạn đề cập? chỉ cho 1 User sử dụng hay sao?