Avatar billede brops Nybegynder
04. juli 2004 - 03:05 Der er 3 kommentarer og
1 løsning

Verificering af script

Hej jeg vil høre om der er en der vil kigge denne kode igennem og evt. verificere den, så der ikke er nogen fejl i den/smuthuller.

Jeg det jeg er mest nærvøs over er om man kan snyde i det her afstemnings system???

det kan desuden ses her www.naginata.dk/vote.php www.naginata.dk/vote.phps

Det er blevet lige lovlig sent for mig, men oploader en phps version i morgen formiddag med lidt kommentare på :D

function randompass()
{
  $startnend = array('b','B','c','C','d','D','f','F','g','G','h','H','j','J','k','K','l','L','m','M','n','N','p','P','q','Q','r','R','s','S','t','T','v','V','w','W','x','X','y','Y','z','Z','a','A','E','e','i','I','o','O','u','U','y','Y','1','2','3','4','5','6','7','8','9','0','!','#','*','¤','%','&','+','?','½','§','-',);
  $count1 = count( $startnend ) - 1;
  $rand_pass = ''; // makes sure the $pass var is empty.
  for( $j = 0; $j < 3; $j++ )
  {
      for( $i = 0; $i < 3; $i++)
      {
          $rand_pass .= $startnend[rand( 0, $count1 )];
      }
  }
  return $rand_pass;
 
}
$rand_pass = randompass();

if (sizeof($_GET) == 0) {
    $ipadresse1 = getenv("REMOTE_ADDR");
    db();
    $sqlhent = mysql_query("SELECT * FROM vote1 WHERE ipadresse = '$ipadresse1' limit 0,1") or die (mysql_error());
    $sqlarray = mysql_fetch_array($sqlhent);
    $adresse1 = $sqlarray['adresse'];
    $email1 = $sqlarray['email'];
    $ipadd = $sqlarray['ipadresse'];
    $kode1 = $sqlarray['kode'];

    if ($_COOKIE['harstemt'] == stemt || mysql_num_rows($sqlhent) > 0) {
          echo $_COOKIE['harstemt1'];
        if ($_COOKIE['harstemt'] != stemt){
            $cookievardi = 'stemt';
            $cookievardi1 = 'Du har stemt en gang før, hvor følgende kode var i brug '.$kode1.', og med følgende ip: '.$ipadresse1.', følgende email'.$email1.', og følgende adresse: '.$adresse1;           
            setcookie(harstemt, $cookievardi, time()+1209600);
            setcookie(harstemt1, $cookievardi1, time()+1209600);           
        }
        echo "<html><body><br>Du har allerede stemt</body></html>";
    } else {
        echo "<html><body><TABLE width=60\%><FORM METHOD=POST ACTION=\"vote.php?votein=1\">
            <TR>
                <td colspan='4'><h1>VOTE HER</h1><br>Din IP: ".$ipadresse1."<br>Her kan du afgive din stemme om hvilket design Naginata's nye design skal bygges op om.<br>Du bedes afgive både navn og adresse, da vi derved vil kunne afsende dig den præmie som vil blive afgivet til en tilfældig udtrykken vinder.<br>ALLE Felter skal udfyldes</td>
            </TR>
            <TR>
                <td>Navn:</td>
                <td><input class=\"formfelt\" name=\"navn\" type=\"text\" size=18 value=\"Navn\" maxlength=25 onclick=\"if(this.value==this.defaultValue)this.value='';\" onfocus=\"if(this.value==this.defaultValue)this.value='';\" onblur=\"if(this.value=='')this.value=this.defaultValue;\">*</td>
            </TR>
            <TR>
                <td>Efternavn:</td>
                <td><input class=\"formfelt\" name=\"efternavn\" type=\"text\" size=18 value=\"Efternavn\" maxlength=25 onclick=\"if(this.value==this.defaultValue)this.value='';\" onfocus=\"if(this.value==this.defaultValue)this.value='';\" onblur=\"if(this.value=='')this.value=this.defaultValue;\">*</td>
            </TR>
            <TR>
                <td>Adresse:</td>
                <td><input class=\"formfelt\" name=\"adresse\" type=\"text\" size=18 value=\"gade og nr.\" maxlength=45 onclick=\"if(this.value==this.defaultValue)this.value='';\" onfocus=\"if(this.value==this.defaultValue)this.value='';\" onblur=\"if(this.value=='')this.value=this.defaultValue;\">*</td>
            </TR>
            <TR>
                <td>Postnr.:</td>
                <td><input class=\"formfelt\" name=\"postnr\" type=\"text\" size=4 value=\"####\" maxlength=4 onclick=\"if(this.value==this.defaultValue)this.value='';\" onfocus=\"if(this.value==this.defaultValue)this.value='';\" onblur=\"if(this.value=='')this.value=this.defaultValue;\">* By: <input class=\"formfelt\" name=\"city\" type=\"text\" size=18 value=\"Bynavn\" maxlength=15 onclick=\"if(this.value==this.defaultValue)this.value='';\" onfocus=\"if(this.value==this.defaultValue)this.value='';\" onblur=\"if(this.value=='')this.value=this.defaultValue;\">*</td>
            </TR>
            <TR>
                <td>Email:</td>
                <td><input class=\"formfelt\" name=\"email\" type=\"text\" size=18 value=\"navn@domain.dk\" maxlength=35 onclick=\"if(this.value==this.defaultValue)this.value='';\" onfocus=\"if(this.value==this.defaultValue)this.value='';\" onblur=\"if(this.value=='')this.value=this.defaultValue;\">*</td>
            </TR>
            <tr>
                <td width='200' colspan='2'><A HREF=\"naginata.jpg\" target=_blank alt='billed 1' ><img SRC=\"naginata.jpg\" border=0 width='300' alt='billed 1'></A></td>
                <td width='200' colspan='2'><A HREF=\"naginata-banner.jpg\" target=_blank alt='billed 2' ><img border=0 SRC=\"naginata-banner.jpg\" width='300' alt='billed 2'></A></td>
            </tr>
            <tr>
                <td colspan='2'>Afgiv din stemme her:</td>
                <td colspan='2'>
                    <SELECT NAME=\"vote\">
                        <option value=\"stem\">stem her
                        <option value=\"1\">Design 1
                        <option value=\"2\">Design 2
                    </SELECT>*
                </td>
            </tr>
            <tr>
                <td>Gentag Koden:</td>
                <td> <input name=\"kodemed\" type=\"text\" readonly=\"true\" value=".$rand_pass."></td>
                <td><input class=\"kode\" name=\"kode\" type=\"text\" size=18 value=\"Koden\" maxlength=35 onclick=\"if(this.value==this.defaultValue)this.value='';\" onfocus=\"if(this.value==this.defaultValue)this.value='';\" onblur=\"if(this.value=='')this.value=this.defaultValue;\">*</td>
            </tr>
            <tr>
                <td colspan='2' aling=center><input type='submit'></td><td colspan='2' aling=center><input type=\"reset\"></td>
            <tr>
        </TABLE></FORM></body></html>";
    }
} else if ($_GET['votein'] and $_POST['navn'] != 'Navn' AND $_POST['efternavn'] != 'Efternavn' AND $_POST['adresse'] != 'gade og nr.' AND $_POST['postnr'] != '####' AND $_POST['city'] != 'Bynavn' AND $_POST['email'] != 'navn@domain.dk' AND $_POST['vote'] != 'stem' AND $_POST['kode'] != 'Koden' AND $_POST['kodemed'] == $_POST['kode'])  {
    $navn = $_POST['navn'];
    $efternavn = $_POST['efternavn'];
    $adresse = $_POST['adresse'];
    $postnr = $_POST['postnr'];
    $city = $_POST['city'];
    $email = $_POST['email'];
    $vote = $_POST['vote'];
    $kodemed = $_POST['kodemed'];
    $kode = $_POST['kode'];
    $ipadresse = getenv("REMOTE_ADDR");
    db();
    $sqlhent = mysql_query("SELECT * FROM vote1 WHERE email = '$email' OR adresse = '$adresse' OR ipadresse = '$ipadresse' limit 0,1") or die (mysql_error());
    $sqlarray = mysql_fetch_array($sqlhent);
    $adresse1 = $sqlarray['adresse'];
    $email1 = $sqlarray['email'];
    $ipadd = $sqlarray['ipadresse'];
    $kode1 = $sqlarray['kode'];
        if (mysql_num_rows($sqlhent) > 0) {
            $cookievardi = 'stemt';
            $cookievardi1 = 'Du har stemt en gang før, hvor følgende kode var i brug '.$kode1.', og med følgende ip: '.$ipadresse1.', følgende email'.$email1.', og følgende adresse: '.$adresse1;           
            setcookie(harstemt, $cookievardi, time()+1209600);
            setcookie(harstemt1, $cookievardi1, time()+1209600);           
            echo "<html><body>Den email, adresse eller ip du benytter findes allerede i databasen. Da man kun kan stemme en gang er denne stemme ikke gyldig<br>".cookievardi1."</body></html>";
        } else {
            mysql_query ("INSERT INTO vote1 (navn, efternavn, adresse, postnr, city, ipadresse, vote, email) VALUES ('$navn','$efternavn','$adresse','$postnr','$city','$ipadresse','$vote','$email')") or die (mysql_error());
            $cookievardi = 'stemt';
            $cookievardi1 = 'Du har stemt en gang før, hvor følgende kode var i brug '.$kode.', og med følgende ip: '.$ipadresse.' følgende email: '.$email.', og adresse: '.$adresse;
            setcookie(harstemt, $cookievardi, time()+1209600);
            setcookie(harstemt1, $cookievardi1, time()+1209600);
            echo "<html><body>Din stemme er med.<br>Se stillingen <a href=vote.php?stilling=1>her</a></body></html>";
        }
} else if ($_GET['votein'] and $_POST['navn'] == 'Navn' OR $_POST['efternavn'] == 'Efternavn' OR $_POST['adresse'] == 'gade og nr.' OR $_POST['postnr'] == '####' OR $_POST['city'] == 'Bynavn' OR $_POST['email'] == 'navn@domain.dk' OR $_POST['vote'] == 'stem' OR $_POST['kode'] == 'Koden' OR $_POST['kodemed'] != $_POST['kode'])  {
    $navn = $_POST['navn'];
    $efternavn = $_POST['efternavn'];
    $adresse = $_POST['adresse'];
    $postnr = $_POST['postnr'];
    $city = $_POST['city'];
    $email = $_POST['email'];
    $vote = $_POST['vote'];
    $kodemed = $_POST['kodemed'];
    $kode = $_POST['kode'];
    echo "<html><body>
    <TABLE width=60\%>
    <tr>
        <td colspan='4'>";
        if ($navn == 'Navn') echo "<font color=red>Udfyld navn rigtigt!<br></font>";
        if ($efternavn == 'Efternavn') echo "<font color=red>Udfyld efternavn rigtigt!<br></font>";
        if ($adresse == 'gade og nr.') echo "<font color=red>Udfyld gade og nummer rigtigt!<br></font>";
        if ($postnr == '####') echo "<font color=red>Udfyld postnummer rigtigt rigtigt!<br></font>";
        if ($city == 'Bynavn') echo "<font color=red>Udfyld Bynavn rigtigt!<BR></font>";
        if ($email == 'navn@domain.dk') echo "<font color=red>Udfyld email rigtigt!<br></font>";
        if ($vote == 'stem') echo "<font color=red>Husk at stemme!<br></font>";
        if ($kode != $kodemed) echo "<font color=red>Den kode du har angivet er ikke den rigtige. Koden bruger vi til at verificere din stemme er korrekt, derfor skal den være præsis den samme som der er angivet.<br></font>";
        echo "<br>Alle de felter med en <font color=red>rød *</font> er ikke udfyldt korrekt.</td>
    </tr>
     
    <FORM METHOD=POST ACTION=\"vote.php?votein=1\">
    <TR>
    </TR>
    <TR>
        <td>Navn:</td>
        <td><input class=\"formfelt\" name=\"navn\" type=\"text\" size=18 value=".$navn." maxlength=25>";
        if ($navn == 'Navn') echo "<font color=red>*</font>";
        echo "</td>
    </TR>
    <TR>
        <td>Efternavn:</td>
        <td><input class=\"formfelt\" name=\"efternavn\" type=\"text\" size=18 value=".$efternavn." maxlength=25 >";
        if ($efternavn == 'Efternavn') echo "<font color=red>*</font>";
        echo "</td>
    </TR>
    <TR>
        <td>Adresse:</td>
        <td><input class=\"formfelt\" name=\"adresse\" type=\"text\" size=18 value=".$adresse." maxlength=45>";
        if ($adresse == 'gade og nr.') echo "<font color=red>*</font>";
        echo "</td>
    </TR>
    <TR>
        <td>Postnr.:</td>
        <td><input class=\"formfelt\" name=\"postnr\" type=\"text\" size=4 value=".$postnr." maxlength=4>";
        if ($postnr == '####') echo "<font color=red>*</font>";
        echo "By:
        <input class=\"formfelt\" name=\"city\" type=\"text\" size=18 value=".$city." maxlength=15>";
        if ($city == 'Bynavn') echo "<font color=red>*</font>";
        echo "</td>
    </TR>
    <TR>
        <td>Email:</td>
        <td><input class=\"formfelt\" name=\"email\" type=\"text\" size=18 value=".$email." maxlength=35>";
        if ($email == 'navn@domain.dk') echo "<font color=red>*</font>";
        echo "</td>
    </TR>
    <tr>
        <td width='200' colspan='2'><A HREF=\"naginata.jpg\" target=_blank alt='billed 1' ><img SRC=\"naginata.jpg\" border=0 width='300' alt='billed 1'></A></td>
        <td width='200' colspan='2'><A HREF=\"naginata-banner.jpg\" target=_blank alt='billed 2' ><img border=0 SRC=\"naginata-banner.jpg\" width='300' alt='billed 2'></A></td>
    </tr>
    <tr>
        <td colspan='2'>Afgiv din stemme her:</td>
        <td colspan='2'>
            <SELECT NAME=\"vote\">
                <option value=\"stem\">stem her
                <option value=\"1\">Design 1
                <option value=\"2\">Design 2
            </SELECT>";
        if ($vote == 'stem') echo "<font color=red>*</font>";
        echo "</td>
    </tr>
    <tr>
        <td>Gentag Koden:</td>
        <td> <input name=\"kodemed\" type=\"text\" readonly=\"true\" value=".$kodemed."></td>
        <td><input class=\"kode\" name=\"kode\" type=\"text\" size=18 value=\"Koden\" maxlength=35>";
        if ($kode != $kodemed) echo "<font color=red>*</font>";
        echo "</td>
    </tr>
    <tr>
        <td colspan='2' aling=center><input type='submit'></td><td colspan='2' aling=center><input type=\"reset\"></td>
    </tr>
    </TABLE></FORM></body></html>";

} else if ($_GET['stilling']) {
    db();
    $sqlhent = mysql_query("SELECT * FROM vote1 WHERE vote ='1'") or die (mysql_error());
    $sqlarray = mysql_fetch_array($sqlhent);
    $vote1 = mysql_num_rows($sqlhent);
    $sqlhent = mysql_query("SELECT * FROM vote1 WHERE vote ='2'") or die (mysql_error());
    $sqlarray = mysql_fetch_array($sqlhent);
    $vote2 = mysql_num_rows($sqlhent);
    $ialt = $vote1+$vote2;
    $procent1 = round(($vote1/$ialt)*100 ,2);
    $procent2 = round(($vote2/$ialt)*100 ,2);
    echo "<body><html>Der er afgivet ialt: ".$ialt." stemmer.<br>Der er afgivet: ".$vote1." (".$procent1."%) på design 1.<br>Der er afgivet: ".$vote2." (".$procent2."%) på design 2.<br>";
    echo "Det vil sige at ";
    if ($vote1 > $vote2) {
        echo "føre Design 1";
    } else if ($vote1 < $vote2) {
        echo "føre Design 2";
    } else {
        echo "det er godt nok spændende, det står helt lige mellem dem :D ";
    }
    echo "</body></html>";
}
?>
</body></html>
Avatar billede brops Nybegynder
04. juli 2004 - 03:12 #1
rettelse linie 116:
mysql_query ("INSERT INTO vote1 (navn, efternavn, adresse, postnr, city, ipadresse, vote, email, kode) VALUES ('$navn','$efternavn','$adresse','$postnr','$city','$ipadresse','$vote','$email','$kode')") or die (mysql_error());
Avatar billede dadane Novice
04. juli 2004 - 10:35 #2
Jeg gider ikke lige bruge min søndag formiddag på at læse din kode igennem - håber det er o.k.

Men uden at have gjort det har jeg et par kritikpunkter.

1) Hvorfor skal man gentage koden? For at undgå at robotter stemmer formoder jeg. Robotter har ganske nemt ved at flytte indholdet fra et felt til et andet. Det er derfor den slags altid er i nogle små grimme billeder.

2) Hvis jeg nu sletter mine cookies (har ikke set om du bruger cookies men det går jeg ud fra) og ringer op via min dial-up igen. Så får jeg nyt IP nummer. Hvordan vil det kunne tjekke det? (Ja det er muligt jeg går glip af gevinsten så - fordi jeg bliver tvunget til at skrive min mor eller en tilfældig person på).

3) Det er altid en afvejning af brugervenlighed og sikkerhed. Dit "sikkerhedskrav" om navn, adresse etc. vil uden tvivl betyde at du får ganske få stemmer. Er det det værd?
Avatar billede brops Nybegynder
04. juli 2004 - 12:17 #3
1) ja både for at undgå robotter, hvordan laver jeg det med billede så det ser nogenlunde ud???

2) ja jeg sætter cookies, og det er også det der er mit problem, ved ikke helt hvordan jeg løser det, lige når går det ud på at tjekke på adresse og email. Men ved ikke om det  holder???

3) Grunde til navn adresse mm er for at kunne fremsende en præmie til vinderen af lodtrækningen, har overvejet at fjerne den del, men så er det igen at noget af sikkerheden forsvinder ved ikke helt hvordan jeg så kan løse det
Avatar billede brops Nybegynder
08. juli 2004 - 18:12 #4
når lukker igen
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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