Just nu i M3-nätverket
Jump to content

Spara cookies!


Coffer

Recommended Posts

Hejsan!

 

Hur gör man för att cookies inte skall raderas varje gång man laddar in en sida? Jag har skapat en funktion som lagrar en cookie, men varje gång jag laddar om sidan så raderas den cookie jag sparat. Varför?

 

Sub ChangeFontStyle(sender as Object, e as EventArgs)
Response.Cookies("FontSizeStyle").Value = FontSizeStyleList.SelectedItem.Value
Response.Cookies("FontSizeStyle").Expires = DateTime.Now.AddDays(365)
Response.Redirect("http://www.gisslen.net/homepage/per/settings.aspx")
   End Sub

 

MVH.

//Kristofer

 

Link to comment
Share on other sites

Anjuna Moon

Du får nog sluta tänka gammal ASP först och sluta använda Response. Sedan, oavsett system, så måste cookies ges en tid för sin överlevnad. I gammal ASP med Expires och i .Net med .Expired på Cookie-objektet. Annars överlever cookien bara sessionen ut.

 

Added: Såg just att du faktiskt tänkt på expires, så måste fundera vidare på problemet

[inlägget ändrat 2004-04-11 05:29:01 av Anjuna Moon]

Link to comment
Share on other sites

Nåt sånt här brukar jag göra

 

Dim cook As New HttpCookie("cook")

cook.Expires = DateTime.Now.AddMonths(1)

cook.Value = "apa"

 

Link to comment
Share on other sites

Hur jag än gör, Response-metoden eller inte, så lagras inte cookien. Problemet är inte hur jag sätter den, för enligt MSDN så spelar det ingen roll vilken av metoderna jag använder. Däremot vägrar cookien bestämt att lagras, det vill säga trots att jag begär att den skall utgå 365 dagar efter att den satts, så nollställs den så fort jag går till en annan sida. Frågan är: Varför???

 

MVH

// Kristofer

 

 

Link to comment
Share on other sites

Anjuna Moon

Dum fråga, men lika bra att jag ställer den för uteslutnings skull: Du har inte spärrat tillfälliga cookies i din browser?

 

Link to comment
Share on other sites

Thomas Tydal

Vad är det för adress till din sida så man kan testa? Dels kan jag ju då kolla hur cookien ser ut (om det är något fel på den) men också se om det funkar hos mig, för då är det ju någon inställning i din webbläsare och inte på servern... Så du letar efter felet på rätt ställe, menar jag...

 

 

Link to comment
Share on other sites

Hmm... okej. Vad är det som är fel? Jag fattar inte hur jag skall sätta cookien då om den inte gör det redan.

 

MVH

//Kristofer

 

Link to comment
Share on other sites

Thomas Tydal

När jag provade att ändra storlek till stor fick jag:

 

Set-Cookie: LargeSize=LargeSize; expires=Mon, 11-Apr-2005 21:00:29 GMT; path=/

Set-Cookie: FontSizeStyle; path=/

 

När jag ändrade till mellan fick jag:

 

Set-Cookie: FontSizeStyle=NormalSize; expires=Mon, 11-Apr-2005 21:00:48 GMT; path=/

 

 

 

Link to comment
Share on other sites

Hmm... mellan skall returnera:

 

Set-Cookie: FontSizeStyle=MediumSize; expires="angiven tid..." GMT; path=/

 

Hur får du den att returnera dessa värden? Var ställer du in det?

 

Link to comment
Share on other sites

Thomas Tydal

Den sätter FontSizeStyle-cookien till ingenting när man laddar om sidan och man får då liten stil trots att man begär MediumSize i cookien.

 

 

Link to comment
Share on other sites

Okej... men hur gör jag för att fixa detta? Så här ser min nuvarande kod ut:

 

   Sub ChangeFontStyle(sender as Object, e as EventArgs)
Response.Cookies("FontSizeStyle").Value = FontSizeStyleList.SelectedItem.Value
Response.Cookies("FontSizeStyle").Expires = DateTime.Now.AddDays(365)

If Response.Cookies("FontSizeStyle").Value <> "" Then
    lblText.Text = "Stilmall: Gisslen" & Server.HtmlEncode(Response.Cookies("FontSizeStyle").Value) & "Styles.css"
Else
    lblText.Text = "Stilmall: GisslenNormalSizeStyles.css"
End If

'Response.Redirect("http://www.gisslen.net/homepage/per/settings.aspx")
   End Sub

 

Link to comment
Share on other sites

Jag tror att jag har löst det...

 

If Response.Cookies("FontSizeStyle").Value <> "" Then
lblText.Text = "Stilmall: Gisslen" & Server.HtmlEncode(Response.Cookies("FontSizeStyle").Value) & "Styles.css"
Else
lblText.Text = "Stilmall: GisslenNormalSizeStyles.css"
End If

 

skall ju ändras till

 

If Request.Cookies("FontSizeStyle").Value <> "" Then
lblText.Text = "Stilmall: Gisslen" & Server.HtmlEncode(Response.Cookies("FontSizeStyle").Value) & "Styles.css"
Else
lblText.Text = "Stilmall: GisslenNormalSizeStyles.css"
End If

 

Jag tror att detta löser det... ibland blir man bara för blind. :)

 

Link to comment
Share on other sites

Thomas Tydal

Aha, du hade den koden på samma ställe. Då hänger jag med.

 

Nu verkar allt funka sånär som på att den inte verkställer typsnittsändringen förrän man laddat om en extra gång.

 

[inlägget ändrat 2004-04-11 23:24:57 av Thomas Tydal]

Link to comment
Share on other sites

Nu fungerar allt som det skall. Response skulle ändras till Request som jag nämnde alldeles nyss... man blir blind för det man själv skriver. :) Tack för all hjälp i alla fall!

 

---

Jag har fixat det också, så nu laddar den om de nya inställningarna utan att man skall behöva manuellt ladda om sidan. :)

---

 

MVH

//Kristofer

 

[inlägget ändrat 2004-04-11 23:31:07 av Coffer]

Link to comment
Share on other sites

Nu verkar mina cookies i alla fall inte fungera!!!

 

Om jag raderar alla cookies i webläsaren, så får jag följande felmeddelande när jag försöker att ladda in min sida:

 

System.NullReferenceException: Object reference not set to an instance of an object.

 

VARFÖR????????

 

Hur kollar man förresten om förekomsten av cookies? Alltså inte ett värde på en cookie, utan om en viss cookie överhuvudtaget existerar???

 

MVH

//Kristofer

 

[inlägget ändrat 2004-04-12 12:00:05 av Coffer]

Link to comment
Share on other sites

Så här gör jag på en sida och det funkar

 

HttpCookie cookie = Request.Cookies["mincookie];
// kolla om cookie existerar
if (cookie == null)
{
// Hittade ingen cookie
cookie = new HttpCookie("mincookie, "1");
cookie.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(cookie);
}
else
{
// Cookien fanns
}

 

[inlägget ändrat 2004-04-13 20:56:04 av Patrik Ahlberg]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...