Avatar billede qaaq Nybegynder
28. august 2006 - 00:07 Der er 7 kommentarer

cookie gemmes ikke når man skifter side (men kun den ene vej)

Hej, jeg har et meget mystisk cookie problem:

Jeg har en side hvor jeg via et href loader den samme side med dette link "default.asp?Mode=insert&VareID=xxx1"
I toppen af default siden griber jeg eventen og enten tilføjer 1 til cookiens værdi eller laver cookien med værdien 1, og sender videre til kurv.asp:

strMode = Request.QueryString("mode")
strvareID = Request.QueryString("vareID")
if strMode = "insert" then
  Found = False
  for each Key in Request.Cookies("Kurv")
    if Key = strvareID then
      Response.Cookies("Kurv")(Key) = CStr(CInt(Request.Cookies("Kurv")(Key)) + 1)
      Found = True
      exit for
    end if
  next
  if not Found then
    Response.Cookies("Kurv")(strvareID) = "1"
  end if
  response.redirect("dynamisk/kurv.asp")
end if

På kurv siden lister jeg alt indholdet af cookien, og giver mulighed for at rette antallet: (textfeltet har samme navn som varenummeret)

If Request.Form("kurv") <> "" Then
    for each item in Request.Form
          for each key in Request.Cookies("Kurv")
            if key = item then
              Response.Cookies("Kurv")(key) = Request.Form(item)
              exit for
            end if
          next
    next
End if

det virker fint, og det nye antal står i kurven. Men så snart man opdaterer kurv siden ved at klikke på linket til den eller går tilbage til default siden, så rettes antallet i cookien til det antal der var før opdateringen i kurv.asp


HVORFOR??? HJÆLP???
Avatar billede thesurfer Nybegynder
28. august 2006 - 00:16 #1
Det kan være at siden er cached, og læses fra den lokale kopi.

Prøv at reloade den side, der viser det gamle antal..
Avatar billede thesurfer Nybegynder
28. august 2006 - 00:17 #2
Avatar billede qaaq Nybegynder
28. august 2006 - 00:26 #3
det er ikke et cache problem, selvom man gør alt for at fjerne cache så går den stadig tilbage til det antal som default.asp har lavet
Avatar billede thesurfer Nybegynder
28. august 2006 - 20:56 #4
- Dvs din cookie ("Kurv") indeholder nøgler (f.eks. "xxx1", "xxx2") med med en værdi, der fortæller hvor mange stk der er af "xxx1" (osv)..

- Denne linie tilføjer 1 til antallet, korrekt?:
Response.Cookies("Kurv")(Key) = CStr(CInt(Request.Cookies("Kurv")(Key)) + 1)
Dvs, den tager ikke højde for at man f.eks. lægger 5 stk til..?

- Hvis "xxx1" ikke findes i kurven, sættes den automatisk til 1..

Du har vel ikke en test-side, så vi kan se scriptet "in action"..?
Avatar billede qaaq Nybegynder
28. august 2006 - 22:02 #5
ja det er helt rigtigt opfattet, jeg har desværre ingen test side
Avatar billede erikjacobsen Ekspert
28. august 2006 - 22:08 #6
Jeg ved ikke om du er rendt ind i det gamle problem med at en IIS/ASP-webserver ikke både kan lave en redirect (response.redirect("dynamisk/kurv.asp")) og samtidig lægge en cookie. Jeg synes ellers at have testet for nylig (½-1 år siden), at et par IIS ikke længere havde det problem.

Og så vil jeg da lige tilføje, at det der ASP er gammel teknologi, og egentlig værd at spilde sin tid på. Der er sket så meget, der vil gøre livet nemmere for dig: ASP.NET og andre teknologier.

Men hænger du fast i kviksandet kan løsningen være at lave en HTML side med en meta-redirect i stedet for.
Avatar billede erikjacobsen Ekspert
28. august 2006 - 22:09 #7
...og egentlig ikke værd at spilde sin tid på.... ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester