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 name = args[i];
HttpCookie cookie = new HttpCookie(name, args[++i]);
cookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Set(cookie);
}Nefunguje to ani takto:
for (int i = 0; i < args.Length; i++)
{
string name = args[i];
page.Response.Cookies[name].Name = args[i];
page.Response.Cookies[name].Value = args[++i];
page.Response.Cookies[name].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 cookie = GetExistsOrNew(page);
//-Pokusil jsem se získat starou cookie novým způsobem
for (int i = 0; i<args.Length; i++)
{
cookie.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é
cookie.Values["Expire"] = "5 Days";
cookie.Expires.AddDays(5);
cookie.Domain = M.wa;
//-Je zbytečné nastavovat i vlastnost Cookie, tu musíte nastavit ale ne v hromadné cookie, nýbrž jednoduché
cookie.Value = "";
page.Response.Cookies.Add(cookie);Zbývá jen napsat jak to teda funguje – jen takto:
for (int i = 0; i < args.Length; i++)
{
string name = args[i];
Response.Cookies[name].Name = args[i];
Response.Cookies[name].Value = args[++i];
Response.Cookies[name].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.