ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Voting für user nur einmal

Geschlossen
  1. #1
    User Pic
    Schakal76 Mitglied
    Registriert seit
    19.08.2005
    Beiträge
    174
    Beitragswertungen
    0 Beitragspunkte
    Hallo

    Ich habe da mal eine frage bezüglich des votings --> der vote Box, ist es möglich das alle die auf der hompage regestriert sind das aktuelle voting nur einmal machen können? Das Problem, welches ich zb habe ist das wenn ich mich am nächsten tag wieder einlogge (manchmal auch später am gleichen Tag) ich das voting nocheinmal machen kann/ muss um den aktuellen stand zu sehen, damit verfälsche ich aber das ergebnis.

    Mir würde es schon ausreichen, wenn alle regestreierten auf meiner HP das voting nur einmal abgeben dürfen, so das man wenn man wieder mal auf die HP geht immer nur noch das ergebnis sieht....

    Hoffe es ist einigermassen verständlich erklärt...

    Danke für eure Hilfe
    mfg
    Schakal


    verwendete ilchClan Version: 1.1

    betroffene Homepage: sfh-clan.eu
    Binde Dich an nichts, was du nicht in 30 sekunden problemlos wieder los wirst!!
    externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    vollstr3cker Mitglied
    Registriert seit
    12.02.2007
    Beiträge
    1.399
    Beitragswertungen
    0 Beitragspunkte
    du kannst einstellen das der vote nur für registrierte ist dann kann jeder nur einmal voten
    ####################
    ## hier geht's zu apex designs,
    # meinem digitalen Portfolio
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Schakal76 Mitglied
    Registriert seit
    19.08.2005
    Beiträge
    174
    Beitragswertungen
    0 Beitragspunkte
    das hat leider den nachteil das dann kein anderer voten kann ... ist nicht so das was ich erreichen mag. ich will nur das umgehen das die leute die täglich auf die hp gehen... meist die die dort auch regestriert sind nicht mehrmals voten müssen um das ergebnis zu sehn
    Binde Dich an nichts, was du nicht in 30 sekunden problemlos wieder los wirst!!
    externer Link
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    boehserdavid Mitglied
    Registriert seit
    26.08.2006
    Beiträge
    2.122
    Beitragswertungen
    2 Beitragspunkte
    Hey, Schakal76!

    An sowas bin ich im Moment bei, also ich hab den Gedanken schonmal gefasst, sowas umzusetzen!

    Wenn du irgendwie noch 2-3 Tage warten kannst, dann geb ich dir den Code!

    Mit böhsen Grüßen
    BöhserDavid
    -Heute schon böhse gewesen?- Ab zur Community
    -No Support via Contact-
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Schakal76 Mitglied
    Registriert seit
    19.08.2005
    Beiträge
    174
    Beitragswertungen
    0 Beitragspunkte
    na klar hab ich die zeit lächeln

    danke
    Binde Dich an nichts, was du nicht in 30 sekunden problemlos wieder los wirst!!
    externer Link
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Frush gelöschter User
    ich bräuchte den code bitte auch, habe das gleiche problem.

    Wenns geht, einfach hier posten oder?

    Danke!

    lächeln
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Schakal76 Mitglied
    Registriert seit
    19.08.2005
    Beiträge
    174
    Beitragswertungen
    0 Beitragspunkte
    wollt mal nachfragen ob es schon vortschritte gibt oder es doch zu kompliziert ist? Vieleicht hat ja auch n anderer noch ne idee lächeln

    mfg
    Schakal
    Binde Dich an nichts, was du nicht in 30 sekunden problemlos wieder los wirst!!
    externer Link
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Das ist eigentlich ganz einfach zunge
    Man muss nur in den Dateien include/contents/vote.php (2mal) und include/boxes/vote.php (1mal).
    Den Code
    	  if ($fraRow->recht == 2) {
    		  $inTextAr = $_SESSION['authid'];
    		} elseif ($fraRow->recht == 1) {
    		  $inTextAr = $_SERVER['REMOTE_ADDR'];
    		}
    durch folgenden Code
     	$inTextAr = $_SESSION['authid'];
      	if ($fraRow->recht == 1 AND !loggedin()) {
      	  $inTextAr = $_SERVER['REMOTE_ADDR'];
      	}
    ersetzen.
    Bei Leute, bei denen es zu Problemen mit dem Abstimmen von Gästen gibt, die müssen $_SERVER['REMOTE_ADDR'] durch getip() ersetzen.


    Zuletzt modifiziert von Mairu am 08.07.2007 - 11:24:51
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    boehserdavid Mitglied
    Registriert seit
    26.08.2006
    Beiträge
    2.122
    Beitragswertungen
    2 Beitragspunkte
    Danke Mairu, ich wollte das auch gerade in Angriff nehmen, ich kam bloß nicht dazu, da immer irgendwer dazwischen kam, und ein "kleines" Problem hatt!

    Yes Stern
    -Heute schon böhse gewesen?- Ab zur Community
    -No Support via Contact-
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    4toGoal Mitglied
    Registriert seit
    13.01.2007
    Beiträge
    74
    Beitragswertungen
    0 Beitragspunkte
    Also ich drück einfach immer auf dem Bottom ohne zu Voten. Dann zählt er nicht und ich komme trotzdem zum Voteergebnis.

    Aber man könnte ja in die Vote-Box noch einen Bottom einfügen, der genau das macht.

    Gruß
    Das Leben ist ein Scheißspiel, aber die Grafik ist geil.
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Teuflischer Mitglied
    Registriert seit
    21.11.2008
    Beiträge
    358
    Beitragswertungen
    0 Beitragspunkte
    hab alles genau gemacht wie hier beschrieben.

    habs denn ausprobiert, als Gast und es ich kann die umfragen ergebnisse sehen, aber nich abstimen.

    also hab ich den rat von mairu beherzigt und getip() statt $_SERVER['REMOTE_ADDR'] eingegeben.

    bei allen 3 teilen, 2 mal contens und 1 mal box aber es will immer noch nich.

    kann mir jemand helfen.

    include/boxes/votes.php

    <?php 
    #   Copyright by Manuel Staechele
    #   Support www.ilch.de
    #   Modified by Mairu -> Erweiterte Umfrage 1.3
    #   include/boxes/vote.php
    
    
    defined ('main') or die ( 'no direct access' );
    
    
    //-----------------------------------------------------------|
    // Vote Sperre in Stunden
    
    $stunden = 24;
    
    	$breite = 50;
    	$diftime = time() - (60 * 60 * $stunden);
    		
    	$voted = array();
    	
      $fraErg = db_query('SELECT * FROM `prefix_poll` WHERE stat = 1 ORDER BY poll_id DESC');
     	
      if ( db_num_rows($fraErg) > 0) {
    	$pollid = 0;
      while ($fraRow = db_fetch_object($fraErg)) { 
        
        $inTextAr = $_SESSION['authid'];
          if ($fraRow->recht == 1 AND !loggedin()) {
            $inTextAr = getip();
          }
    		
    		$textAr = explode('#',$fraRow->text);
    		if ( in_array ( $inTextAr , $textAr )) {
    			$imPollArrayDrin = true;
    		} else {
    			$imPollArrayDrin = false;
    		}
    
        if (!$imPollArrayDrin OR (count($tovote) == 0 AND $fraRow->view >= $_SESSION['authright'])) {
          if ($fraRow->recht == 2) { 
            if ($fraRow->user_rechte == '') $fraRow->user_rechte = '0123456789';
            if (!empty($fraRow->groups)) {
              $votegroups = explode('#', $fraRow->groups);
        		  foreach ($_SESSION['authgrp'] as $id => $authgroup) if (in_array($id, $votegroups)) $abstimmen = true;
        		  if (strpos($fraRow->user_rechte,''.abs($_SESSION['authright'])) === false) $abstimmen = false;
              }
            elseif (strpos($fraRow->user_rechte,''.abs($_SESSION['authright'])) !== false) {
              $abstimmen = true;
            }
          } else { $abstimmen = true; }
          
          if ($abstimmen AND !$imPollArrayDrin) {
            $pollid = $fraRow->poll_id;
            break;
          } elseif ($fraRow->view >= $_SESSION['authright']) {
            $voted[] = $fraRow->poll_id;
            }
          }
        }
      }
      
      if ($pollid == 0 AND count($voted) > 0) {
        $pollid = $voted[array_rand($voted,1)];
        $voted = true;
      } else {
        $voted = false;
      }
        
      if ($pollid != 0) {
    	$fraErg = db_query('SELECT * FROM `prefix_poll` WHERE recht '.$woR.' AND poll_id = '.$pollid.' ORDER BY poll_id DESC LIMIT 1');
    	$fraRow = db_fetch_object($fraErg);
    		
    	$maxRow = db_fetch_object(db_query('SELECT MAX(res) as res FROM `prefix_poll_res` WHERE poll_id = "'.$fraRow->poll_id.'"'));
    	$gesErg = db_query('SELECT SUM(res) as res FROM `prefix_poll_res` WHERE poll_id = "'.$fraRow->poll_id.'"');
    	$gesRow = db_fetch_object($gesErg);
    	
    	
    	$max = $maxRow->res;
      $ges = $gesRow->res;
    	$textAr = explode('#',$fraRow->text);
    	
    	  $inTextAr = $_SESSION['authid'];
          if ($fraRow->recht == 1 AND !loggedin()) {
            $inTextAr = $_SERVER['REMOTE_ADDR'];
          }
    		
    		echo '<b>'.$fraRow->frage.($fraRow->answers > 1 ? " ($fraRow->answers Antworten m&ouml;glich)" : '').'</b>';
    		if ($fraRow->exptime > 0) {
          echo '<br /><small>(bis '.date('H.i \U\h\r - d.m.Y',$fraRow->exptime).')</small>';
        }
    		if ( in_array ( $inTextAr , $textAr ) OR $fraRow->stat == 0 OR $voted) {
    			  echo '<table width="100%" cellpadding="0">';
    		    $imPollArrayDrin = true;
    		} else {
    			  echo '<form action="index.php?vote-W'.$fraRow->poll_id.'" method="POST">';
    		    $imPollArrayDrin = false;
    		}
    		$i = 0;
        $pollErg = db_query('SELECT antw, res, sort FROM `prefix_poll_res` WHERE poll_id = "'.$fraRow->poll_id.'" ORDER BY sort');
    		while ( $pollRow = db_fetch_object($pollErg) ) {
    		    if ( $imPollArrayDrin ) {
    						echo '<tr><td>'.$pollRow->antw.'</td><td align="right">'.$pollRow->res.' ('.round($pollRow->res/($ges>0?$ges:1)*100,1).'%)</td></tr>';
    		    } else {
    			      $i++;
                if ($fraRow->answers <= 1) {
    			        echo '<input type="radio" id="vote'.$i.'" name="radio" value="'.$pollRow->sort.'"><label for="vote'.$i.'"> '.$pollRow->antw.'</label><br>';
    		        } else {
                  echo '<input type="checkbox" id="vote'.$i.'" name="radio[]" value="'.$pollRow->sort.'"><label for="vote'.$i.'"> '.$pollRow->antw.'</label><br>';
                }
    		    }
    		} 
    		if ( $imPollArrayDrin ) {
    			  echo '<tr><td colspan="2" align="right">'.$lang['whole'].': &nbsp; '.$ges.'</td></tr></table>';
    		} else {
    		    echo '<p align="center"><input type="submit" value="'.$lang['formsub'].'"></p></form>';
    		}   
    		} else {
    		  echo $lang['nowvoteavailable'];
    		}
    
    ?>



    und hier meine include/contents/vote.php

    <?php 
    #   Copyright by: Manuel Staechele
    #   Support: www.ilch.de
    #   Modified by Mairu -> Erweiterte Umfrage 1.3
    #   include/contents/vote.php
    
    
    defined ('main') or die ( 'no direct access' );
    
    
    
    
    //-----------------------------------------------------------|
    
    
    ##
    ###
    ####
    ##### ins vote
    $um = $menu->get(1);
    $info = '';
    if ($menu->getA(1) == 'W') {
    
    
    	  $poll_id = escape ($menu->getE(1), 'integer');
    		$fraRow = db_fetch_object(db_query("SELECT * FROM prefix_poll WHERE poll_id = '".$poll_id."'"));
        $vote = true;
        
    	  if ($fraRow->answers <= 1) {
          $radio = ' = '.escape ($_POST['radio'], 'integer');
        } else {
          if ($fraRow->answers < count($_POST['radio'])) {
            $vote = false;
            $info = '<span style="color:red; font-size: 16px; font-weight:bold;">Es sind maximal '.$fraRow->answers.' Antworten m&ouml;glich</span><br />';
          } else {
            $radio = ' IN (';
            foreach ($_POST['radio'] as $k => $v) {
              $radio .= escape($_POST['radio'][$k],'integer').',';
            }
            $radio = substr($radio,0,-1).')';
          }
        }  
        
        
        if ($fraRow->exptime != 0 AND $fraRow->exptime < time()) {
          db_query("UPDATE `prefix_poll` SET stat = 0 WHERE poll_id = $poll_id");
        } elseif ($vote) {
          $textAr = explode('#',$fraRow->text);
      	  $inTextAr = $_SESSION['authid'];
          if ($fraRow->recht == 1 AND !loggedin()) {
            $inTextAr = getip();
          }
      		if ( !in_array ( $inTextAr , $textAr ) ) {
      			$textAr[] = $inTextAr;
      		  $textArString = implode('#',$textAr);
            db_query('UPDATE `prefix_poll` SET text = "'.$textArString.'" WHERE poll_id = "'.$poll_id.'"');
      		  db_query('UPDATE `prefix_poll_res` SET res = res + 1 WHERE poll_id = "'.$poll_id.'" AND sort '.$radio) or die (mysql_error());
      		}
    		}
    }
    
    ##
    ###
    ####
    ##### V o t e    Ü b e r s i c h t 
    
    $title = $allgAr['title'].' :: '.$lang['vote'];
    $hmenu = $lang['vote'];
    $design = new design ( $title , $hmenu );
    $design->header();
    echo $info;
    
    ?>
    <table width="100%" cellpadding="2" cellspacing="1" border="0" class="border">
      <tr class="Chead">
        <td><b><?php $lang['vote']; ?></b></td>
      </tr>
    	
    <?php
    
    $breite = 200;
    if ($_SESSION['authright'] <= -1 ) {
    	  $woR = '>= "1"';
    } else {
    	  $woR = '= "1"';
    }
    $limit = 5;  // Limit
    $zaehler = 0;
    $page = ( $menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
    $MPL = db_make_sites ($page , '' , $limit , "?vote" , 'poll' );
    $anfang = ($page - 1) * $limit;
    $class = '';
    $erg = db_query('SELECT * FROM `prefix_poll` ORDER BY stat DESC, poll_id DESC LIMIT '.$anfang.',10000000');
    while ($zaehler < $limit AND $fraRow = db_fetch_object($erg)) {
    
    	$maxRow = db_fetch_object(db_query('SELECT MAX(res) as res FROM `prefix_poll_res` WHERE poll_id = "'.$fraRow->poll_id.'"'));
    	$gesRow = db_fetch_object(db_query('SELECT SUM(res) as res FROM `prefix_poll_res` WHERE poll_id = "'.$fraRow->poll_id.'"'));
    	$max = $maxRow->res;
      $ges = $gesRow->res;
    	$textAr = explode('#',$fraRow->text);
    	
    	  $inTextAr = $_SESSION['authid'];
          if ($fraRow->recht == 1 AND !loggedin()) {
            $inTextAr = getip();
          }
    		
        
        if ($fraRow->user_rechte == '') $fraRow->user_rechte = '0123456789';
    		if (!empty($fraRow->groups)) {
          $votegroups = explode('#', $fraRow->groups);
    		  foreach ($_SESSION['authgrp'] as $id => $authgroup) if (in_array($id, $votegroups)) $abstimmen = true;
    		  if (strpos($fraRow->user_rechte,''.abs($_SESSION['authright'])) === false) $abstimmen = false;
        }
        elseif (strpos($fraRow->user_rechte,''.abs($_SESSION['authright'])) !== false) $abstimmen = true;
        else $abstimmen = false;
        
        if (( in_array ( $inTextAr , $textAr ) OR $fraRow->stat == 0) OR (!$abstimmen)) {
    			$imPollArrayDrin = true;
    		} elseif ($abstimmen) {
    			$imPollArrayDrin = false;
    		}
        
        if (!$imPollArrayDrin OR $fraRow->view >= $_SESSION['authright']) {
        $zaehler++; 
        echo '<tr><td class="Cdark"><b>'.$fraRow->frage.($fraRow->answers > 1 ? " ($fraRow->answers Antworten m&ouml;glich)" : '').'</b>';
        if ($fraRow->stat == 0 ) { echo ' (geschlossen)'; }
        elseif ($fraRow->exptime > 0) { echo ' (bis '.date('H.i \U\h\r - d.m.Y',$fraRow->exptime).')'; }
        echo '</td></tr>';
    		if ( $class == 'Cnorm' ) { $class = 'Cmite'; } else { $class = 'Cnorm'; }
    		echo '<tr><td class="'.$class.'">';
    
    		if ($imPollArrayDrin) {
    			  echo '<table width="100%" cellpadding="0">';
    		} else {
    			  echo '<form action="index.php?vote-W'.$fraRow->poll_id.'" method="POST">';
    		}
    
        $i = 0;
    		$pollErg = db_query('SELECT antw, res, sort FROM `prefix_poll_res` WHERE poll_id = "'.$fraRow->poll_id.'" ORDER BY sort');
    		while ( $pollRow = db_fetch_object($pollErg) ) {
    		    if ( $imPollArrayDrin ) {
    	 		     if ( !empty($pollRow->res) ) {  
    				      $weite = ($pollRow->res / $max) * 200;
    		 		      $prozent = $pollRow->res * 100 / $ges;
    		 		      $prozent = round($prozent,0);
    				    } else {
    		  		    $weite = 0;
    					    $prozent = 0;
    				    }
    						$tbweite = $weite + 20;
    						echo '<tr><td width="30%">'.$pollRow->antw.'</td>';
    				    echo '<td width="50%">';
                /*
                '<table width="'.$tbweite.'" border="0" cellpadding="0" cellspacing="0"></td>';
    						echo '<tr><td width="10" height="10"></td>';
    						echo '<td width="'.$weite.'" background="include/images/vote/voteMitte.jpg" alt=""></td>';
    						echo '<td width="10"><img src="include/images/vote/voteRight.jpg" alt=""></td>';
    						echo '</tr></table>';*/
                echo '<div style="height: 10px; width: ' . $weite .'px; background: #3776a5 url(include/images/vote/voteMitte.png) repeat-y top left;">'.
                     '</div>';
    				    
                echo '<td width="10%">'.$prozent.'%</td>';
    				    echo '<td width="20%" align="right">'.$pollRow->res.'</td></tr>';
    				} else {
                $i++;
                if ($fraRow->answers <= 1) {
    			        echo '<input type="radio" id="vote'.$i.'" name="radio" value="'.$pollRow->sort.'"><label for="vote'.$i.'"> '.$pollRow->antw.'</label><br>';
    		        } else {
                  echo '<input type="checkbox" id="vote'.$i.'" name="radio[]" value="'.$pollRow->sort.'"><label for="vote'.$i.'"> '.$pollRow->antw.'</label><br>';
                }
            }
    		} 
    		if ( $imPollArrayDrin ) {
    			  echo '<tr><td colspan="2" align="right">'.$lang['whole'].': &nbsp; '.$ges.'</td></tr></table>';
    		} else {
    		    echo '<p align="center"><input type="submit" value="'.$lang['formsub'].'"></p></form>';
    		}
    		
        echo '</td></tr>';
        }
    }// end while
    
    echo '<tr><td class="Cdark" align="center">'. $MPL .'</td></tr></table>';
    $design->footer();
    
    ?>
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Kannst du mal eine PHP Datei erstellen
    <?php echo 'RA: '.$_SERVER['REMOTE_ADDR'].'<br>';
    echo 'FW: '.$_SERVER['HTTP_X_FORWARDED_FOR']; ?>
    und diese dann aufrufen und mal schauen, ob da vielleicht mehr als nur eine IP Adresse (pro Zeile) steht?

    Und schau mal nach, ob das auch deine IP ist (www.wieistmeineip.de/ sollte helfen).

    Zuletzt modifiziert von Mairu am 14.03.2009 - 22:24:24
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Frostwolfxy Mitglied
    Registriert seit
    12.06.2010
    Beiträge
    54
    Beitragswertungen
    0 Beitragspunkte
    Könnt ihr da nicht einfach ilch updaten ?
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Akira Mitglied
    Registriert seit
    25.01.2007
    Beiträge
    1.369
    Beitragswertungen
    1 Beitragspunkte
    mann müsste mit cookies arbeiten für öffentliche vots

    is sogar relativ einfach

    müsste mal gucken wie ich zeit hab dann könnte ich mairus script modifizieren
    externer Link Visit Us zwinker
    Neue Scripte: JQuery Login usw... Turnier(externer Link Multi-Bewertung, Refferer, Forum Upload, E-Mail login
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Frostwolfxy Mitglied
    Registriert seit
    12.06.2010
    Beiträge
    54
    Beitragswertungen
    0 Beitragspunkte
    Also ich habe das mal probiert und die ganze Page gecrasht^^

    Könntet ihr nicht die funktion in die vote.php einbauen und zum download anbieten ? Oder den gesamten code posten und wir fügen den nur noch ein....
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Frostwolfxy Mitglied
    Registriert seit
    12.06.2010
    Beiträge
    54
    Beitragswertungen
    0 Beitragspunkte
    Hat schon wer eine Lösung, damit registrierte User nicht immer neu voten müssen, wenn man eine Umfrage für alle startet ?
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Akira Mitglied
    Registriert seit
    25.01.2007
    Beiträge
    1.369
    Beitragswertungen
    1 Beitragspunkte
    ZitatZitat geschrieben von Frostwolfxy

    Hat schon wer eine Lösung, damit registrierte User nicht immer neu voten müssen, wenn man eine Umfrage für alle startet ?


    da gibt es mehrere (du könntest die usernamen der voter abspeichern)

    effizienteste methode ist die coockie lösung
    mach ich in ca 2 wochen nach mienen prüfungen
    externer Link Visit Us zwinker
    Neue Scripte: JQuery Login usw... Turnier(externer Link Multi-Bewertung, Refferer, Forum Upload, E-Mail login
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Frostwolfxy Mitglied
    Registriert seit
    12.06.2010
    Beiträge
    54
    Beitragswertungen
    0 Beitragspunkte
    Wie speicher ich die Usernamen ?
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten