


Programming
ASP .NET
ASP.NET Objects phần 5 | ASP.NET Objects phần 5 |
ASP.NET Objects phần 56. Session ObjectKhi Client nhận thông tin từ Server, quá trình trao đổi qua lại đó kết thúc ngay lập tức. Sau đó Server và Client không còn liên hệ gì với nhau nữa. Để Client và Server vẫn còn liên hệ với nhau ta thông qua đối tượng Session. Đối tượng Session cho phép lưu giữ thông tin người sử dụng dưới các dạng như biến số, đối tượng, string ... Khi người sử dụng qua site khác thì Session kết thúc, mọi thông tin người sử dụng đều được xóa sạch. a. Timeout: dùng để bố trí khoảng thời gian bao lâu 1 Session không làm việc nữa trước khi AsP.NET từ bỏ Session đó. Ví dụ: Có người vào trang web của bạn, không nhấp chuột vào bất cứ gì, session và các thông tin liên hệ sẽ mất trong vòng 20 phút. 20 phút này là giá trị mặc định nếu dùng IIS 5.0, nếu muốn thay đổi giá trị mặc định này thành 60 phút. Session.Timeout=60 b. Abandon: dùng để kết thúc 1 Session ngay tức khắc. Ví dụ: Sau khi user kiểm tra email xong và logout để người khác không thể dùng lúc họ vắng mặt bạn có thể kết thúc session đó bằng cách: Session.Abandon Mệnh lệnh này sẽ xóa sạch các cookie tạm thời cũng như các thông tin liên hệ. c. Làm việc với các Session Session được vận dụng như Array. Bạn có thể xuyên suốt (loop through) và vận dụng (manipulate) các biến số của Session. d. Sessions không Cookies Thông thường, ASP.NET dùng Cookies để lưu trữ Session ID và thông tin về user. Nhưng điều gì sẽ xảy ra nếu browser của user không hỗ trợ cookies. AsP.NET dùng một phương pháp (method) khác gọi là Cookie Munging tiến hành việc bảo quản session không cookies. Method này tự khởi động nếu AsP.NET phát hiện ra user không yểm trợ cookies. Điều này làm cho thông tin sẽ chậm trễ đôi chút vì AsP.NET phải mã hóa và giải mã (encode và decode) Session ID cùng với các thông tin liên hệ và đặt vào các trang web trước khi gởi đi. Tiến trình thứ tự như sau: - User yêu cầu hiển thị 1 trang web. - AsP.NET scan từng hyperlink trong mã HTML - Cứ mỗi hyperlink, AsP.NET sẽ gắn thêm phần Session ID đã được mã hóa (encode) Ví dụ: <a href="sessionwithoutcookies.aspx?SessionID=1v2v344000..."> Khi user nhấp 1 hyperlink, AsP.NET sẽ giải mã (decode) và chuyển phần Session đó tới trang web user yêu cầu. Trang web này sẽ vận dụng các biến số của Session và lập lại tiến trình để có thể giữ thông tin giữa các trang web với nhau. Lưu ý: dùng đối tượng Session khi cần lưu giữ 1 vài thông tin như username hay password. Nếu có quá nhiều thông tin cần lưu giữ, thì dùng cookies hay CSDL thích hợp và hiệu quả hơn. 7. HttpCookie Object Cookie chỉ là một tập tin nhỏ ở máy vi tính của user trong đó chứa mọi thông tin đặc trưng cho 1 mạng nào đó; ví dụ: tên user, password nhằm lưu thông tin cá biệt liên quan đến từng user khi lướt web. Cookie chỉ chứa kiểu dữ liệu đơn giản như: string, integer, float, boolean,... HttpCookie Object cung cấp các phương pháp (method) để tạo ra và vận dụng những cookies đó. Có thể dùng HttpCookie Object để kiểm tra các đặc tính của từng cookie. a. Tạo Cookies Dùng Response Object để tạo Cookies có 2 cách: + Tạo nhiều Cookies, mỗi cookie kèm một giá trị (gọi là Cookies đa dạng, đơn giá trị) + Tạo một Cookies, với nhiều cặp key/value (gọi là Cookies đơn dạng, đa giá trị) Ví dụ: ' Kiểu Cookies đa dạng, đơn giá trị Response.Cookies("MyCookie1").Value="Single Cookie Value 1" Response.Cookies("MyCookie2").Value="Single Cookie Value 2" ' Kiểu Cookies đơn dạng, đa giá trị Response.Cookies("MyAsPNETPage").("Username")="Admin" Response.Cookies("MyAsPNETPage").("Password")="admin" Ta nhận thấy kiểu Cookies đa dạng - đơn giá trị mỗi cookie có tên khác nhau ("MyCookie1" và "MyCookie2") với giá trị được xác định dùng .Value="...". Còn kiểu thứ hai, ta dùng từng cặp key/value cho mỗi dạng và giá trị riêng biệt nhưng cookie thì chỉ một tên thôi (ở đây là "MyasPNETPage"). Không nên sử dụng 2 kiểu trên với nhau. Không thể nào tạo ra một Cookie vừa có Value vừa có Key. b. Đáo hạn (Expires) Cookies Giả sử có người lướt mạng và ta tạo ra một cookie để lưu trữ thông tin về người ấy, nhưng nếu người ấy không vào mạng của bạn nữa thì không có lý do gì mạng của ta vẫn giữ ở trong máy tính của họ. Tuy họ có thể dễ dàng tự xóa bỏ cookie, nhưng hay hơn nữa ta có thể dùng đặc tính Expires để xóa bỏ tự động: ' Kiểu ngày giờ đáo hạn vào ngày 30 tháng 12 năm 2007 Response.Cookies("MyasPNETPage").Expires=DateTime. FromString("30/12/2008") ' Hoặc là đáo hạn một tháng kể từ khi mã nguồn được thi hành. Response.Cookies("MyAsPNETPage").Expires=DateTime. Now.AddMonths(1) Giá trị đáo hạn mặc định của cookies là 1000 phút. Để xóa sạch cookie ở máy Client, đơn giản là thiết lập giá trị của Expires thành 0 hay giá trị thời gian thuộc về quá khứ, Cookie sẽ biến mất khi user đóng browser của họ. HttpCookie Object còn vài đặc tính (properties) cần lưu ý sau: + Domain dùng để giới hạn việc sử dụng cookies ở một domain chỉ định. Ví dụ: www.myserver.com + Path dùng tương tự Domain, nhưng giới hạn việc sử dụng cookies ở path chỉ định nào đó trong Server của bạn. + HasKeys báo cho bạn biết Cookie dùng kiểu 'đa dạng, đơn giá trị" với các cặp key/value. + Secure báo cho AsP.NET biết nên chuyển cookie 1 cách an toàn hay không và thường chỉ xảy ra ở trên HTTPS protocol. Giá trị mặc định (default) của Secure là False. c. Liên hệ giữa Access với Cookies Client browser gửi tất cả các thông tin ở Cookie tới Server mỗi khi yêu cầu hiển thị (display) trang web. Có thể dùng đối tượng Request thu thập các thông tin đó. Bạn dùng cùng 1 cú pháp như ở phần 'Tạo ra Cookies' để liên hệ với cookie. Ví dụ: ' Cho kiểu Cookies đa dạng, đơn giá trị Response.write(Request.Cookies("MyCookie1").Value) Response.write(Request.Cookies("MyCookie2").Value) ' Cho kiểu Cookie đơn dạng, đa giá trị Response.write(Request.Cookies("MyAsPNETPage").("UserName")) Response.write(Request.Cookies("MyAsPNETPage").("Password")) |
| < Trước | Tiếp > |
|---|