Avatar billede isaac Nybegynder
10. august 2003 - 18:48 Der 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"

        strSQL = "INSERT INTO ipcheck (IPadr, datestamp, typeid) VALUES ("
        strSQL = strSQL & "'" & Request.ServerVariables("REMOTE_ADDR") & "', "
        strSQL = strSQL & "'" & formatDateTime(date,0) & "', "
        strSQL = strSQL & "'dvdvote');"       
        DBConn.execute(strSQL) 'REMOVED FOR TEST ONLY!!!!!!
         
        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
    %>
Avatar billede hossein Nybegynder
10. august 2003 - 21:35 #1
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 =)
Avatar billede isaac Nybegynder
10. august 2003 - 21:44 #2
Kunne jeg ikke få dig til at skrive de koder som jeg skal bruge i stedet for?
Avatar billede nmh Nybegynder
10. august 2003 - 21:45 #3
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.
Avatar billede nmh Nybegynder
10. august 2003 - 21:46 #4
Ups, det skulle have været en kommentar!
Avatar billede isaac Nybegynder
10. august 2003 - 22:01 #5
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?
Avatar billede nmh Nybegynder
10. august 2003 - 22:16 #6
For at skrive SQL-strengen ud (jeg regner med det er det du gerne vil) skal du f.eks. lige efter du har dannet SQL-strengen skrive

response.write(strSQL & "<p>")

og det er lige før rs=DBconn.execute(strSQL)

Så vil sql-strengen kunne ses øverst på siden.
Avatar billede isaac Nybegynder
10. august 2003 - 22:34 #7
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
Avatar billede nmh Nybegynder
10. august 2003 - 22:44 #8
Ja, når IP-adressen ændrer sig, så bliver det svært at holde styr på, hvis dine brugere i øvrigt er dig helt ukendte.

Det normale er nok, at en "snyder" taster mange gange efter hinanden, og har samme IP-adresse. Så er det tidspunktet du skal holde styr på.

I øvrigt kan det jo ske, at lidt senere, vil en helt anden bruger dukke op med samme IP-adresse som den første. Hvad skal man gøre ved det?

Bedste strategi er nok IP-adresse og tidspunkt, men efter f.eks. 20 min kan man igen stemme med den IP-adresse.
Avatar billede nmh Nybegynder
10. august 2003 - 22:55 #9
Du bruger jo også cookies i dit system. En snyder skal altså også sørge for at slette dem, så vi taler vel kun om en helt ligegyldig minoritet.
Avatar billede hossein Nybegynder
10. august 2003 - 23:11 #10
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
Avatar billede isaac Nybegynder
10. august 2003 - 23:21 #11
IP'en ændre sig jo netop ikke, så jeg forstår det ikke
Avatar billede isaac Nybegynder
11. august 2003 - 08:38 #12
Nu har jeg testet igen her til morgen og den gav mig lov til at stemme som den IKKE skulle

Og mit IP nummer er IKKE ændret
Avatar billede nmh Nybegynder
11. august 2003 - 09:08 #13
Prøv at gemme tidspunktet for afstemningen også.
Forbyd afstemning, hvis Now er mindre end Gemt tid + f.eks. 30min.
Hvordan så din SQL-streng ud nu?
Avatar billede isaac Nybegynder
11. august 2003 - 09:18 #14
Sådan her:
SELECT * FROM ipcheck WHERE (typeid='dvdvote') AND IPadr='80.164.12.126' AND datestamp >= '8/10/2003';
Avatar billede isaac Nybegynder
11. august 2003 - 10:03 #15
Kunne jeg ikke få dig til at vise mig hvordan det skal se ud med det du foreslog sidst?

---------------------------------

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
Avatar billede nmh Nybegynder
11. august 2003 - 11:10 #16
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.
Avatar billede isaac Nybegynder
11. august 2003 - 11:29 #17
Jeg skal på arbejde nu, så jeg kigger på det i aften og vender tilbage
Avatar billede isaac Nybegynder
11. august 2003 - 17:52 #18
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"

        strSQL = "INSERT INTO ipcheck (IPadr, datestamp, typeid) VALUES ("
        strSQL = strSQL & "'" & Request.ServerVariables("REMOTE_ADDR") & "', "
        strSQL = strSQL & "'" & formatDateTime(date,0) & "', "
        strSQL = strSQL & "'dvdvote');"       
        DBConn.execute(strSQL) 'REMOVED FOR TEST ONLY!!!!!!
         
        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
    %>
Avatar billede nmh Nybegynder
11. august 2003 - 18:01 #19
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.
Avatar billede isaac Nybegynder
11. august 2003 - 18:08 #20
OK :)
Avatar billede nmh Nybegynder
11. august 2003 - 18:35 #21
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.
Avatar billede isaac Nybegynder
11. august 2003 - 18:58 #22
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å.

Gider du evt hjælpe mig der også??
Avatar billede isaac Nybegynder
11. august 2003 - 18:59 #23
Forresten....skal der slet ikke være noget i MySQL databasen som viser klokkeslet eller er det lige meget?
Avatar billede nmh Nybegynder
11. august 2003 - 20:06 #24
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.
Avatar billede isaac Nybegynder
11. august 2003 - 20:33 #25
Ok!
Det gør ikke så meget med det nye spørgsmål, da der er en som hjælper mig!
Avatar billede isaac Nybegynder
11. august 2003 - 21:11 #26
Hejsa

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

Response.Buffer = true
Session.LCID = 1030

adminFilNavn = "admin.asp"

DATABASE_TYPE = "MySQL"
'DATABASE_TYPE = "ACCESS"
Avatar billede nmh Nybegynder
11. august 2003 - 21:41 #27
Jeg har svaret henne ved dit andet spørgsmål på dette problem.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester