06. juni 2002 - 10:44Der er
38 kommentarer og 1 løsning
Cookie - Hjælp mig lige
Hvordan får jeg dette sat sammen så man kun kan give point en gang ?
If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID") = ID Else Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & ID End If
if point > 0 then strsql = "update hotnot set points = points + " & point & " where id = " & oldid connect.execute(strsql) strsql = "update hotnot set hits = hits + 1 where id = " & oldid connect.execute(strsql) strsql = "update hotnot set gens = points/hits where id = " & oldid connect.execute(strsql) end if
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
if point > 0 then strsql = "update hotnot set points = points + " & point & " where id = " & oldid connect.execute(strsql) strsql = "update hotnot set hits = hits + 1 where id = " & oldid connect.execute(strsql) strsql = "update hotnot set gens = points/hits where id = " & oldid connect.execute(strsql)
If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID") = ID Else Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & ID End If
If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID") = oldid Else Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & oldid End If
Sådan her fanger cookien alle oldid men hvordan checker jeg om id eksister hvis en bruger prøver at stemme 2 gange ?
If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID") = oldid Else Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & oldid End If
if point > 0 then If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID") = oldid Else Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & oldid End If
For i = 0 To UBound(myArr) If Trim(myArr(i)) = Request.Form("thisID") Then response.write "Har stemt<br>" else response.write "Har ikke stemt<br>" end if next
Response.Write "HER ER DET DU BAD OM tmceu <br>" Response.Write "Cookie: " & Request.Cookies("hotvote")("ID") end if
Du har lige gjort en god indsats for at tiltrække dig negativ opmærksomhed. Folk herinde hader spørgsmål, der henviser til andre spørgsmål. Personligt er jeg ligeglad :-)
if point > 0 then If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID")= Request.Form("thisID") Else Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & oldid End If
For i = 0 To UBound(myArr) If Trim(myArr(i)) = Request.Form("thisID") Then response.write "Har stemt<br>" else response.write "Har ikke stemt<br>" end if next end if
if point > 0 then strsql = "update hotnot set points = points + " & point & " where id = " & oldid connect.execute(strsql) strsql = "update hotnot set hits = hits + 1 where id = " & oldid connect.execute(strsql) strsql = "update hotnot set gens = points/hits where id = " & oldid connect.execute(strsql) end if
if session("oldsex") <> session("sex") then 'Restart med laveste id og set rs = eof strsql = "select * from hotnot where 2 = 3" oldid = 0 else if LCase(session("sex")) = "men" then strSQL = "SELECT * FROM hotnot WHERE ID > "& oldID & " AND kon=2 AND active='yes' AND aproved='yes' order by id" elseif LCase(session("sex")) = "female" then strSQL = "SELECT * FROM hotnot WHERE ID > "& oldID & " AND kon=1 AND active='yes' AND aproved='yes' order by id" else strSQL = "SELECT * FROM hotnot WHERE ID > "& oldID & " AND active='yes' AND aproved='yes' order by id" end if end if
Set rs = Connect.Execute(strSQL) if rs.EOF then SELECT CASE LCase(session("sex")) CASE "female" strsql = "SELECT TOP 1 * from hotnot where kon = 1 AND active='yes' AND aproved='yes' order by id" case "men" strsql = "SELECT TOP 1 * from hotnot where kon = 2 AND active='yes' AND aproved='yes' order by id" case else strsql = "SELECT TOP 1 * from hotnot where active='yes' AND aproved='yes' order by id" END SELECT Set rs = Connect.Execute(strSQL) end if
Ja det virker hvis man bruger BACK knappen så kan man ikke stemme på den samme, men hvis man når til enden og den begynder forfra ja så kan man stemme igen
OK, jeg tror at det der forvirrer dig er, at du faktisk løber alle dine ID i cookien igennem og derfor får en masse "har ikke stemt" skrevt ud. Den fanger godt nok den du er på p.t. men skriver også de andre.
Hvis du i cookien eks. har: 3,5,8,7 og den aktuelle oldid er 5, vil du få:
har ikke stemt har stemt har ikke stemt har ikke stemt
Det er jo korrekt, for du har ikke stemt på 3,7 og 8 ift. det aktuelle oldid.
Ændre cookie check'et til dette:
For i = 0 To UBound(myArr) If Trim(myArr(i)) = Request.Form("thisID") Then response.write "Har stemt<br>" end if next
If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID") = oldid Else Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & oldid end if
myArr = Split(request.cookies("hotvote")("ID"), ",") For i = 0 To UBound(myArr) If Trim(myArr(i)) = Request.Form("thisID") Then response.write "Har stemt<br>" end if next
Men jeg syntes stadig at det ser ud som om at det ikke kører helt korrekt.
Jeg giver simpelt hen snart op, for jeg er begyndt at tvivle på om jeg kan forklare dig det :-) Det ER altså SVÆRT at løse et problem du beskriver som "Men jeg syntes stadig at det ser ud som om at det ikke kører helt korrekt."
Du tænker sikkert på at du får en masse "har stemt" skrevet ud på skærmen ? Dette skyldes alle de tests du har lavet og at din cookie derfor er overfyldt med den samme id. Har du stemt på nr. 3 flere gange, har du flere gange "3" i din cookie.
I en real-life situation vil du forhåbentlig ikke som nu, blot skrive "har stemt" og så fortsætte. Jeg regner da medm at du erstatter response.write med eks.
response.write "Du har allerede stemt på denne..." response.end
Som det er nu, fortsætter du jo bare scriptet og smider så oldid i cookien igen. Problemet med cookien er løst for længst. Resten af dit script har du holdt tæt på kroppen meget længe og man må derfor antage at det kun var cookie du havde problemer med.
Hvis du ændrer denne:
myArr = Split(request.cookies("hotvote")("ID"), ",") For i = 0 To UBound(myArr) If Trim(myArr(i)) = Request.Form("thisID") Then response.write "Har stemt<br>" end if next
Til denne:
myArr = Split(request.cookies("hotvote")("ID"), ",") For i = 0 To UBound(myArr) If Trim(myArr(i)) = Request.Form("thisID") Then response.write "Har stemt<br>" Response.end end if next
Kan der kun stemmes én gang, baseret på cookie og de enkelte id'er vil kun optræde én gang i cookien.
oki sorry jeg er åbenbart fatsvag så jeg giver også op nu. P.s hvis jeg bruger response.end kan man slet ikke stemme da den første gang man stemmer bare skriver Har temt på en blank side.
' laver et array med indholdet fra cookie ' Hvis cookie er tom, bliver dette array tomt myArr = Split(request.cookies("hotvote")("ID"), ",")
' I et tomt array, er UBound(myArr) = -1 ' For løkken køres derfor ikke For i = 0 To UBound(myArr)
' Hvis det aktuelle element i array'et er = thisid ' Udskriv og stop scriptet If Trim(myArr(i)) = Request.Form("thisID") Then response.write "Har stemt<br>" Response.end end if next
Du kan jo lave denne test i toppen af koden på, om din cookie virkelig er tom:
Du har placeret response.end koden et forkert sted, for du har ret i, at siden slet ikke vises. Den kode du har vist, indeholder ikke nogen form, billede o.s.v.. Ligger den kode som udskriver billedet og afstemningsboksen i samme fil som ovenstående ?
Så giver jeg op. Jeg kan ikke forklare dig hvordan koden skal ændres, når du trods flere hints om at vise al koden, bliver ved med at kun at vise brudstykker. Og faktisk vil jeg mene, at det er ligegyldigt hvor mange point du udlover, for hvis du ikke vil vise din kode ingen hjælpe dig.
If Request.Cookies("hotvote")("ID") = "" Then Response.Cookies("hotvote")("ID") = oldid Else
if instr(Request.Cookies("hotvote")("ID"), oldid) then harstemt = "ja" else harstemt = "nej" end if
if harstemt = "nej" then Response.Cookies("hotvote")("ID") = Request.Cookies("hotvote")("ID") & "," & oldid
strsql = "update hotnot set points = points + " & point & " where id = " & oldid connect.execute(strsql) strsql = "update hotnot set hits = hits + 1 where id = " & oldid connect.execute(strsql) strsql = "update hotnot set gens = points/hits where id = " & oldid connect.execute(strsql) else strERR = "<center><b>You have voted for this image</b></center><br>" end if
end if
Synes godt om
Ny brugerNybegynder
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.