webForumDet fria alternativet

Nybörjare på cookies

ASP

24 svar · 533 visningar · startad av danielpetersson

Medlem sedan apr. 2002123 inlägg
Frågan#1

Hejsan!

Jag har fortfarande lite problem med dessa j***a cookies. Jag använder mig av tvådimensionella cookies.

dim myArray
myArray = array(0, "strumpor", 2)
Response.Cookies("myArray(0)")("vara") = myArray(1)
Response.Cookies("myArray(0)")("antal") = myArray(2)

myArray = array(1, "kalsongor", 3)
Response.Cookies("myArray(0)")("vara") = myArray(1)
Response.Cookies("myArray(0)")("antal") = myArray(2)

Jag hänger inte riktigt med på hur man använder kakorna.
T ex hur skriver jag ut kakorna med Server.HTMLEncode?

Medlem sedan apr. 2002123 inlägg
#2

Jag har löst det!

Medlem sedan juli 20011 084 inlägg
#3

Tror du missuppfattat det lite! jag vet inte själv helt riktigt hur han menade... men jag trodde det var så att du skriver

Response.Cookies("varor") = myArray

Kanske var jag som missuppfattade det... men annars så hänger kanske hela arrayn med i kakan och du loppar sedan bara den.

edit: kan utveckla mitt till en fråga... kan man ha en array i en kaka?

Medlem sedan apr. 2002123 inlägg
#4

Jag har skrivit så här:

cookieArray = Array(Request.Form("formArtnr"), Request.Form("formAbenam"), Request.Form("antalArtiklar"))

Response.Cookies("cookieArray(0)")("artNr") = cookieArray(0)
Response.Cookies("cookieArray(0)")("aBenam") = cookieArray(1)
Response.Cookies("cookieArray(0)")("antalArtiklar") = cookieArray(2)

Jag vill man ska särskilja kakorna genom artikelnr på varan, men sedan när jag skriver ut dom skriver jag:
Response.Write Request.Cookies("cookieArray(0)")("aBenam")

Varför läggs inte informationen i cookieArray(0) in i arrayen ut namnet cookieArray(0)?

Finns det något smidigare sätt än detta?
Väldigt mottaglig för ideer.

Medlem sedan mars 20015 287 inlägg
#5

Är det inte som så att du skall skriva:

Response.Cookies(cookieArray(0))("artNr") = cookieArray(0)

osv. för att få olika namn på kakorna. Det egentliga värdet som läggs i kakan blir väl hursomhels rätt?

Medlem sedan apr. 2002123 inlägg
#6

Du har rätt solbulle. Det är jag som slarvat.
Tack

Medlem sedan apr. 2002123 inlägg
#7

Hur skriver man om man först vill kolla upp om där finns en existerande cookie med ett speciellt namn. Om det inte finns en sådan cookie så skapar man en annars plusar man på den existerande. Cookie ska innehålla en siffra.
Någon som vet hur man ska skriva?

Medlem sedan apr. 2002123 inlägg
#8

Jag löste det.

olikaVaror = Request.Form("olikaVaror")
if Request.Cookies("olikaVaror") = false then
Response.Cookies("olikaVaror") = olikaVaror
else
Response.Cookies("olikaVaror") = Request.Cookies("olikaVaror") + 1
olikaVaror = Request.Cookies("olikaVaror")
end if

Medlem sedan apr. 2002123 inlägg
#9

Namnet på cookie är en siffra, men det funkar inte att sätta in i.

For i=1 to 10
Response.Write "<TR>"
Response.Write "<TD>" & Request.Cookies(i)("aBenam")
Next

Request-objekt fel 'ASP 0105 : 80004005'
Indexet ligger utanför intervallet
/varukorg.asp, rad 23
Ett matrisindex ligger utanför intervallet.

Vad gör jag för fel???

Medlem sedan mars 20015 287 inlägg
#10

Har du 10st olika cookies? (Med namn ...1-10?)
Annars kommer det inte att fungera.

Medlem sedan apr. 2002123 inlägg
#11

Jepp.
Jag har en cookie som är räknare så jag skriver egentligen:
for i=1 to Request.Cookies("olikaVaror")
'''
'''
next
Request.Cookies ökar med 1 för varje ny cookie.

Det funkar när man skriver:
Response.Write Request.Cookies("1")("aBenam")
men inte när man skriver:
Response.Write Request.Cookies(i)("aBenam")
trots att i=1

Medlem sedan dec. 200012 464 inlägg
#12

Response.Write Request.Cookies(cstr(i))("aBenam")

Medlem sedan apr. 2002123 inlägg
#13

Tack så mycket. Det funkade med cstr.
Du vet möjligtvis inte hur man tar bort en specifik cookie. T ex om någon trycker på en ta bort knapp för en viss beställning i en varukorg..

Medlem sedan apr. 2002123 inlägg
#14

Eller för att göra det lite enklare: Hur tar man bort alla existerande cookies tillhörande ens webbsida?

Medlem sedan juni 200032 967 inlägg
#15

Du får sätta expires för cookien till ett passerat datum.

Response.Cookies("dinkaka").Expires = DateAdd("d", -1000, Date)

Mvh,

Medlem sedan juli 20011 084 inlägg
#16

antar eftersom ingen svarar så kan man inte ha en array i en kaka?

Medlem sedan juni 200032 967 inlägg
#17

Jag ser inte hur det skulle gå till. En cookie är ju inget annat än en ren textfil.

Medlem sedan apr. 2002123 inlägg
#18

Hur kollar man om en viss cookie redan finns?
if Request.Cookies("olikaVaror") = "" then
'''
else
''''
end if

Vet inte vad man ska sätt cookie lika med i villkoret.

Medlem sedan juni 200032 967 inlägg
#19

Har du provat HasKeys?

if Request.Cookies("olikaVaror").HasKeys then
   ' ja, jippi, finns! :)
else
   ' nä. :(
end if

Mvh,

Medlem sedan apr. 2002123 inlägg
#20

Fick inte rätt på det ändå @nders.
Hela koden ser ut så här:

dim i
i = 1
if Request.Cookies("antal") = false then
Response.Cookies("antal") = i
else
Response.Cookies("antal") = Request.Cookies(cstr(i)) + 1
i = Request.Cookies("antal")
end if

cookieArray = Array(Request.Form("formArtnr"), Request.Form("formAbenam"), Request.Form("antalArtiklar"))
Response.Cookies(i)("artNr") = cookieArray(0)
Response.Cookies(i)("aBenam") = cookieArray(1)
Response.Cookies(i)("antalArtiklar") = cookieArray(2)

Cookien - antal ska jag sen använda i en varukorg.asp för att veta hur mga olika varor som användaren har beställt. Ungefär så här:

for i=1 to Request.Cookies("antal")
Response.Write Request.Cookies(cstr(i))("aBenam") & "<BR>"
Response.Write Request.Cookies(cstr(i))("artNr") & "<BR>"
Response.Write Request.Cookies(cstr(i))("antalArtiklar") & "<BR>"
Next

261 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)