2009-07-23 43 views
26

Tôi có trang web rất lớn sử dụng nhiều cookie. Có khoảng. Có 14 cookie khác nhau. Tôi có các cookie khác nhau cho mỗi mục. Khi người dùng lướt trang web, họ sẽ có 14 cookie trong trình duyệt của họ. Tôi không muốn cái này.Lưu trữ nhiều giá trị trong cookie

Tôi muốn một cookie duy nhất cho trang web của mình sẽ có 14 mục và tôi có thể thêm, chỉnh sửa và xóa chúng. Tôi đã thử nhiều cách nhưng tôi không thể làm điều này.

Tôi cần phải đặt một số cookie thời gian chạy cũng như lưu tên người dùng trong cookie. Sau khi người dùng đăng nhập, tôi muốn lưu địa chỉ trang cá nhân của họ vào đó. Cuối cùng tôi muốn cả tên người dùng và địa chỉ trang web cá nhân cả hai. Tôi muốn lưu tên người dùng trước và sau đó khi người dùng truy cập vào trang web cá nhân của mình thì tôi sẽ lưu trữ thời gian chạy tên trang web cá nhân.

Có ai có ý tưởng về cách tôi có thể thực hiện việc này không?

Trả lời

43

Matthew đánh bại tôi vào nó, nhưng có, xem ASP.NET Cookies Overview ...

Để viết và đọc một cookie duy nhất với chìa khóa nhiều/giá trị, nó sẽ giống như thế này:

HttpCookie cookie = new HttpCookie("mybigcookie"); 
cookie.Values.Add("name", name); 
cookie.Values.Add("address", address); 

//get the values out 
string name = Request.Cookies["mybigcookie"]["name"]; 
string address = Request.Cookies["mybigcookie"]["address"]; 
+0

vẫn còn bạn đang lưu trữ tại cùng một time.name và địa chỉ như tôi đã làm theo HttpCookie cookie = new HttpCookie ("mybigcookie"); cookie.Values.Add ("tên", tên); và sau đó khi người dùng sử dụng trang web cá nhân của mình thì tôi muốn làm cookie.Values.Add ("địa chỉ", địa chỉ); Có thể không? –

+1

@Jalpesh: câu trả lời ngắn gọn là không, hãy kiểm tra chỉnh sửa của tôi. –

+0

Cú pháp tương đương javascript là gì? – JNappi

15

Có một phần trong số ASP.NET Cookies Overview thảo luận về cách triển khai nhiều cặp tên-giá trị (được gọi là khóa con) trong một cookie duy nhất. Tôi nghĩ rằng đây là những gì bạn có ý nghĩa.

Ví dụ từ trang đó, trong C#:

Response.Cookies["userInfo"]["userName"] = "patrick"; //userInfo is the cookie, userName is the subkey 
Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString(); //now lastVisit is the subkey 
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1); 

HttpCookie aCookie = new HttpCookie("userInfo"); 
aCookie.Values["userName"] = "patrick"; 
aCookie.Values["lastVisit"] = DateTime.Now.ToString(); 
aCookie.Expires = DateTime.Now.AddDays(1); 
Response.Cookies.Add(aCookie); 

EDIT: Từ Cookies Tổng quan (nhấn mạnh thêm):

Sửa và xóa Cookies: Bạn không thể trực tiếp sửa đổi một cookie. Thay vào đó, thay đổi cookie bao gồm tạo cookie mới với các giá trị mới và sau đó gửi cookie đến trình duyệt để ghi đè phiên bản cũ trên máy khách.

+0

Trong đó, họ đang lưu trữ cookie cùng một lúc như tên người dùng và trang web cá nhân và sau đó thêm cookie vào cookie trong khi trong trường hợp của tôi, một số thứ như tôi đã lưu tên người dùng trong cookie và sau đó tôi thêm một giá trị khác vào cookie như trang web cá nhân . Có cách nào để làm điều này không? –

2

Sửa đổi và xóa cookie: Bạn không thể sửa đổi trực tiếp một cookie. Thay vào đó, việc thay đổi cookie bao gồm việc tạo một cookie mới với các giá trị mới và sau đó gửi cookie tới trình duyệt để ghi đè lên phiên bản cũ trên máy khách.

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