Är det så att jag ger cookien ett värde från serverns aktuella datum och inte den som kollar på den.
Hur skriver man klientens datum ner till hans cookie ? ingen som vet..
18 svar · 471 visningar · startad av erka
Hejsan!
Jag har en sida där man röstar. Om man har röstat 3 ggr så får man vänta 2 dagar tills man får rösta igen.
topplistan.asp ser ut så här
<%Response.Buffer = True
Request.QueryString("rostat")
Dim Antal, Svar, Tack
Antal = Request.Cookies ("rosta")("id")
Svar = 3 - Antal
If Antal = 0 then
Antal = 0
ElseIf Antal > 2 then
Tack = "<br>Du är välkommen att rösta igen på nästa veckas topplista."
End If
%>
sen radar jag upp alla man kan rösta på
listaapp.asp ser ut så här
<%
Response.Buffer = True
Response.Cookies("rosta").Expires = Date() + 2
If Request.cookies("rosta")("id") > 2 Then
Response.redirect "redanrostat.asp"
Else
Response.cookies("rosta")("id") = Request.cookies("rosta")("id") +1
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/listan.mdb")
Connect.Open DSNtemp
SQLstmt = "SELECT * FROM lista"
SQLstmt = "UPDATE lista SET poang = poang +1 WHERE AID = " & Request.Querystring("id") & ""
Connect.Execute(SQLstmt)
Response.Redirect("topplistan.asp")
End If
%>
Om jag nu flyttar fram datumet 3 dagar eller så kan man rösta hur många ggr som helst. cookien verkar inte lägga in en ny. Detta ska jag ju kunna undvika på något sätt.
Snälla hjälp, mycket tacksam faktiskt..=)
Är det så att jag ger cookien ett värde från serverns aktuella datum och inte den som kollar på den.
Hur skriver man klientens datum ner till hans cookie ? ingen som vet..
Datumet som ASP/VBscript behandlar (om koden körs på servern) är alltid av serverns lokala tid, vill du använda klientens tid så måste du skicka med denna ifråna javascript till servern, förslagsvis via en Querystring...
Mvh, Vide
------------------
Kom hem till mig...
Tycker att i detta fall så spelar det ju ingen roll då datumet endast e en referens och den kommer ju alltid att stämma ..... så vida du inte flyttar siten varje dag mellan olika servrar så kommer de 2 dagarna alltid att vara 2 dagar vare sig du sätter datum referensen på servern eller clienten.
cya,
PatrikB
------------------
=================================
** ZWGdesign **
=================================
bort, bort, bort...
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
where do you want to go to die?</A>
[Redigerat av @nders den 29 sep 2000]
Nu är det helt konstigt...
Man röstar på topplistan och på den sidan kör jag denna kod..
<%Response.Buffer = True
Request.QueryString("rostat")
Dim Antal, Svar, Tack
Antal = Request.Cookies ("rosta")("id")
Svar = 3 - Antal
If Antal = 0 then
Antal = 0
ElseIf Antal > 2 then
Tack = "<br>Du är välkommen att rösta igen på nästa veckas topplista."
End If
%>
om man har några röster kvar så kan man klicka på en knapp vid varje röstobjekt. Denna sida topplistaapp.asp har koden
<%
Response.Buffer = True
Response.Cookies("rosta").Expires = Date() + 2
If Request.cookies("rosta")("id") > 2 Then
Response.redirect "redanrostat.asp"
Else
Response.cookies("rosta")("id") = Request.cookies("rosta")("id") +1
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/listan.mdb")
Connect.Open DSNtemp
SQLstmt = "SELECT * FROM lista"
SQLstmt = "UPDATE lista SET poang = poang +1 WHERE AID = " & Request.Querystring("id") & ""
Connect.Execute(SQLstmt)
Response.Redirect("topplistan.asp")
End If
%>
Nu är det skitkonstigt, om jag tar bort cookies i cookies katalogen som jag fått tidigare och ställer fram datumet ett par dagar. då kan man rösta hur många ggr som helst..?? varför och vad ska jag skriva..
Mycket tacksam hitills..
[Redigerat av erka den 29 sep 2000]
Men om jag ställer om datumet till 4 dagar eller så och tar bort alla cookies från min profil. Då kan jag rösta hur många ggr som helst..
**vrider mig i hårbottnen**
har nu suttit och läst igenom allt om cookies jag kan hitta här samt allt om cookies i mina böcker.Förstår inte varför det blir fel..??...
Det verkar som den inte skriver någon ny cookie om man flyttar fram datumet lixom..
Ber på mina bara knän..
Borde inte detta funka helt utmärkt
<%
Response.Buffer = True
Response.Cookies("rosta").Expires = DateAdd("d",2,Now)
If Request.cookies("rosta")("id") > 2 Then
Response.redirect "redanrostat.asp"
Else
Response.cookies("rosta")("id") = Request.cookies("rosta")("id") +1
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/listan.mdb")
Connect.Open DSNtemp
SQLstmt = "SELECT * FROM lista"
SQLstmt = "UPDATE lista SET poang = poang +1 WHERE AID = " & Request.Querystring("id") & ""
Connect.Execute(SQLstmt)
Response.Redirect("topplistan.asp")
End If
%>
Om jag flyttar fram det förbannade datumet 3 dagar så kan man rösta hur många ggr som helst. Om jag tar bort alla sparade cookies och flyttar fram datumet, då kan man likförbannat rösta hur många ggr som helst. Den borde väll skriva ner det datumet:..
Så jvla konstigt...
Börjar snart erbjuda pengar för hjälp med detta..
Är det fel på min dator kanske ???
Om jag tar bort expires funktionen óch har denna kod..
<%
Response.Buffer = True
If Request.cookies("rosta")("id") > 2 Then
Response.redirect "redanrostat.asp"
Else
Response.cookies("rosta")("id") = Request.cookies("rosta")("id") +1
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/listan.mdb")
Connect.Open DSNtemp
SQLstmt = "SELECT * FROM lista"
SQLstmt = "UPDATE lista SET poang = poang +1 WHERE AID = " & Request.Querystring("id") & ""
Connect.Execute(SQLstmt)
Response.Redirect("topplistan.asp")
End If
%>
då fungerar det att byta datum så klart. alltså är det fel på hur jag sätter in cookie expires..vart fan ska det inte, ser ju rätt ut som jag hade tidigare..
Testa att lägga den raden efter det att du sätter värdet till cookien...
Mvh, Vide
------------------
Kom hem till mig...
vide, vill du bli min fru, ska jag ta dig här och nu...=)
tack! alltså, hmmmmm kan vara att jag kokade min hjärna i bastun i förra veckan..Så nu vet alla, bada inte bastu !
Nehh nu blir jag tokig, ser inget fel med denna kod. När jag slänger upp den på servern och om jag har rätt datum inställt så kan man bara rösta tre gånger men om jag flyttar fram datumet på min maskin som jag surfar på nätet med kan man rösta hur mågna ggr som helst..
vad är det som kan vara fel ?
<%
Response.Buffer = True
If Request.cookies("rosta")("id") > 2 Then
Response.redirect "redanrostat.asp"
Else
Response.cookies("rosta")("id") = Request.cookies("rosta")("id") +1
Response.Cookies("rosta").Expires = Date() +2
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/listan.mdb")
Connect.Open DSNtemp
SQLstmt = "SELECT * FROM lista"
SQLstmt = "UPDATE lista SET poang = poang +1 WHERE AID = " & Request.Querystring("id") & ""
Connect.Execute(SQLstmt)
Response.Redirect("topplistan.asp")
End If
%>
blir konstig i skallen snart
vide , det du pratade om att sätta datuemet i från klienten, hur gör man det. Gärna rätt utförligt...=)
Men det verkar ju som om den inte skickar någon ny cookie till klienten när man flyttar fram datumet..Borde inte spela någon roll ju...ahhh
[Redigerat av erka den 11 okt 2000]
hej ! hur gör man om man vill att cookien ska hålla i tex 2 timmar ? orkar inte pula med 2 dagar för det fungerar ändå inte..grr...
någon ?
Response.cookies("Din_cookie").expires = dateadd("h",2,now)
------------------
Kom hem till mig...
Tack Vide. Du ser föresten inget fel på koden jag skrev tidigare..Fattar inte vad som är fel....den borde ju skicka en ny cookie som hindrar att rösta mer än 3 ggr om man flyttar fram datumet på en klient som kollar på sidan..
Men det gör den fan inte, då kan man rösta hur många ggr som helst..
tack för det, får sätta det på 2 timmar då ,men man blir ju sur om man inte löser något som man pulat med länge
Nja, ser inget direkt fel, men jag kan tänka mig att datatyperna inte stämmer överens när du jämför i If-satsen, testa detta istället:
If Cint(Request.cookies("rosta")("id")) > 2 Then
Cint() konverterar datatypen till en Integer...
Mvh, Vide
------------------
Kom hem till mig...
Fungerar fortfarande inte. Så jvla frustrerande. Varför ska det vara så svårt att få denna skit att fungera. Aja, tack för hjälpen i alla fall..Men den skriver fortfarande inte ner någon ny cookie om man flyttar fram datumet 2 dagar. Inte heller om jag ändrar om den som du skrev vide, tack i alla fall.
Om någon fortfarande orkar kolla så ser allt ut så här:
första sidan där man röstar:
<%
Request.QueryString("rostat")
Dim Antal, Svar, Tack
Antal = Request.Cookies ("rosta")("id")
Svar = 3 - Antal
If Antal = 0 then
Antal = 0
ElseIf Antal > 2 then
Tack = "<br>Du är välkommen att rösta igen på nästa veckas topplista."
Du
har nu röstat <%=Antal%> gång(er) och har <%=Svar%> röst(er) kvar.<%=Tack%>
<table width="500">
<% Do until RS.EOF %>
<tr><td width="30">
<a href="listapp.asp?id=<%=RS("AID")%>"><img src="images/knapp_ok.gif" border="0"></a>
</td><td width="15">
<img src="images/<%=RS("Bubblare")%>.gif">
</td>
<td width="228">
<%=RS("Artist")%></td><td width="217">
<%=RS("Lat")%>
</td>
</tr>
<%
RS.MoveNext
Loop
RS.Close
Database.Close
%>
</table>
och listaapp.asp ser ut så här:
<%
Response.Buffer = True
If Cint(Request.cookies("rosta")("id")) > 2 Then
Response.redirect "redanrostat.asp"
Else
Response.cookies("rosta")("id") = Request.cookies("rosta")("id") +1
Response.Cookies("rosta").Expires = dateadd("h",2,now)
Set Connect=server.CreateObject("adodb.connection")
DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
DSNtemp=dsntemp & "DBQ=" & server.mappath("db/listan.mdb")
Connect.Open DSNtemp
SQLstmt = "SELECT * FROM lista"
SQLstmt = "UPDATE lista SET poang = poang +1 WHERE AID = " & Request.Querystring("id") & ""
Connect.Execute(SQLstmt)
Response.Redirect("topplistan.asp")
End If
%>
puhhhh...tack för hjälpen i alla fall...kunde ju gått.. ;)