Dneska to byl zase záhul, který jsem dokončil přesně ve 12h a začal jsem na něm dělat už včera. O co šlo? O nic většího než ukládání persistentních(permanentních) Cookies. Protože je to opravdu šílené, rozhodl jsem se to dát na blog, ať ostatní tyto hrůzy nezažívají také 😀 :
Pole args je libovolný počet hodnot, jejíž součet je sudý, příklad:
string[] args = new string[] { "login", txtLogin.Text };A teď jak to nefunguje..třeba takto:
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:
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);
}Nezkoušejte to ani náhodou s hromadnými Cookie:
//-Získám novou cookie nebo vezmu starou, bude li existovat
HttpCookie cook = GetExistsOrNew(page);
//-Pokusil jsem se získat starou cookie novým způsobem
//cook = page.Request.Cookies.Get(M.ja);
for (int i = 0; i<args.Length; i++)
{
cook.Values[args[i]] = args[++i];
}
//-Nastavení Expire jako hodnoty je zbytečné, i když jsem to na internetu u persistentních cookie viděla jako nutné
cook.Values["Expire"] = "5 Days";
cook.Expires.AddDays(5);
cook.Domain = M.wa;
//-Je zbytečné nastavovat i vlastnost Cookie, tu musíte nastavit ale ne v hromadné cookie, nýbrž jednoduché
cook.Value = "";
page.Response.Cookies.Add(cook);Zbývá jen napsat jak to teda funguje – jen takto:
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 ještě na konec jediný způsob jak cookie zrušit platnost:
Response.Cookies["login"].Expires = DateTime.Now.AddYears(-1);Takže zapomeňte na mazání tímto stylem:
Response.Cookies.Remove(M.ja);Ještě něco, to přidávání cookie musí být v kódu stránky nebo nějaké stránky ze které odvozuje. Přidávat cookie přes HttpContext.Current jsem nezkoušel.