10. august 2003 - 18:48Der er
26 kommentarer og 1 løsning
Kun "1 gang" virker ikke??
Det at man kun skal kunne stemme 1 gang virker ikke.... hvorfor kan det være??
Datestamp er sat til en gang i år 2008 men alligevel kan jeg selv stemme igen når jeg genstartet PC'en
<% response.expires = 0 Dim Sort Dim CookieName Dim CookieValue
CookieName = "dvdafstemning" CookieValue = "ja"
if len(request.form("Sort")) > 0 then if request.form("Sort") = "2" then sort = 2 else sort = 1 end if response.cookies("Sort") = sort response.cookies("Sort").Expires = now + 365 else sort = request.cookies("Sort") if len(sort) > 0 then sort = trim(sort) else sort = 1 end if end if if sort = "1" then Sort1 = "Checked" else Sort2 = "Checked" end if %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>DVD afstemning</title> <link REL="STYLESHEET" TYPE="text/css" HREF="ny.css"> </head> <body onunload="if(window.opener){window.opener.location.reload();}"> <% 'Dim Cheat
createdataobject "mySQL" strSQL = "SELECT * FROM ipcheck WHERE " strSQL = strSQL & "(typeid='dvdvote') AND " strSQL = strSQL & "IPadr='" & Request.ServerVariables("REMOTE_ADDR") & "' AND " strSQL = strSQL & "datestamp >= '" & formatDateTime(dateAdd("d",0,date),0) & "';" Set rs = DBConn.execute(strSQL) if rs.BOF or rs.EOF then okToSave = true else okToSave = false end if closedataobject
'ADDED FOR TEST ONLY !!!!!!!!!!!!!! 'okToSave = true
if (lcase(request.cookies(cookiename)) = cookievalue) or (okToSave = false) then ' if not request.querystring("cheat") = "bnb" and not request.form("cheat") = "bnb" then %> <p>Beklager, men du har allerede stemt på en film.<br>Det er kun muligt at stemme en gang!</p><br><br> <a href="java script:window.close();">Luk vindue</a> </body> </html> <% response.end ' else ' cheat = "bnb" ' end if else
x = request.querystring("ID") if (len(x) > 0) then 'createdataobject server.mappath("data/film.mdb") 'createdataobject "d:\home\dirchpasserdk\db\film.mdb" createdataobject "mySQL"
Set rs = DBConn.Execute ("SELECT Titel, dvdcounter FROM film WHERE ID = " & clng(x) & ";") if not (rs.eof or rs.bof) then t = rs("Titel") if isNull(rs("dvdcounter")) then votesForFilm = 1 else votesForFilm = clng(rs("dvdcounter")) + 1 end if strSQL = "UPDATE film SET dvdcounter="&votesForFilm&" WHERE ID = " & clng(x) & ";" DBConn.Execute (strSQL) e = votesForFilm
' Set rs = DBConn.Execute ("SELECT Titel, dvdounter FROM film WHERE tilladStemme = 1;") ' do while not(rs.eof or rs.bof) ' if not isNull(rs("dvdcounter")) then ' s = s + rs("dvdcounter") ' end if ' rs.movenext ' loop
' response.cookies(cookiename) = cookievalue 'REMOVED FOR TEST ONLY !!!!! ' response.cookies(cookiename).Expires = now + 365 'REMOVED FOR TEST ONLY !!!!! %> Tak for din stemme på <b>[<%=T%>]</b><br><br> Der er <%=e%> som har stemt på filmen.<br><br> <a href="java script:window.close();">Luk vindue</a> <% else %> Der er sket en fejl!<br><br> Det var ikke muligt at gemme din stemme.<br><br> Luk vinduet, og prøv igen!<br><br> <a href="java script:window.close();">Luk vindue</a> <% end if 'closetable closedataobject else %>
Så meget jeg kan se, du tjekker dagens dato i din sql sætning: datestamp >= '" & formatDateTime(dateAdd("d",0,date),0) da du anvender date og du tager ikke hensyn til Time derfor er det oplagt at du bruge Now i stedet for. (Du bruger oxo >= dvs man kan stemme samme dag flere gange da du bruger =)
prøv øverst på din side at skrive din SQL-streng ud (den hvor du tester på IP-adresse og dato). Så kan du se, hvad du faktisk beder om at få hentet fra din database.
Det er noget lort! Min website er en som en venlig sjæl har hjulpet mig med, men den venlige sjæl gider ikke hjælpe mere så jeg er på skideren da jeg ikke selv kan koder.
Så "nmh" gider du ikke lige skære det ud i pap for mig?
Så er den indsat og her er hvad den skrev: SELECT * FROM ipcheck WHERE (typeid='dvdvote') AND IPadr='80.164.12.126' AND datestamp >= '8/10/2003';
Lige nu virker den meget godt at jeg kun kan stemme en gang, jeg har også prøvet at starte PC'en, men det er nok når den står slukket lidt længere, men stadig med samme IP
hvis det er bare en enkelt vote/poll så kan du gøre det meget simple, hvorfor bruger du cookie ved jeg ikke, men kig på dette ex: http://codeave.com/asp/code.asp?u_log=7
Er du sikker på du har fået gemt afstemningstidspunktet korrekt? datestamp burde være værdien af Now, på det tidspunkt, der blev stemt første gang (du gemmer kun date for øjeblikket). Hvis du nu ændrer datestamp-uligheden til dette Datestamp <= '" & formatDateTime(dateAdd("s",1200,Now),0)
så piller du dem ud fra databasen, som har stemt for mindre end 20min tidligere, og de må ikke stemme igen.
Det går ikke.....nu kan jeg stemme lige så mange gange jeg vil!
-------------------------------------------
<% 'Dim Cheat
createdataobject "mySQL" strSQL = "SELECT * FROM ipcheck WHERE " strSQL = strSQL & "(typeid='dvdvote') AND " strSQL = strSQL & "IPadr='" & Request.ServerVariables("REMOTE_ADDR") & "' AND " strSQL = strSQL & "Datestamp <= '" & formatDateTime(dateAdd("s",1200,Now),0) & "';" response.write(strSQL & "<p>") Set rs = DBConn.execute(strSQL) if rs.BOF or rs.EOF then okToSave = true else okToSave = false end if closedataobject
'ADDED FOR TEST ONLY !!!!!!!!!!!!!! 'okToSave = true
if (lcase(request.cookies(cookiename)) = cookievalue) or (okToSave = false) then ' if not request.querystring("cheat") = "bnb" and not request.form("cheat") = "bnb" then %> <p>Beklager, men du har allerede stemt på en film.<br>Det er kun muligt at stemme en gang!</p><br><br> <a href="java script:window.close();">Luk vindue</a> </body> </html> <% response.end ' else ' cheat = "bnb" ' end if else
x = request.querystring("ID") if (len(x) > 0) then 'createdataobject server.mappath("data/film.mdb") 'createdataobject "d:\home\dirchpasserdk\db\film.mdb" createdataobject "mySQL"
Set rs = DBConn.Execute ("SELECT Titel, dvdcounter FROM film WHERE ID = " & clng(x) & ";") if not (rs.eof or rs.bof) then t = rs("Titel") if isNull(rs("dvdcounter")) then votesForFilm = 1 else votesForFilm = clng(rs("dvdcounter")) + 1 end if strSQL = "UPDATE film SET dvdcounter="&votesForFilm&" WHERE ID = " & clng(x) & ";" DBConn.Execute (strSQL) e = votesForFilm
' Set rs = DBConn.Execute ("SELECT Titel, dvdounter FROM film WHERE tilladStemme = 1;") ' do while not(rs.eof or rs.bof) ' if not isNull(rs("dvdcounter")) then ' s = s + rs("dvdcounter") ' end if ' rs.movenext ' loop
' response.cookies(cookiename) = cookievalue 'REMOVED FOR TEST ONLY !!!!! ' response.cookies(cookiename).Expires = now + 365 'REMOVED FOR TEST ONLY !!!!! %> Tak for din stemme på <b>[<%=T%>]</b><br><br> Der er <%=e%> som har stemt på filmen.<br><br> <a href="java script:window.close();">Luk vindue</a> <% else %> Der er sket en fejl!<br><br> Det var ikke muligt at gemme din stemme.<br><br> Luk vinduet, og prøv igen!<br><br> <a href="java script:window.close();">Luk vindue</a> <% end if 'closetable closedataobject else %>
Nej det er klart jeg kludrede. Hvis du gemmer Now som datestamp, så skal du ikke have lov til at stemme, hvis en bruger melder sig igen til et tidspunkt der er før datestamp+20min. Vent lidt så kommer jeg med noget, der virker.
Den tid, du skal gemme som Datestamp er Now + 20min, og så skal du senere hen sammenligne Now med den gemte datestamp. Hvis Now så er mindre end den gemte, så må man ikke stemme.
Der hvor du gemmer, skal din sql-streng være således: strSQL = "INSERT INTO ipcheck (IPadr, datestamp, typeid) VALUES (" strSQL = strSQL & "'" & Request.ServerVariables("REMOTE_ADDR") & "', " strSQL = strSQL & "'" & formatDateTime(dateAdd("s",1200,Now),0) & "', " strSQL = strSQL & "'dvdvote');"
og der, hvor du senere skal teste, skal sql-strengen være:
strSQL = "SELECT * FROM ipcheck WHERE " strSQL = strSQL & "(typeid='dvdvote') AND " strSQL = strSQL & "IPadr='" & Request.ServerVariables("REMOTE_ADDR") & "' AND " strSQL = strSQL & "Datestamp >= '" & formatDateTime(dateAdd("s",0,Now),0) & "';"
Hvis man første gang stemte kl.15 så vil datestamp være 15.20 Så hvis Now er <= kl. 15.20 må man ikke stemme. Jeg er spændt på en tilbagemelding.
Ja, lige nu ser det godt nok ud til at virke, jeg var nød til at slette alle mine egne IP'er for at kunne stemme! Så må vi se når pc'en har stået slukket et stykke tid om det stadig virker, men indtil vidre tak!
Jeg opretter et nyt spørgsmål men et IP stop, jeg har en admin side hvor det kun er min IP adresse der må komme ind på.
Det var så lidt. Jeg takker for point. Mht nyt spørgsmål: Jeg hjælper gerne, hvis jeg kan. Jeg kender ikke ret meget til MySQL. Men man har vel egentlig ikke brug for noget med klokkeslæt, da man altid kan få det direkte fra funktionen Now.
Kan du se hvad problemet er med de koder som jeg har fået anvist i det andet spørgsmål?
Siden kan ikke vises.....
<%'<!--#include file="includes/data.inc"-->%> <%@LANGUAGE="VBSCRIPT"%> <% if NOT Request.ServerVariables("REMOTE_ADDR") = "**.**.***.***" then Response.Redirect("mainpage.asp") end if
Jeg har svaret henne ved dit andet spørgsmål på dette problem.
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.