Dneska to byl zase zahul, ktery jsem dokoncil presne ve 12h a zacal jsem na nem delat uz vcera. O co slo? O nic vetsiho nez ukladani persistentnich(permanentnich) Cookies. Protoze je to opravdu silene, rozhodl jsem se to dat na blog, at ostatni tyto hruzy nezazivaji take 😀 :
Pole args je libovolny pocet hodnot, jejiz soucet je sudy, priklad:
1 |
string[] args = new string[] { "login", txtLogin.Text }; |
A ted jak to nefunguje..treba takto:
1 2 3 4 5 6 7 |
for (int i = 0; i < args.Length; i++) { string nazev = args[i]; HttpCookie cook = new HttpCookie(nazev, args[++i]); cook.Expires = DateTime.Now.AddYears(1); Response.Cookies.Set(cook); } |
Nefunguje to ani takto:
1 2 3 4 5 6 7 |
for (int i = 0; i < args.Length; i++) { string nazev = args[i]; page.Response.Cookies[nazev].Name = args[i]; page.Response.Cookies[nazev].Value = args[++i]; page.Response.Cookies[nazev].Expires = DateTime.Now.AddYears(1); } |
Nezkousejte to ani nahodou s hromadnymi Cookie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
//-Ziskam novou cookie nebo vezmu starou, bude li existovat HttpCookie cook = GetExistsOrNew(page); //-Pokusil jsem se ziskat starou cookie novym zpusobem //cook = page.Request.Cookies.Get(M.ja); for (int i = 0; i<args.Length; i++) { cook.Values[args[i]] = args[++i]; } //-Nastaveni Expire jako hodnoty je zbytecne, i kdyz jsem to na internetu u persistentnich cookie videla jako nutne cook.Values["Expire"] = "5 Days"; cook.Expires.AddDays(5); cook.Domain = M.wa; //-Je zbytecne nastavovat i vlastnost Cookie, tu musite nastavit ale ne v hromadne cookie, nybrz jednoduche cook.Value = ""; page.Response.Cookies.Add(cook); |
Zbyva jen napsat jak to teda funguje – jen takto:
1 2 3 4 5 6 7 |
for (int i = 0; i < args.Length; i++) { string nazev = args[i]; Response.Cookies[nazev].Name = args[i]; Response.Cookies[nazev].Value = args[++i]; Response.Cookies[nazev].Expires = DateTime.Now.AddYears(1); } |
A jeste na konec jediny zpusob jak cookie zrusit platnost:
1 |
Response.Cookies["login"].Expires = DateTime.Now.AddYears(-1); |
Takze zapomente na mazani timto stylem:
1 |
Response.Cookies.Remove(M.ja); |
Jeste neco, to pridavani cookie musi byt v kodu stranky nebo nejake stranky ze ktere odvozuje. Pridavat cookie pres HttpContext.Current jsem nezkousel.