09/10/2018, 23:29

Làm cách nào để phân biệt 2 máy = PHP ??

Mình có 1 website, mình muốn tránh việc đăng nhập đồng thời, nghĩa là 2 user không thể dùng cùng 1 account để đăng nhập vào website của mình tại cùng 1 khoảng thời gian.

Mình định dùng IP Address, nhưng cái này chỉ lấy WAN IP còn Lan thì bó tay. Nếu không lấy được Lan thì lỡ nhà đó có 2 máy cùng ra 1 đường internet thì mình không ngăn được (mặc dù mình có xài thêm 1 biến gọi là flag, nếu account đó đã đăng nhập thì flag = 1 còn nếu kô ai xài account đó thì flag = 0). Ai có ý tưởng giải quyết vấn đề thì chỉ giúp mình với.
conank viết 01:33 ngày 10/10/2018
Quote Được gửi bởi cold_blood_boy View Post
Mình có 1 website, mình muốn tránh việc đăng nhập đồng thời, nghĩa là 2 user không thể dùng cùng 1 account để đăng nhập vào website của mình tại cùng 1 khoảng thời gian.

Mình định dùng IP Address, nhưng cái này chỉ lấy WAN IP còn Lan thì bó tay. Nếu không lấy được Lan thì lỡ nhà đó có 2 máy cùng ra 1 đường internet thì mình không ngăn được (mặc dù mình có xài thêm 1 biến gọi là flag, nếu account đó đã đăng nhập thì flag = 1 còn nếu kô ai xài account đó thì flag = 0). Ai có ý tưởng giải quyết vấn đề thì chỉ giúp mình với.
Bạn đã xài biến flag rồi thì khi user đăng nhập vào, check xem cái biết flag đã bằng 1 rồi thì báo đang đăng nhập và ko cho đăng nhập nữa.

Hay còn rắc rối nào khác mà mình chưa nghĩ ra nhỉ ???
khuongCOMPUTER viết 01:35 ngày 10/10/2018
Có đấy, đó là trường hợp user thoát ra không login => flag không set về 0. Sau đó 5 phút vô lại thì sẽ bị
cold_blood_boy viết 01:35 ngày 10/10/2018
Quote Được gửi bởi conank View Post
Bạn đã xài biến flag rồi thì khi user đăng nhập vào, check xem cái biết flag đã bằng 1 rồi thì báo đang đăng nhập và ko cho đăng nhập nữa.

Hay còn rắc rối nào khác mà mình chưa nghĩ ra nhỉ ???
Nếu xài flag không thì hơi bất tiện cho người sử dụng bạn à!
Giả sử trường hợp sau nhé:
Người đó mở IE lên đăng nhập thành công vào hệ thống, sau đó vào mục A để download tài liệu, bây giờ họ muốn vào mục B để xem thông tin, nhưng không muốn back, nên dùng IE mở một trình duyệt mới lên, và dĩ nhiên IE mới này sẽ thực hiện thao tác đăng nhập lại từ đầu. Khi đăng nhập nó kiểm tra biến flag thấy đã được set = 1 => không cho đăng nhập vào.

@khuongCOMPUTER: Hix còn cả trường hợp bạn đưa ra nữa, giờ mình chưa biết làm sao để cứ sau 5 or 10 phút nếu thấy họ không làm gì nữa thì đá họ ra khỏi hệ thống. Hoặc mình phải làm sao để bắt sự kiện họ sign out ra khỏi hệ thống (cái này dễ - trong phần log out) nhưng lỡ như user bất thần tắt exploer thì sao nhỉ ? Có bạn nào có đoạn source = javascript hay PHP về sự kiện tắt exploer thì send cho mình với, thanks all.
jiSh@n viết 01:32 ngày 10/10/2018
Quote Được gửi bởi cold_blood_boy View Post
Nếu xài flag không thì hơi bất tiện cho người sử dụng bạn à!
Giả sử trường hợp sau nhé:
Người đó mở IE lên đăng nhập thành công vào hệ thống, sau đó vào mục A để download tài liệu, bây giờ họ muốn vào mục B để xem thông tin, nhưng không muốn back, nên dùng IE mở một trình duyệt mới lên, và dĩ nhiên IE mới này sẽ thực hiện thao tác đăng nhập lại từ đầu. Khi đăng nhập nó kiểm tra biến flag thấy đã được set = 1 => không cho đăng nhập vào.

@khuongCOMPUTER: Hix còn cả trường hợp bạn đưa ra nữa, giờ mình chưa biết làm sao để cứ sau 5 or 10 phút nếu thấy họ không làm gì nữa thì đá họ ra khỏi hệ thống. Hoặc mình phải làm sao để bắt sự kiện họ sign out ra khỏi hệ thống (cái này dễ - trong phần log out) nhưng lỡ như user bất thần tắt exploer thì sao nhỉ ? Có bạn nào có đoạn source = javascript hay PHP về sự kiện tắt exploer thì send cho mình với, thanks all.
Cái ví dụ hơi chuối nếu như bạn nói thì tính năng tab browsing của FF bỏ cho chó gặm à. Hơn nữa, nếu login vào bằng FF, sau đó mở IE thì nó sẽ trở thành 1 session khác rồi cho nên chắc chắn là phải login lại từ đầu, đừng nghĩ là chung IP thì sẽ chung session. Thông thường nếu dùng flag để kiểm tra login thì phải kèm theo cái timeout nữa. Quá timeout thì cái flag coi như vô hiệu. Hoặc là lưu lại session ID, nếu có 1 session mới login vào thì cái session ID trở thành invalid, buộc phải login từ đầu.
cold_blood_boy viết 01:32 ngày 10/10/2018
Quote Được gửi bởi jiSh@n View Post
Cái ví dụ hơi chuối nếu như bạn nói thì tính năng tab browsing của FF bỏ cho chó gặm à. Hơn nữa, nếu login vào bằng FF, sau đó mở IE thì nó sẽ trở thành 1 session khác rồi cho nên chắc chắn là phải login lại từ đầu, đừng nghĩ là chung IP thì sẽ chung session. Thông thường nếu dùng flag để kiểm tra login thì phải kèm theo cái timeout nữa. Quá timeout thì cái flag coi như vô hiệu. Hoặc là lưu lại session ID, nếu có 1 session mới login vào thì cái session ID trở thành invalid, buộc phải login từ đầu.
Cảm ơn bạn nhé! Mình cũng có biết sơ về vụ session như bạn nói á, mà mình cho ví dụ chuối vì mình chưa có check điều kiện của session bạn ui! Bạn có vẻ rành về cái vụ timeout và session ID đó, bạn có thể cho mình một cái source bé bé demo về 2 thằng này không? Vì mình kiếm chưa ra nữa (source PHP đó bạn). Cám ơn nhiều.
conank viết 01:42 ngày 10/10/2018
Quote Được gửi bởi cold_blood_boy View Post
Cảm ơn bạn nhé! Mình cũng có biết sơ về vụ session như bạn nói á, mà mình cho ví dụ chuối vì mình chưa có check điều kiện của session bạn ui! Bạn có vẻ rành về cái vụ timeout và session ID đó, bạn có thể cho mình một cái source bé bé demo về 2 thằng này không? Vì mình kiếm chưa ra nữa (source PHP đó bạn). Cám ơn nhiều.
Một đoạn code hay, chính xác là một ứng dụng hoàn chỉnh
http://evolt.org/PHP-Login-System-wi...ts_per_page=50

Tác giả support khá tốt, các comment được viết từ tháng 9/2004 đến nay
cold_blood_boy viết 01:34 ngày 10/10/2018
Quote Được gửi bởi conank View Post
Một đoạn code hay, chính xác là một ứng dụng hoàn chỉnh
http://evolt.org/PHP-Login-System-wi...ts_per_page=50

Tác giả support khá tốt, các comment được viết từ tháng 9/2004 đến nay
Cảm ơn bạn để mình test thử.
Bài liên quan
0