Avatar billede dsb Nybegynder
05. november 2001 - 22:53 Der er 10 kommentarer

Sikkre Afstemning!

Her har jeg kildekoden til et afstemningsscript, som min ven har lavet til mig, desværre har han ikke helt fattet det der med cookies, så er her ikke en som kan omskrive dette script, så man kun kan stemme en gang! ved brug af cookies
___________________________________________________
<%
Dim alternativ1, alternativ2, alternativ3, fraga, skicka

\'© Ludvig Widman 2001 www.adomain.8k.com
\'Det här skriptet kommer ifrån Adomain och får inte spridas utan tillståd från Adomain
\'
\'
\'Glöm inte att sätta alla tre värden till noll i databasen före varje ny omröstning.
\'
\'Inställningar
Alternativ1 = \"Ja\"                                \'Det första alternativet
Alternativ2 = \"Nej\"                              \'Det andra alternativet
Alternativ3 = \"Vet ej\"                            \'Det tredje alternativet (valfritt)
Fraga = \"En fråga du vill ställa\"                \'Frågan du vill ställa
Skicka = \"Rösta\"                                  \'Vad som ska stå på skicka knappen



If Request.QueryString(\"handelse\") = \"rosta\" Then

Set Connect = Server.CreateObject(\"ADODB.Connection\")
Connect.Open \"driver={Microsoft Access Driver (*.mdb)};dbq=\" & Server.MapPath(\"rosta.mdb\")
Set RecSet = Server.CreateObject(\"ADODB.Recordset\")
RecSet.Open  \"SELECT * FROM Stallning\" , Connect, adOpenStatic, adLockOptimistic

Select Case Request.Form(\"alternativ\")

Case \"1\"

RecSet(\"Alternativ1\") = RecSet(\"Alternativ1\") + 1

Case \"2\"

RecSet(\"Alternativ2\") = RecSet(\"Alternativ2\") + 1

Case \"3\"

RecSet(\"Alternativ3\") = RecSet(\"Alternativ3\") + 1

End Select

RecSet.Update

total = RecSet(\"Alternativ1\") + RecSet(\"Alternativ2\") + RecSet(\"Alternativ3\")


With Response
.Write \"<table border=0 width=170><tr><td colspan=2><font size=2><b>\"  &fraga & \"</b></font></td></tr>\"
.Write \"<tr><td width=\'70\'><font size=2>\" & Alternativ1 & \"&nbsp;</font></td width=\'100\'><td><font size=2><img src=\'poll1.bmp\'><img src=\'poll2.bmp\' width=\'\" & RecSet(\"Alternativ1\") / total * 100 -2  & \"\' height=\'9\'><img src=\'poll3.bmp\' width=\'\" & 100 - (RecSet(\"Alternativ1\") / total * 100 -2)  & \"\' height=\'9\'><img src=\'poll1.bmp\'></font></td></tr>\"
.Write \"<tr><td width=\'70\'><font size=2>\" & Alternativ2 & \"&nbsp;</font></td width=\'100\'><td><font size=2><img src=\'poll1.bmp\'><img src=\'poll2.bmp\' width=\'\" & RecSet(\"Alternativ2\") / total * 100 -2 & \"\' height=\'9\'><img src=\'poll3.bmp\' width=\'\" & 100 - (RecSet(\"Alternativ2\") / total * 100 -2)  & \"\' height=\'9\'><img src=\'poll1.bmp\'></font></td></tr>\"
if alternativ3 <> \"\" then .Write \"<tr><td width=\'70\'><font size=2>\" & Alternativ3 & \"&nbsp;</font></td width=\'100\'><td><font size=2><img src=\'poll1.bmp\'><img src=\'poll2.bmp\' width=\'\" & RecSet(\"Alternativ3\") / total * 100 -2 & \"\' height=\'9\'><img src=\'poll3.bmp\' width=\'\" & 100 - (RecSet(\"Alternativ3\") / total * 100 -2)  & \"\' height=\'9\'><img src=\'poll1.bmp\'></font></td></tr>\"
End With

RecSet.Close
Connect.Close
Else


With Response
.Write \"<form action=\'rosta.asp?handelse=rosta\' method=\'post\'>\"
.Write \"<b>\"  &fraga & \"</b><br>\"
.Write \"<input type=\'radio\' name=\'alternativ\' value=1>\" & Alternativ1 & \"<br>\"
.Write \"<input type=\'radio\' name=\'alternativ\' value=2>\" & Alternativ2 & \"<br>\"
If Alternativ3 <> \"\" then
.Write \"<input type=\'radio\' name=\'alternativ\' value=3>\" & Alternativ3 & \"<br><br>\"
Else
.Write \"<br>\"
End if
.Write \"<input type=\'submit\' value=\'\" & Skicka & \"\'><br>\"
.Write \"<a href=\'rosta.asp?handelse=rosta\'>Resultat</a>\"
.Write \"</form>\"
End With

End if
%>
Avatar billede eagleeye Praktikant
05. november 2001 - 23:01 #1
du kan gøre sådan noget:


Inden du skriver i databasen kan du tjekke om cookien er gemt:

CookieName = \"filmafstemning\"
CookieValue = \"ja\"
if lcase(request.cookies(cookiename)) = cookievalue then
%>
<p>Beklager, men du har allerede stemt på en film.<br>Det er kun muligt at stemme en gang!</p><br><br>
<%
end if



Nå du har gemt i databasen kan du skrive cookien:

response.cookies(cookiename) = cookievalue
response.cookies(cookiename).Expires = now + 30  \'30 dage timeout
Avatar billede eagleeye Praktikant
05. november 2001 - 23:05 #2
det er blevet lavet til en filmafstemning. Det fulde tjek gemmer IP\'en i en database og så kan samme IP kun stemme 1 gang pr. dag.
Avatar billede sp Nybegynder
05. november 2001 - 23:20 #3
Man kan IKKE sikre en afstemning fuldt ud!

IP ændre sig konstant, det bestemmes ikke af brugeren hvilken IP-adresse personen får tildelt.

Skulle der gøres noget effektivt, kunne man sætte en funktion til at søge efter samme tal i et netværk, men så udelukker man hele netværket når en har stemt. Et netværk har et antal IP-adresser indefor ét område som man skiftes til at få tildelt...

Løsningen findes ikke!
Avatar billede eagleeye Praktikant
05. november 2001 - 23:22 #4
Det er rigtigt men man kan gøre det mere besværligt for en at snyde.
Avatar billede sp Nybegynder
05. november 2001 - 23:26 #5
Man kan muligvis gøre det meget vanskeligt at snyde ved at gøre fl.g.

1)Registrere de cifre i IP-adressen som er fælles for netværket og søge efter dem ved (så udelukker man andre end dem i Netværket)

2) Registrere Operativ system, Browsertype, Skærmopløsning, CPU-hastighed o.s.v. på den måde udelukker man flere og flere på netværket.

Det er meget kompliceret og det skal jo fungere via Server-scripts...

Så det er noget af en udfordring der er værd at tage fat på.

mvh
Søren Peter
Avatar billede sp Nybegynder
05. november 2001 - 23:42 #6
Jeg har haft problemer med snyd selvom jeg brugte en afstemning med både Cookies og IP!
Avatar billede dsb Nybegynder
06. november 2001 - 00:12 #7
lige nu har jeg ikke tid til at kigger nærmere på koden, og før og efter databasen!
eagleeye<< kan du ikke lige gøre det, og skrive den færdige kildekode!
Avatar billede eagleeye Praktikant
06. november 2001 - 00:18 #8
jeg vil kikke på det.
Avatar billede eagleeye Praktikant
06. november 2001 - 00:37 #9
Med cookie:



<%
Dim alternativ1, alternativ2, alternativ3, fraga, skicka, CookieName, CookieValue

\'© Ludvig Widman 2001 www.adomain.8k.com
\'Det här skriptet kommer ifrån Adomain och får inte spridas utan tillståd från Adomain
\'
\'
\'Glöm inte att sätta alla tre värden till noll i databasen före varje ny omröstning.
\'
\'Inställningar
Alternativ1 = \"Ja\" \'Det första alternativet
Alternativ2 = \"Nej\" \'Det andra alternativet
Alternativ3 = \"Vet ej\" \'Det tredje alternativet (valfritt)
Fraga = \"En fråga du vill ställa\" \'Frågan du vill ställa
Skicka = \"Rösta\" \'Vad som ska stå på skicka knappen

CookieName = \"afstemning\"
CookieValue = \"ja\"


if lcase(request.cookies(cookiename)) = cookievalue then
%>
<p>Beklager, men du har allerede stemt!<br>Det er kun muligt at stemme en gang!</p><br><br>
<%
else


If Request.QueryString(\"handelse\") = \"rosta\" Then

  Set Connect = Server.CreateObject(\"ADODB.Connection\")
  Connect.Open \"driver={Microsoft Access Driver (*.mdb)};dbq=\" & Server.MapPath(\"rosta.mdb\")

  Set RecSet = Server.CreateObject(\"ADODB.Recordset\")
  RecSet.Open \"SELECT * FROM Stallning\" , Connect, adOpenStatic, adLockOptimistic
  Select Case Request.Form(\"alternativ\")
    Case \"1\"
      RecSet(\"Alternativ1\") = RecSet(\"Alternativ1\") + 1
    Case \"2\"
      RecSet(\"Alternativ2\") = RecSet(\"Alternativ2\") + 1
    Case \"3\"
      RecSet(\"Alternativ3\") = RecSet(\"Alternativ3\") + 1
  End Select
  RecSet.Update

  total = RecSet(\"Alternativ1\") + RecSet(\"Alternativ2\") + RecSet(\"Alternativ3\")

  With Response
  .Write \"<table border=0 width=170><tr><td colspan=2><font size=2><b>\" &fraga & \"</b></font></td></tr>\"
  .Write \"<tr><td width=\'70\'><font size=2>\" & Alternativ1 & \"&nbsp;</font></td width=\'100\'><td><font size=2><img src=\'poll1.bmp\'><img src=\'poll2.bmp\' width=\'\" & RecSet(\"Alternativ1\") / total * 100 -2 & \"\' height=\'9\'><img src=\'poll3.bmp\' width=\'\" & 100 - (RecSet(\"Alternativ1\") / total * 100 -2) & \"\' height=\'9\'><img src=\'poll1.bmp\'></font></td></tr>\"
  .Write \"<tr><td width=\'70\'><font size=2>\" & Alternativ2 & \"&nbsp;</font></td width=\'100\'><td><font size=2><img src=\'poll1.bmp\'><img src=\'poll2.bmp\' width=\'\" & RecSet(\"Alternativ2\") / total * 100 -2 & \"\' height=\'9\'><img src=\'poll3.bmp\' width=\'\" & 100 - (RecSet(\"Alternativ2\") / total * 100 -2) & \"\' height=\'9\'><img src=\'poll1.bmp\'></font></td></tr>\"
  if alternativ3 <> \"\" then .Write \"<tr><td width=\'70\'><font size=2>\" & Alternativ3 & \"&nbsp;</font></td width=\'100\'><td><font size=2><img src=\'poll1.bmp\'><img src=\'poll2.bmp\' width=\'\" & RecSet(\"Alternativ3\") / total * 100 -2 & \"\' height=\'9\'><img src=\'poll3.bmp\' width=\'\" & 100 - (RecSet(\"Alternativ3\") / total * 100 -2) & \"\' height=\'9\'><img src=\'poll1.bmp\'></font></td></tr>\"
  End With

  RecSet.Close
  Connect.Close

  response.cookies(cookiename) = cookievalue
  response.cookies(cookiename).Expires = now + 30

Else

  With Response
  .Write \"<form action=\'rosta.asp?handelse=rosta\' method=\'post\'>\"
  .Write \"<b>\" &fraga & \"</b><br>\"
  .Write \"<input type=\'radio\' name=\'alternativ\' value=1>\" & Alternativ1 & \"<br>\"
  .Write \"<input type=\'radio\' name=\'alternativ\' value=2>\" & Alternativ2 & \"<br>\"
  If Alternativ3 <> \"\" then
    .Write \"<input type=\'radio\' name=\'alternativ\' value=3>\" & Alternativ3 & \"<br><br>\"
  Else
    .Write \"<br>\"
  End if
  .Write \"<input type=\'submit\' value=\'\" & Skicka & \"\'><br>\"
  .Write \"<a href=\'rosta.asp?handelse=rosta\'>Resultat</a>\"
  .Write \"</form>\"
  End With

End if

End If
%>
Avatar billede eagleeye Praktikant
14. april 2002 - 13:37 #10
var det sådan noget du kunne bruge ???
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