2009-12-11 32 views
7

Tôi vừa hoàn thành bài kiểm tra cuối cùng về các ứng dụng web. Tóm tắt những gì đã được một bài kiểm tra khá dễ dàng (mặc dù dài - 12 trang) là một câu hỏi yêu cầu chúng tôi để mã thực hiện các phiên, tương tự như được thực hiện bởi javax.http.HttpSession.HttpSession được triển khai như thế nào?

Tôi ghét phải thừa nhận, nó làm tôi bối rối. Tôi cranked out một BS khá implemetation bằng cách sử dụng một HashMap và đã làm một số craziness với một ngẫu nhiên cookie chuỗi ánh xạ đến một HashMap serialized trên máy chủ, nhưng tôi khá chắc chắn đó là không có thật ... và bây giờ tôi đang chết để biết làm thế nào nó thực sự làm xong.

Riêng với một người đã sử dụng PHP rộng rãi nhưng vì lý do nào đó không bao giờ bận tâm tìm hiểu ma thuật đằng sau sự tiện lợi, tôi rất quan tâm để tìm hiểu thêm về các phiên triển khai cơ bản của phiên. J2EE và PHP chắc chắn, nhưng bất kỳ ngôn ngữ/khung công tác nào cũng tuyệt vời. Cảm ơn!

Trả lời

8

Từ hiểu biết của tôi - bạn thân thiết.

Từ sự hiểu biết của tôi một cookie với bản chất là "ID" MD5 được lưu ở phía máy khách và được phân phối qua cookie hoặc sửa đổi GET.

Về phía máy chủ, dữ liệu "phiên" với sessionID phù hợp được lưu trong tệp tạm thời (trên Linux, nó được mặc định là/tmp). Thư mục phiên tôi tin có thể được đặt trong tệp PHP.ini.

+1

+1, tóm tắt ngắn gọn. Trong PHP, bạn cũng có thể thực hiện các trình điều khiển phiên của riêng bạn rất dễ dàng, trong trường hợp bạn muốn sử dụng cơ sở dữ liệu hoặc nguồn khác cho dữ liệu phiên của bạn. Về cơ bản, một phiên chỉ là một tập dữ liệu duy nhất với một vài phương pháp để tương tác với nó (lưu, cập nhật, xóa) và dữ liệu được gắn với người dùng thông qua một mã thông báo có thể nhận dạng nhỏ, tức là. cookie hoặc tham số GET. – zombat

+1

Có thể đáng để gọi ra rằng tên của các cookie là JSESSIONID và PHPSESSIONID tương ứng. Họ cũng không nhất thiết phải là cookie. Chúng có thể là một phần của URL như; jsessionid = hoặc; phpsessionid = . –

+0

Cách hay để hiểu phần HTTP của phiên là một cái gì đó giống như tiêu đề HTTP: https://addons.mozilla.org/en-US/firefox/addon/3829 –

1

Vì đây là một giao diện, bạn có thể xem các lớp đang triển khai nó trong một thùng chứa web nguồn mở như Tomcat và tự mình xem.

Các vấn đề liên quan