Hej!
Det går att göra, inga problem, man kan ha "flerdimensionella" kakor. Det är (ganska) utförligt beskrivet på http://www.w3schools.com/asp/asp_cookies.asp.
Så du skulle kunna skapa en kaka typ Response.Cookies("maila")("bild1") osv
MVH
9 svar · 489 visningar · startad av eee
Jag har en sida där man skall kunna rösta på flera olika bilder.
Mina kunskaper när det gäller cookies är begränsad och jag har testat med följande kod:
<%
maila = request.cookies("maila")
if not maila <>"" then
strMaila=DateAdd("n", +1, Time)
else
strMaila=request.cookies("maila")
end if
if dateDiff("n",Time(),strMaila)<1 then
'Om användaren redan har röstat.....
%>
Du har redan röstat...
<%
else
' Röstkoden.....
Response.Cookies("maila")= time()
Response.Cookies("maila").Expires = dateAdd("n",360,now()) '360(minuter) kan ändras beroende på önskemål
%>
Det där sätter ju dock en kaka om en besökare röstat på bild 1, ska han rösta på bild 2 så säger sidan ifrån för att personen redan har röstat. Jag vill ju att besökaren skall kunna rösta 1 gång per bild, inte en gång totalt.
Någon som vet hur jag kan lösa det smidigt?
Inloggning är inte aktuellt på sidan.
Tack på förhand!
Hej!
Det går att göra, inga problem, man kan ha "flerdimensionella" kakor. Det är (ganska) utförligt beskrivet på http://www.w3schools.com/asp/asp_cookies.asp.
Så du skulle kunna skapa en kaka typ Response.Cookies("maila")("bild1") osv
MVH
Tack för en bra länk headbug!
Dock är jag något begränsad vad gäller kodkunskap så jag har ett par frågor till : :r
Sidan man skickar rösten ifrån har följande querystring:
bild.asp?id=100 (som exempel).
Jag förstår ju så långt enligt din fina länk du gav (där jag f.ö lärde mig en del annat) att jag ska lagra en cookie vid tex namn bild med det nummer som querystringen har och på så vis läsa av om just det numret röstat innan.
Har du headbug, eller någon annan lust att skriva hur det skulle fungera i praktiken enligt mitt kodexempel nedan?
Beklagar min okunskap :(
Response.Cookies("maila")("bild" & Request.Querystring("id")) = True
sen:
If request.Cookies("maila")("bild" & Request.Querystring("id")) = True Then
Response.Write "Du har redan röstat!"
End If
...eller något :D
Tack för tipset jag testade följande:
<%
If request.Cookies("maila")("bild" & Request.Querystring("id")) = True Then
Response.Write "Du har redan röstat!"
else
Response.Cookies("maila")("bild" & Request.Querystring("id")) = True
'Gör en insert i din databas
'sql="insert bla bla"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("databas.mdb")
SQL = "UPDATE bilder SET Poang = Poang+"&Request.Form("betyg")&", TotalaRoster = TotalaRoster+1 WHERE bild_id = "&Request.Querystring("bild_id")&""
Conn.Execute(SQL)
Conn.Close
response.write "Röst räknad"
End If
%>
Dock får jag röst räknad hela tiden iaf.
Vad har jag missat för att den inte skall blocka utifrån cookien?
Stort tack för all hjälp hittils!
Hej! Det beror på att du inte kan lagra booleska värden i kakan, tror jag. Testa med
If request.Cookies("maila")("bild" & Request.Querystring("id")) = "True" Then
Response.Write "Du har redan röstat!"
else
Response.Cookies("maila")("bild" & Request.Querystring("id")) = "True"
istället!
Sen hoppas jag att du gör en kvalitetskoll på variabeln poäng så att man inte kan skriva id=101&poang=10000 själv :)
/HB
hehe tack headbug, men den koden ger bara meddelandet att besökaren röstat hela tiden, testade tömma cookies men samma felmeddelande igen..
Okej, då ligger felet någon annan stans, för jag provade och det fungerade!
http://www.egenart.org/test/nr2/
http://www.egenart.org/test/nr2/index.asp?id=100
Funkar!
/HB
Härligt att det löste sig :D