doppelte einträge trotz ip-sperre

Fragen rund um PHP,HTML,CSS und MySQL

doppelte einträge trotz ip-sperre

Beitragvon paddle » 2. Sep 2010, 14:44

hallo

ich habe ein kleines voting mit ip-sperre am laufen - ich weiss, ip-sperre ist nicht optimal aber der aufwand durfte nicht zu grosse sein - und jetzt gibt es trotzdem doppelte ip-nummer einträge... gibt's noch eine schlaue lösung, wie ich das verhindern kann?

hier der code
Code: Alles auswählen
<?php
   // rexpoll: Show Poll
   // ausgabe.
   
   if(OOAddon::isAvailable("rexpoll"))
   {   if (intVal("REX_VALUE[1]") > 0)   
      {   # do a basic security check to see if the user has voted in the last 24 hours, only cookie based
         echo '<div class="rexpoll">';
         if (isset($_POST['REXpoll']))
            { $ip=$_SERVER['REMOTE_ADDR'];
               $usql=new rex_sql;
               $usql->setTable($REX['ADDON']['dbpref']['rexpoll']."rexpoll_answers");
               $usql->setValue('fANSWER',intVal($_POST['REXpoll']['answer']));
               $usql->setValue('rPOLLID',"REX_VALUE[1]");
               $usql->setValue('fIP',$ip);
               $usql->insert();
               
               if ("REX_LINK[1]"!="")
               {   header('Location:'.rex_getUrl("REX_LINK_ID[1]"));
               }
            
            else
            {   header('Location:'.rex_getUrl($this->article_id));
            }
            exit();   
         }
         else
         {   # query db for polls
            $sql=new rex_sql;
            $sql->setQuery('SELECT * FROM '.$REX['ADDON']['dbpref']['rexpoll'].'rexpoll WHERE fID='.intVal("REX_VALUE[1]"));
            
            # if the poll exists, show it
            if ($sql->getRows()==1)
            {   
               # explode the answers into an array
               $values=$sql->getValue('fFIELDS');
               $values=trim($values);
               $values=explode("\n",$values);
               
               if (count($values)>0)
               {   # if any answers are found, show the poll form
                  echo '<form action="index.php" name="REXpoll" method="post">';   
                  echo '<h2>Online-Abstimmung</h2>';               
                                 
                  // IP aus der DB auslesen
                  $ip=$_SERVER['REMOTE_ADDR'];
                  $IPsql=new rex_sql;
                  $IPsql->setQuery("SELECT * FROM  `rex_250_rexpoll_answers` WHERE  `fIP` LIKE  '$ip'");
                  $rows = $IPsql->getRows();
                  # if IP exists
                  if ($rows != 0)
                  {
                  echo '<p class="voted"><b>Sie haben bereits abgestimmt!</b></p>';
                  }
                  
                  foreach ($values as $k=>$v)
                  {   if ($k==0)
                     {   $sel=' checked="checked"';
                     }
                     else
                     {   $sel='';
                     }
                     echo '<input'.$sel.' type="radio" id="REXpoll_'.$k.'" name="REXpoll[answer]" value="'.$k.'" />'."\n";
                     echo '<label for="REXpoll_'.$k.'">'.htmlentities($v,ENT_QUOTES,'UTF-8').'</label><br />'."\n";
                  }
                  echo '<input type="hidden" name="REXpoll[poll]" value="'."REX_VALUE[1]".'">'."\n";
                  echo '<input type="hidden" name="article_id" value="'.$this->article_id.'">'."\n";
                  echo '<input type="hidden" name="clang" value="'.$REX['CUR_CLANG'].'">'."\n";
                  
                  
               if ($rows != 0)
               {   
                  if ("REX_LINK[1]"!="")
                     {   echo '<p class="result"><a href="'."REX_LINK[1]".'" title="Ergebnisse anzeigen">» Ergebnisse anzeigen</a></p>';
                     }
               }
                  else
                  {   echo '<input type="submit" class="submit" name="REXpoll[submit]" value="» Abstimmen" />';
                  }
                  echo '</form>';
               }
               
            }
            else
            {   echo 'REXpoll - no polls found';
            }
         }
         echo '</div>';
      }
   }
   else
   {   echo "Dieses Modul ben&ouml;tigt das REXpoll Addon!";
   }

?>


danke und gruss
pat
paddle
 
Beiträge: 118
Registriert: 13. Jun 2006, 16:27
Wohnort: Zürich, Schweiz

Beitragvon Hirbod » 3. Nov 2010, 03:55

Setzt per phpMyAdmin die IP-Spalte einfach auf Unique - dann ist sie einmalig und weitere Einträge mit der gleichen IP würden ignoriert werden.

Wäre jetzt eine schnelle Lösung
Hirbod
 
Beiträge: 369
Registriert: 15. Jan 2008, 13:46


Zurück zu PHP/HTML/CSS/MySQL

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron