09/10/2018, 23:28

PHP - Có bao giờ trùng session ID ?

Chào các bạn mình đang xem về phần session ID của PHP, và thấy có định nghĩa về session ID như sau:

Session là khoảng thời gian người sử dụng giao tiếp với 1 ứng dụng. Session bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng. Mỗi session sẽ có một định danh (ID), 1 session khác nhau sẽ có 2 ID khác nhau. Trong ngữ cảnh ứng dụng web, website sẽ quyết định khi nào session bắt đầu và kết thúc.
Trong 1 session, website có thể lưu trữ một số thông tin như đánh dấu bạn đã login hay chưa, những bài viết nào bạn đã đọc qua, v.v...

Mình tự hỏi có bao giờ session ID trùng nhau không nhỉ?
Mình nghe nói để tránh việc 2 user đăng nhập vào một website cùng 1 thời điểm thì ta phải kiểm tra xem session ID và IP Address của người mới đăng nhập đó có trùng với session ID và IP Address của user đang login hiện tại không, nếu trùng thì mới cho đăng nhập vào. Nhưng theo khái niệm về session ID thì mình nghĩ khi một user đang đăng nhập với session ID đã được cấp phát là 15 đi chẳng hạn, thì chắc rằng một user khác đăng nhập vô không thể cũng có session ID = 15 được nếu vậy mình nghĩ chỉ cần check session ID thôi chứ
jiSh@n viết 01:44 ngày 10/10/2018
Ko thể có chuyện trùng nhau đâu bạn. Session ID được generate ngẫu nhiên độ dài đến 32 ký tự. Hơn nữa, script chỉ có thể kiểm tra session ID của client hiện hành (đúng nghĩa session), client khác đang ở trong 1 phiên làm việc khác, có 1 ko gian nhớ khác và 1 session khác mặc dù cả 2 client đều truy xuất đến cùng 1 script. Bạn chỉ có thể kiểm soát được tất cả các session khi bạn chuyển session vào database, hoặc bạn có quyền truy xuất đến thư mục lưu session của php thôi.
scripter viết 01:39 ngày 10/10/2018
Hi jiSh@n,
Session ID được generate ngẫu nhiên độ dài đến 32 ký tự.
You're right. Bạn có thể cho mình biết, có bao nhiêu trường hợp cho session ID được tạo không? ^^
jiSh@n viết 01:39 ngày 10/10/2018
Quote Được gửi bởi scripter View Post
Bạn có thể cho mình biết, có bao nhiêu trường hợp cho session ID được tạo không? ^^
Ý bạn muốn hỏi gì? Có thể có bao nhiêu sesion id à?
NumPad0 viết 01:33 ngày 10/10/2018
Quote Được gửi bởi scripter View Post
Hi jiSh@n,
Bạn có thể cho mình biết, có bao nhiêu trường hợp cho session ID được tạo không? ^^
Silly.
Địa chỉ IP bao gồm 4 nhóm, mỗi nhóm 8bit.
Như vậy theo như thiết kế thì session do php tạo ra có thể phục vụ cả thế giới IPv4.
scripter viết 01:42 ngày 10/10/2018
Đừng có cho đó là câu hỏi silly khi mà bạn chưa biết chính xác có bao nhiêu cái session ID sẽ được tạo ra!
Khi bạn biết chính xác con số hãy post lên rùi gán câu silly cho tôi, như thế chưa muộn đâu!
Cheers ^^
NumPad0 viết 01:39 ngày 10/10/2018
Ơh. Đã trả lời.
Session do PHP tạo ra bao gồm 32 giá trị hex: 128bit
Như vậy là số session không collision mà PHP có thể tạo ra là 2^128 giá trị.
Trong khi đó IP của kiến trúc v4 bao gồm 4 octet tức là 32bit. Do đó, số IP có thể có là 2^32.
Đủ phục vụ số IP của kiến trúc IPv4 truy cập cùng lúc.
NumPad0 viết 01:34 ngày 10/10/2018
Tui nói sai hay sao mà hong ai hưởng ứng vậy? Kìa bạn scripter?
shiftdel15589 viết 01:42 ngày 10/10/2018
Session có thể trùng nhau.
Có bao giờ bạn gặp trường hợp vào 1 forum dùng session, tự nhiên phía trên có chữ "Welcome, ***..." trong khi bạn....chưa login chưa ?
VnVision viết 01:30 ngày 10/10/2018
Quote Được gửi bởi shiftdel15589 View Post
Session có thể trùng nhau.
Có bao giờ bạn gặp trường hợp vào 1 forum dùng session, tự nhiên phía trên có chữ "Welcome, ***..." trong khi bạn....chưa login chưa ?
Ý bạn nói *** ở đây là nick của mình ở forum đó (mặc dù lần trước mình đã logout) hay là nick của người khác vậy? Nếu là nick mình thì chắc là do cookie chưa được xóa thôi (lý do này khác), & chuyện đó thì thường xuyên. Còn php session id thì được nói là unique.
Bài liên quan
0