Avatar billede n1 Nybegynder
31. oktober 2004 - 17:20 Der er 5 kommentarer og
1 løsning

Afstemning kode??

jeg skal bruge koden til et afstemnings program.
man skal kun kunne stemme en gang og det må ikke gøres ved hjælp af ip filtrering, jeg kan ikke lige komme på andet end brug af cookies, men jeg er ikke sikker på om det virker på alle computere eller med service pack 2...
lige nu bruger jeg dette script:

<%
Response.Buffer = True

font    = "<font size='2' face='Verdana'>"
faktor  = 5
barcolor = "#FF0000"

  ' Set Rs = Server.CreateObject("ADODB.Connection")
  ' Rs.Open "DSN=testdb;uid=;pwd="

  Set Rs = Server.CreateObject("ADODB.Connection")
  DBPath = "DBQ=" & server.mappath("vote.mdb")
  Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

  If (Request.ServerVariables("Content_length") > 0) then
  If isEmpty(Session("vote")) Then
    Sql = "Insert into T_Voteresult (Voteid, Vote, Ip) values('1','" & Request("R1") & "','" &  Request.ServerVariables("REMOTE_ADDR") & "')"
    Rs.Execute(Sql)
    Session("vote") = "1"
    Response.redirect Request.ServerVariables("SCRIPT_NAME") & "?mode=result"
  else
    Response.redirect Request.ServerVariables("SCRIPT_NAME") & "?mode=result"
  end if 
  end if


    If "result" = Request.QueryString("mode") then
      Sql = "Select * from T_Vote where Id = 1"
      Set Record =  Rs.Execute(Sql)
      Dim Valg(8)
      valg(1) = Record("valg1")
      valg(2) = Record("valg2")
      valg(3) = Record("valg3")
      valg(4) = Record("valg4")
      valg(5) = Record("valg5")
      valg(6) = Record("valg6")
      valg(7) = Record("valg7")
      valg(8) = Record("valg8")

      response.write "<p align='center'><b>" & font & Record("Beskrivelse")  & "</b></font></p>"

      Sql = "Select count(*) as Found from T_VoteResult where VoteId = 1"
      Set Record =  Rs.Execute(Sql)
      Ialt = Record("found")

      Response.Write "<div align='center'><table border='0'><tr>"
      For i = 1 to 8
        If valg(i) <> "" then
          Sql = "Select count(*) as Found from T_VoteResult where VoteId = 1 and vote = '" & Valg(i) & "'"
          Set Record = Rs.Execute(Sql)
          Procent = 100/Ialt * Record("Found")
          response.write "<td>" & font & Valg(i) & "</td><td>" & font & Round(procent) & "%</td><td><hr width='" & Procent * faktor & "' size='10' align='left' color='" & barcolor & "'><font face='Arial' style='font-size: 9pt'><b>" & Record("Found") &" stemmer</b></font></td></tr>"
        end if
      Next
      Response.Write "</table></div><br><p align='center'>stemmer ialt:" & Ialt & "</p>"
  end if
     
    If "" = Request.QueryString("mode") then
    If isEmpty(Session("vote")) Then
      Sql = "Select * from T_Vote where Id = 1"
      Set Record =  Rs.Execute(Sql)
      response.write font & Record("Beskrivelse")
      response.write "<br><br><a href='index.asp?mode=result'><b>se resultat</b></a>"
      response.write "<html><head><title>Stem</title></head><body>"
      response.write "<form method='POST' action='" & Request.ServerVariables("SCRIPT_NAME") & "'>"
      response.write "<input type='hidden' name='Voteid' value='1'>"
      If Record("Valg1") <> "" then
        response.write "<input type='radio' value='" & Record("Valg1") & "' name='R1'>" & Record("Valg1") & "<br>"
      end if 
      If Record("Valg2") <> "" then
        response.write "<input type='radio' value='" & Record("Valg2") & "' name='R1'>" & Record("Valg2") & "<br>"
      end if
      If Record("Valg3") <> "" then
        response.write "<input type='radio' value='" & Record("Valg3") & "' name='R1'>" & Record("Valg3") & "<br>"
      end if
      If Record("Valg4") <> "" then
        response.write "<input type='radio' value='" & Record("Valg4") & "' name='R1'>" & Record("Valg4") & "<br>"
      end if
      If Record("Valg5") <> "" then
        response.write "<input type='radio' value='" & Record("Valg5") & "' name='R1'>" & Record("Valg5") & "<br>"
      end if
            If Record("Valg6") <> "" then
        response.write "<input type='radio' value='" & Record("Valg6") & "' name='R1'>" & Record("Valg6") & "<br>"
      end if
            If Record("Valg7") <> "" then
        response.write "<input type='radio' value='" & Record("Valg7") & "' name='R1'>" & Record("Valg7") & "<br>"
      end if
            If Record("Valg8") <> "" then
        response.write "<input type='radio' value='" & Record("Valg8") & "' name='R1'>" & Record("Valg8") & "<br>"
      end if
      response.write "<p>&nbsp;<input type='submit' value='Stem' name='B1'>&nbsp;&nbsp</p>"
      response.write "</form></body></html>"
          else
    response.write "<p>Du har allerede stemt, klik <a href='index.asp?mode=result'>her</a> for at se resultatet</p>"
    end if
    end if

%>

(har den fra: http://activedeveloper.dk/download/default.asp?mode=showdownload&id=16 )

men jeg bruger session, så man kan bare stemme igen efter 20 min.

//niko
Avatar billede ellebaek Nybegynder
31. oktober 2004 - 17:24 #1
når du sætter cookien skal du bruge:
response.cookie("navn")("hvilken") = "din værdi"


Med cookies skal det se ud som:

<%
Response.Buffer = True

font    = "<font size='2' face='Verdana'>"
faktor  = 5
barcolor = "#FF0000"

  ' Set Rs = Server.CreateObject("ADODB.Connection")
  ' Rs.Open "DSN=testdb;uid=;pwd="

  Set Rs = Server.CreateObject("ADODB.Connection")
  DBPath = "DBQ=" & server.mappath("vote.mdb")
  Rs.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

  If (Request.ServerVariables("Content_length") > 0) then
  If isEmpty(.cookies("dincookie")("afstemning")) Then
    Sql = "Insert into T_Voteresult (Voteid, Vote, Ip) values('1','" & Request("R1") & "','" &  Request.ServerVariables("REMOTE_ADDR") & "')"
    Rs.Execute(Sql)
    Response.cookies("dincookie")("afstemning") = "1"
    Response.redirect Request.ServerVariables("SCRIPT_NAME") & "?mode=result"
  else
    Response.redirect Request.ServerVariables("SCRIPT_NAME") & "?mode=result"
  end if 
  end if


    If "result" = Request.QueryString("mode") then
      Sql = "Select * from T_Vote where Id = 1"
      Set Record =  Rs.Execute(Sql)
      Dim Valg(8)
      valg(1) = Record("valg1")
      valg(2) = Record("valg2")
      valg(3) = Record("valg3")
      valg(4) = Record("valg4")
      valg(5) = Record("valg5")
      valg(6) = Record("valg6")
      valg(7) = Record("valg7")
      valg(8) = Record("valg8")

      response.write "<p align='center'><b>" & font & Record("Beskrivelse")  & "</b></font></p>"

      Sql = "Select count(*) as Found from T_VoteResult where VoteId = 1"
      Set Record =  Rs.Execute(Sql)
      Ialt = Record("found")

      Response.Write "<div align='center'><table border='0'><tr>"
      For i = 1 to 8
        If valg(i) <> "" then
          Sql = "Select count(*) as Found from T_VoteResult where VoteId = 1 and vote = '" & Valg(i) & "'"
          Set Record = Rs.Execute(Sql)
          Procent = 100/Ialt * Record("Found")
          response.write "<td>" & font & Valg(i) & "</td><td>" & font & Round(procent) & "%</td><td><hr width='" & Procent * faktor & "' size='10' align='left' color='" & barcolor & "'><font face='Arial' style='font-size: 9pt'><b>" & Record("Found") &" stemmer</b></font></td></tr>"
        end if
      Next
      Response.Write "</table></div><br><p align='center'>stemmer ialt:" & Ialt & "</p>"
  end if
     
    If "" = Request.QueryString("mode") then
    If isEmpty(request.cookies("dincookie")("afstemning")) Then
      Sql = "Select * from T_Vote where Id = 1"
      Set Record =  Rs.Execute(Sql)
      response.write font & Record("Beskrivelse")
      response.write "<br><br><a href='index.asp?mode=result'><b>se resultat</b></a>"
      response.write "<html><head><title>Stem</title></head><body>"
      response.write "<form method='POST' action='" & Request.ServerVariables("SCRIPT_NAME") & "'>"
      response.write "<input type='hidden' name='Voteid' value='1'>"
      If Record("Valg1") <> "" then
        response.write "<input type='radio' value='" & Record("Valg1") & "' name='R1'>" & Record("Valg1") & "<br>"
      end if 
      If Record("Valg2") <> "" then
        response.write "<input type='radio' value='" & Record("Valg2") & "' name='R1'>" & Record("Valg2") & "<br>"
      end if
      If Record("Valg3") <> "" then
        response.write "<input type='radio' value='" & Record("Valg3") & "' name='R1'>" & Record("Valg3") & "<br>"
      end if
      If Record("Valg4") <> "" then
        response.write "<input type='radio' value='" & Record("Valg4") & "' name='R1'>" & Record("Valg4") & "<br>"
      end if
      If Record("Valg5") <> "" then
        response.write "<input type='radio' value='" & Record("Valg5") & "' name='R1'>" & Record("Valg5") & "<br>"
      end if
            If Record("Valg6") <> "" then
        response.write "<input type='radio' value='" & Record("Valg6") & "' name='R1'>" & Record("Valg6") & "<br>"
      end if
            If Record("Valg7") <> "" then
        response.write "<input type='radio' value='" & Record("Valg7") & "' name='R1'>" & Record("Valg7") & "<br>"
      end if
            If Record("Valg8") <> "" then
        response.write "<input type='radio' value='" & Record("Valg8") & "' name='R1'>" & Record("Valg8") & "<br>"
      end if
      response.write "<p>&nbsp;<input type='submit' value='Stem' name='B1'>&nbsp;&nbsp</p>"
      response.write "</form></body></html>"
          else
    response.write "<p>Du har allerede stemt, klik <a href='index.asp?mode=result'>her</a> for at se resultatet</p>"
    end if
    end if

%>

jeg er selv ikke helt for at benytte cookies... Men det er det bedste når du ikke kan benytte ip filtrering, med mindre det er brugere der allerede er logget ind på et system.
Avatar billede ellebaek Nybegynder
31. oktober 2004 - 17:24 #2
Lige en lille fejl...

denne linie:
If isEmpty(.cookies("dincookie")("afstemning")) Then

skal rettes til:
If isEmpty(request.cookies("dincookie")("afstemning")) Then
Avatar billede n1 Nybegynder
31. oktober 2004 - 17:29 #3
fedt nok, men hvad vil der så ske hvis man har blokeret for cookies?
Avatar billede ellebaek Nybegynder
31. oktober 2004 - 17:30 #4
så vil cookien ikke blive sat, og så vil brugeren faktisk kunne stemme med det samme igen skulle jeg mene...
Avatar billede n1 Nybegynder
31. oktober 2004 - 17:32 #5
det kan nok ikke gøres bedre, jeg kombinerer den bare med en session, så kan det nok ikke gøres bedre...

kan du ikke lige skrive et svar så du kan få point..
Avatar billede ellebaek Nybegynder
31. oktober 2004 - 17:57 #6
jeg smider et svar her :-)
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