Avatar billede rall Nybegynder
26. marts 2004 - 16:08 Der er 6 kommentarer og
2 løsninger

Poll scipt?

Jeg har et problem..! :( Jeg har forsøgt nogle gange at lave en poll (afstemning) i PHP. Men problemmet er at når en person har stemt én gang, kan han blive ved med at stemme.. Jeg kunne godt tænke på et uddybet svar.

Jeg vil også blevet MEGET glad hvis noget havde en færdig poll jeg måtte få..

Mvh Rasmus
Avatar billede googolplex Novice
26. marts 2004 - 16:41 #1
Du kan bruge flere løsningen:

1. Du smider en cookie på brugerens computer og tjekker om den er sat når han næste gang forsøger at stemme.

2. Du logger hans ip.

3. Du tillader kun folk at stemme hvis de er oprettede som brugere.

Jeg bruger både 1+2, det er rimelig godt til at luge de fleste dobbeltstemmere fra.

For polls, se:

http://www.hotscripts.com/PHP/Scripts_and_Programs/Polls_and_Voting/index.html
Avatar billede rall Nybegynder
26. marts 2004 - 18:22 #2
Må skal ikke være oprettet som bruger, så den kan jeg ikke bruge... Jeg havde tænkt på det mede cookie og IP, men det er koden til hvordan man gør det jeg godt kunne tænke mig! :D
Avatar billede googolplex Novice
26. marts 2004 - 20:05 #3
Når der stemmes, sætter du en cookie med setcookie():

$voteID = 1;

if (isset($_POST['stem'])
{
    setcookie('myvote', $voteID, time()+31536000);
}

Nu har jeg sat en cookie med navnet 'myvote' og værdien $voteID (Jeg går ud fra at du skifter afstemningerne løbende). Cookien udløber efter et år.

Derefter tjekker jeg om cookien er sat for den pågældende afstemning ($voteID):

if (isset($_COOKIE['myvote']) && $voteID == $_COOKIE['myvote']))
{
    // Show poll results for $voteID
}
else
{
    // Show poll $voteID
}

Det var eksemplet med en cookie, jeg tror det funket, men har ikke afprøvet det.

Derudover kan du jo logge IP-adressen på alle der stemmer, smide deres IP i en database med reference til den pågældende vote og tjekke om de har stemt her også.

Jeg logger med følgende funktion:

function findip()
{
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && '' != $_SERVER['HTTP_X_FORWARDED_FOR'] && 'unknown' != $_SERVER['HTTP_X_FORWARDED_FOR'])
    {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    $ip = explode(',', $ip);
    $ip = $ip[0];

    return $ip;
}
Avatar billede googolplex Novice
26. marts 2004 - 20:06 #4
Der er lige en ')' for meget i linien:

if (isset($_COOKIE['myvote']) && $voteID == $_COOKIE['myvote']))

Den skal være:

if (isset($_COOKIE['myvote']) && $voteID == $_COOKIE['myvote'])
Avatar billede googolplex Novice
26. marts 2004 - 20:06 #5
Nåja, og den ')' der var for meget kan du smide her:

if (isset($_POST['stem'])

Der mangler nemlig en ;)
Avatar billede rall Nybegynder
27. marts 2004 - 11:54 #6
Hvad så hvis jeg har en MySQL tabel men en række der hedder "stemmer". Hvordan skal "+1" koden så se ud?

<?
  require("db_ind.php");
  mysql_query("SELECT * FROM poll"); 

$step_1 == $data[stemmer]

$step_1 + 1 == $step_2

mysql_query("UPDATE poll SET stemmer = '$step_2' WHERE navn = '$data[navn]'");

?>

Ville det være den rigtige måde?
Avatar billede rall Nybegynder
27. marts 2004 - 12:52 #7
Hvad er fejlen i denne kode, point til det rigtige svar.. :

<?
if ($page == stem) {
?>

            <?
            ##Set cookie

            $voteID = 1;
            if (isset($_POST['stem']))
            {
                setcookie('myvote', $voteID, time()+31536000);
            }

            ##Slut cookie
            ?>
    <!-- HTML --!>

    <html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="da">
<title>Fellatia.dk | </title>
<link rel="stylesheet" type="text/css" href="../../style.txt">
<base target="_self">
</head>

<body bgcolor="#98B3E4" topmargin="0" leftmargin="0">


<div align="center">
  <center>
  <table border="0" width="100%" height="418" cellspacing="0" cellpadding="0">
    <tr>
      <td width="100%" height="100%" bgcolor="#D1DDF3" valign="top">
        <a name="top"></a>
        <hr width="98%" size="0" color="#D1DDF3">
        <div align="center">
          <center>
          <table border="0" width="720" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0">
            <tr>
              <td width="100%" height="34" background="../../grafik/stoff_head.jpg">&nbsp;&nbsp;
                <font size="4">Stem</font></td>
            </tr>
          </table>
          </center>
        </div>
        <div align="center">
          <center>
<table border="0" width="720" style="border-left: 1 solid #909090; border-right: 1 solid #909090" bgcolor="#FFFFFF" cellspacing="0">
  <tr>
    <td width="100%" bgcolor="#EBF1FA">
      <br>
          </center>
  </center>
      <p align="left">
  <form method="POST" action="stem.php?page=action">
    <div align="center">
      <center>
        <table border="0" width="200" bgcolor="#909090" cellspacing="1">
          <tr>
            <td width="100%" bgcolor="#7EA0DE">
           
            <?
            require("db_ind.php");
            $acces = mysql_query("SELECT * FROM poll ORDER BY id");
            while ($data = mysql_fetch_array($acces)) {
            ?>
           
            <b>Hvilken babe er hottes?</b></td>
          </tr>
          <tr>
            <td width="100%" bgcolor="#98B3E4">
              <table border="0" width="100%" cellspacing="0" cellpadding="0">
                <tr>
                  <td width="10%"><input type="radio" value="&lt;? echo $data[navn] ?&gt;" checked name="stem"></td>
                  <td width="90%"><? echo $data[navn] ?></td>
                </tr>
              </table>
            </td>
          </tr>
      </center>
          <tr>
            <td width="100%" bgcolor="#7EA0DE">
           
            <?
            }
            ?>
            <table border="0" width="100%" cellspacing="0">
              <tr>
                <td width="100%">
                  <p align="center"><input type="submit" value="Stem" name="stem" style="font-family: Arial; font-size: 8 pt; font-weight: bold; background-color: #98B3E4; color: #3F3F3F; border: 1 solid #909090"></p>
                </td>
              </tr>
            </table>
           
            </td>
          </tr>
        </table>
    </div>
  </form>
      <p align="left">&nbsp;

    </td>
  </tr>
</table>
        </div>
  <center>
        <div align="center">
          <center>
          <table border="0" width="720" cellspacing="0" cellpadding="0">
            <tr>
              <td width="100%"><img border="0" src="../../grafik/stoff_end.jpg" width="720" height="20"></td>
            </tr>
          </table>
          </center>
        </div>
      </td>
    </tr>
  </table>
</div>

</body>

</html>


    <!--HTML Slut --!>

<?
} elseif ($page == resultat) {
?>
    <!-- HTML --!>

    <html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="Content-Language" content="da">
<title>Fellatia.dk | </title>
<link rel="stylesheet" type="text/css" href="../../style.txt">
<base target="_self">
</head>

<body bgcolor="#98B3E4" topmargin="0" leftmargin="0">


<div align="center">
  <center>
  <table border="0" width="100%" height="418" cellspacing="0" cellpadding="0">
    <tr>
      <td width="100%" height="100%" bgcolor="#D1DDF3" valign="top">
        <a name="top"></a>
        <hr width="98%" size="0" color="#D1DDF3">
        <div align="center">
          <center>
          <table border="0" width="720" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0">
            <tr>
              <td width="100%" height="34" background="../../grafik/stoff_head.jpg">&nbsp;&nbsp;
                <font size="4">Stem</font></td>
            </tr>
          </table>
          </center>
        </div>
        <div align="center">
          <center>
<table border="0" width="720" style="border-left: 1 solid #909090; border-right: 1 solid #909090" bgcolor="#FFFFFF" cellspacing="0">
  <tr>
    <td width="100%" bgcolor="#EBF1FA">
      <br>
          </center>
  </center>
      <p align="left">
  <form method="POST" action="">
    <div align="center">
      <center>
        <table border="0" width="300" bgcolor="#909090" cellspacing="1">
          <tr>
            <td width="100%" bgcolor="#7EA0DE">
           
            <?
            require("db_ind.php");
            $acces = mysql_query("SELECT * FROM poll ORDER BY id");
            while ($data = mysql_fetch_array($acces)) {
            ?>
           
            <b>Hvilken babe er hottes?</b></td>
          </tr>
          <tr>
            <td width="100%" bgcolor="#98B3E4">
              <table border="0" width="100%" cellspacing="0" cellpadding="0">
                <tr>
                  <td width="80%"><b><? echo $data[navn]; ?></b></td>
                  <td width="20%"><? echo $data[stemmer]; ?></td>
                </tr>
              </table>
            </td>
          </tr>
      </center>
          <tr>
            <td width="100%" bgcolor="#7EA0DE">
           
            <?
            }
            ?>
            <table border="0" width="100%" cellspacing="0">
              <tr>
                <td width="100%">
                  <p align="right">Fellatia QuickPoll</p>
                </td>
              </tr>
            </table>
           
            </td>
          </tr>
        </table>
    </div>
  </form>
      <p align="left">&nbsp;

    </td>
  </tr>
</table>
        </div>
  <center>
        <div align="center">
          <center>
          <table border="0" width="720" cellspacing="0" cellpadding="0">
            <tr>
              <td width="100%"><img border="0" src="../../grafik/stoff_end.jpg" width="720" height="20"></td>
            </tr>
          </table>
          </center>
        </div>
      </td>
    </tr>
  </table>
</div>

</body>

</html>


    <!-- HTML Slut --!>

<?
} elseif ($page == action) {
?>



    <?
    require("db_ind.php");
    mysql_query("SELECT * FROM poll"); 

    $step_1 == $data[stemmer]

    $step_1 + 1 == $step_2

    mysql_query("UPDATE poll SET stemmer = '$step_2' WHERE navn = '$data[navn]'");
    ?>


<?
} else {
?>


            <?
            if (isset($_COOKIE['myvote']) && $voteID == $_COOKIE['myvote'])
            {
              header(Location: stem.php?page=resultat);
            }
            else
            {
              header(Location: stem.php?page=stem); 
            }
            ?>

<?
}
?>
Avatar billede rall Nybegynder
27. marts 2004 - 13:17 #8
Jeg har fundet frem til at fejlen ligger i disse linie, kan bare ikke finde den :(

<?
if (isset($_COOKIE['myvote']) && $voteID == $_COOKIE['myvote'])
{
header(Location: stem.php?page=resultat);
}
else
{
header(Location: stem.php?page=stem);
}
?>
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