ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » Topliste 1.2

Geschlossen
  1. #1
    User Pic
    Anoxoz Mitglied
    Registriert seit
    05.07.2013
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    Hallo zusammen,

    ich habe bei uns auf der Seite die Topliste 1.2 installiert. Funktioniert soweit auch alles, bis auf die 24h Sperre, man kann immer wieder auf den Banner klicken und der Vote wird gezählt.
    Habe hier im Forum auch schon nach Beiträgen gesucht, aber nichts passendes gefunden.
    Hoffe ihr könnt mir weiterhelfen.
    In der Topliste ist ein Banner zum Testen bereits drin.

    externer Link

    MfG
    Anoxoz


    verwendete ilchClan Version: 1.1 O

    betroffene Homepage: externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Ich hatte da mal etwas gemacht aber glaub das lief mit db und ip oder war das standart drin? lachen
    Ka aufjedenfall hatte ich da mal was geaendert

    Glaub die beste lösung ist das nicht aber bisher lief es immer und noch hatte keiner was gesagt ^^

    uostuff.uo-projects.net/uostuff/index.php?topliste

    <?php
    #   Basisscript *unbekannt*
    #   Angepasst by Lord|Schirmer
    #   Support www.ilch.de
    #	Topliste ILCH
    defined ('main') or die ( 'no direct access' );
    $title = $allgAr['title'].'';
    $hmenu = 'Topliste &raquo; Abstimmen';
    
    extract($_GET);
    extract($_POST);
    
    // Header
    $design = new design ( $title , $hmenu, 1);
    $design->header();
    $tpl = new tpl ( 'topliste/in.htm' );
    $ergb = db_query("SELECT * FROM prefix_topliste_config");
    $rowb = db_fetch_assoc($ergb);
    // Versuche Starten
    $client_ip = $_SERVER['REMOTE_ADDR'];
    $datum = date("Y-m-d");
    $votechecklese2 = db_query("SELECT * FROM ic1_topliste_vote");
    $votecheckbb2 = db_fetch_assoc($votechecklese2);
    
    $votechecklese4 = db_query("SELECT * FROM ic1_topliste_vote WHERE ip='$client_ip' AND date='$datum'");
    $votecheckbb4 = db_fetch_assoc($votechecklese4);
    
    # Set ip_blocked var
    $ip_blocked = 0;
    
    # Run the query to select all IPs
    $query21 = mysql_query("SELECT * FROM ic1_topliste_vote");
    
    # Loop through the query rows
    while ($row = mysql_fetch_array($query21)) {
    
    	# Check if the client IP is in the DB
    	if (($client_ip == $row['ip']) AND ($datum == $row['date'])) {
    
    		# If so, count helper
    		$ip_blocked++;
    
    	}
    
    }
    
    # Was the helper enlarged (meaning IP found)?
    if ($ip_blocked >= 1) {
    
    # IP is blocked
    
    } else {
    # IP isn't blocked
    $sql="INSERT INTO ic1_topliste_vote (ip,date) VALUES ('$client_ip','$datum')";
    mysql_query($sql) OR die(mysql_error());
    }
    
    
    // Cookie pruefen
    if (($votecheckbb4['abgestimmt'] == 1) AND ($votecheckbb4['date'] == $datum)) {
    echo 'Sie können Morgen erst wieder für eine Seite voten!<meta http-equiv="refresh" content="3; URL=index.php?topliste"><br /><br />Sie werden in 3 Sekunden weitergeleitet...<br />Sollten Sie nicht weitergeleitet werden, dann klicken Sie bitte <a href="index.php?topliste">hier</a>.';
    }elseif ($votecheckbb4['counter'] >= 3) {
    echo 'Sie können Morgen erst wieder für eine Seite voten!<meta http-equiv="refresh" content="3; URL=index.php?topliste"><br /><br />Sie werden in 3 Sekunden weitergeleitet...<br />Sollten Sie nicht weitergeleitet werden, dann klicken Sie bitte <a href="index.php?topliste">hier</a>.';
    }else{
    switch($menu->getA(2))
    {
    default:
    // Pruefung ob Seite vorhanden
    if (db_count_query('SELECT COUNT(*) FROM `prefix_topliste` WHERE `id` = '.$menu->get(2)) == 0)
    {wd('index.php?topliste','Diese Seite ist in der Topliste nicht vorhanden!'); break;}
    // Abstimmung zeigen
    $row = db_fetch_object(db_query("SELECT * FROM prefix_topliste WHERE id=".$menu->get(2)));
    if ($_SESSION['authright'] < $rowb['toplist_spamrecht'])
    { $antispam = ''; }
    else
    {
    $antispam = '<style type="text/css">input.captcha{color:#'.$rowb['toplist_spamfont'].';background-color:#'.$rowb['toplist_spamback'].';border:0px;border-bottom:1px #'.$rowb['toplist_spamfont'].' dotted;text-align:center;}</style>';
    $antispam .= '<br><table style="background:#'.$rowb['toplist_spamback'].'; text-align:center;" cellspacing="2" cellpadding="2"><tr><td colspan="2" style="color: #'.$rowb['toplist_spamfont'].'"><small>BITTE AUSRECHNEN!</small></td></tr><tr><td><img src="index.php?topliste-captcha" alt="Antispam" /></td><td><input class="captcha" type="text" name="sicherheitscode" size="2" maxlength="2"/></td></tr></table>'; }
    
    
    $tpl->set('name', $row->name);
    $tpl->set('desc', $row->beschreibung);
    $tpl->set('rang', $row->rang);
    $tpl->set('in', $row->klickin);
    $tpl->set('out', $row->klickout);
    $tpl->set('designin', $row->design);
    $tpl->set('inhaltin', $row->inhalt);
    $tpl->set('technikin', $row->technik);
    $tpl->set('bild', '<img src="'.$row->bild.'" border="0" width="468" height="60" alt="'.$row->name.'">');
    $tpl->set('id', $menu->get(2));
    $tpl->set('ANTISPAM', $antispam);
    $tpl->set('uname', $_SESSION['authname']);
    $tpl->set('ANTISPAMK', (loggedin()?'':get_antispam ('topliste', 0)));
    $tpl->out(0);
    break;
    case 'V':
    // Pruefung ob Seite vorhanden
    if (db_count_query('SELECT COUNT(*) FROM `prefix_topliste` WHERE `id` = '.$menu->getE(2)) == 0)
    {wd('index.php?topliste','Diese Seite ist in der Topliste nicht vorhanden!'); break;}
    // Vote pruefen
    if ($_SESSION['authright'] < $rowb['toplist_spamrecht'])
    {
    	// Vote speichern ohne Captcha bei Recht
    	db_query("UPDATE prefix_topliste SET klickin = klickin +1, inhalt = inhalt +".$ininhalt.", design = design +".$indesign.", technik = technik +".$intechnik." WHERE id = ".$menu->getE(2));
    	$client_ip = $_SERVER['REMOTE_ADDR'];
    
    	echo 'Danke das Sie gevotet haben!<meta http-equiv="refresh" content="3; URL=index.php?topliste"><br /><br />Sie werden in 3 Sekunden weitergeleitet...<br />Sollten Sie nicht weitergeleitet werden, dann klicken Sie bitte <a href="index.php?topliste">hier</a>.';
    
    }
    else
    {
    	// Captcha pruefen
    	function encrypt($string, $key) {
    	$result = '';
    	for($i=0; $i<strlen($string); $i++) {
    	$char = substr($string, $i, 1);
    	$keychar = substr($key, ($i % strlen($key))-1, 1);
    	$char = chr(ord($char)+ord($keychar));
    	$result.=$char;
    	}
    	return base64_encode($result);
    	}
    	$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], "29jfkd921");
    	$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
    	if(isset($_SESSION['rechen_captcha_spam']) AND $sicherheits_eingabe == $_SESSION['rechen_captcha_spam']){
    	unset($_SESSION['rechen_captcha_spam']);
             $indesign = escape($_POST['indesign'], 'string');
             $intechnik = escape($_POST['intechnik'], 'string');
             $ininhalt = escape($_POST['ininhalt'], 'string');
             $client_ip = $_SERVER['REMOTE_ADDR'];
    	$datum = date("Y-m-d");
    	// Vote speichern
    	db_query("UPDATE prefix_topliste SET klickin = klickin +1, inhalt = inhalt +".$ininhalt.", design = design +".$indesign.", technik = technik +".$intechnik." WHERE id = ".$menu->getE(2));
        db_query("UPDATE prefix_topliste_vote SET abgestimmt = '1', counter = '0' WHERE ip='".$client_ip."' AND date='".$datum."'");
    	echo 'Danke das Sie gevotet haben!<meta http-equiv="refresh" content="3; URL=index.php?topliste"><br /><br />Sie werden in 3 Sekunden weitergeleitet...<br />Sollten Sie nicht weitergeleitet werden, dann klicken Sie bitte <a href="index.php?topliste">hier</a>.';
        	}else{
             // Captcha Fehler
             if ($votecheckbb4['counter'] == 0) {
             $client_ip = $_SERVER['REMOTE_ADDR'];
    	$datum = date("Y-m-d");
             db_query("UPDATE prefix_topliste_vote SET counter = counter +1 WHERE ip='$client_ip' AND date='$datum'");
     	$meldung = "Sie haben noch 2 Versuche";
             wd('index.php?topliste-in-'.$menu->getE(2),'Das Ergebnis der Rechnung war falsch oder leer!<br>'.$meldung.'!');
             }
             if ($votecheckbb4['counter'] == 1) {
             $client_ip = $_SERVER['REMOTE_ADDR'];
    	$datum = date("Y-m-d");
             db_query("UPDATE prefix_topliste_vote SET counter = counter +1 WHERE ip='$client_ip' AND date='$datum'");
     	$meldung = "Sie haben noch 1 Versuche";
             wd('index.php?topliste-in-'.$menu->getE(2),'Das Ergebnis der Rechnung war falsch oder leer!<br>'.$meldung.'!');
             }
             if ($votecheckbb4['counter'] >= 2) {
             $client_ip = $_SERVER['REMOTE_ADDR'];
    	$datum = date("Y-m-d");
             $sql="UPDATE ic1_topliste_vote SET abgestimmt='1', counter='0' WHERE ip='$client_ip' AND date='$datum'";
             mysql_query($sql) OR die(mysql_error());
     	$meldung = "Sie können Morgen erst wieder für eine Seite voten!";
             wd('index.php?topliste','Das Ergebnis der Rechnung war falsch oder leer!<br>'.$meldung.'!');
             }
    
        }
    }
    break;
    }}
    $design->footer();
    ?>



    Zuletzt modifiziert von Siggi am 25.08.2013 - 16:45:14
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Anoxoz Mitglied
    Registriert seit
    05.07.2013
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    Erstmal danke für die schnelle Antwort, weiß nicht ob ich das so umsetzen kann, denke du benutzt die topliste 1.1 mit Captcha.
    Weiß auch nicht genau ob es daran liegen könnte das unsere Seite auf einem Windows Root liegt, da es ja bei manch anderen funktioniert.
    Hab auch schon in den Root Einstellungen geschaut, aber wüsste nicht was da noch eingestellt werden müsste.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Ja könnte sein das dies 1.1 war ist schon sehr alt aber man könnte trotzdem die Funktion herauskopieren wenn man möchte

    Ob es nun am Windows Root server liegt kann ich nicht sagen aber würde denken nicht da meine Seite bis vor kurzen auch auf einen Windows vServer lief.
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Anoxoz Mitglied
    Registriert seit
    05.07.2013
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    meine in.php sieht im Moment so aus, welche Funktion würdest du reinkopieren?

    <?php
    #   Basisscript *unbekannt*
    #   Angepasst by Lord|Schirmer
    #   Support www.ilch.de
    #	Topliste ILCH
    defined ('main') or die ( 'no direct access' );
    $title = $allgAr['title'].' :: Topliste :: Abstimmen';
    $hmenu = 'Topliste &raquo; Abstimmung';
    // Cookie auf 24h prüfen & setzen
    $cookie = str_replace('.', '_', 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).$menu->get(2));
    if($_COOKIE[$cookie] == 'abgestimmt'.$menu->get(2).'') 
    { 
    $vote = 'abgestimmt'; 
    }
    else
    {
    $var = time() + (60*60*24);
    setcookie("http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).$menu->get(2), "abgestimmt".$menu->get(2)."", $var);
    $vote = 'neu';
    }
    // Header
    $design = new design ( $title , $hmenu, 1);
    $design->header();
    $ergb = db_query("SELECT * FROM prefix_topliste_config");
    $rowb = db_fetch_assoc($ergb);
    
    // Cookie pruefen 
    if($vote == 'abgestimmt') 
    {
    $row = db_fetch_object(db_query("SELECT * FROM prefix_topliste WHERE id=".$menu->get(2)));
    wd('index.php?topliste','<br><img src="'.$row->bild.'" border="0" style="max-width:'.$rowb['toplist_banner'].'px;" alt="'.$row->name.'"><br><br>Sie können erst wieder nach 24 Stunden für <b>'.$row->name.'</b> voten!');
    }
    // Pruefung ob Seite vorhanden
    elseif (@db_count_query('SELECT COUNT(*) FROM `prefix_topliste` WHERE `id` = '.$menu->get(2)) == 0)
    {
    wd('index.php?topliste','Diese Seite ist in der Topliste nicht vorhanden!');
    }
    else
    {
    // Vote speichern
    db_query("UPDATE prefix_topliste SET klickin = klickin +1 WHERE id = ".$menu->get(2));
    print_r($_COOKIE['http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])]);
    $row = db_fetch_object(db_query("SELECT * FROM prefix_topliste WHERE id=".$menu->get(2)));
    wd('index.php?topliste','<br><img src="'.$row->bild.'" border="0" style="max-width:'.$rowb['toplist_banner'].'px;" alt="'.$row->name.'"><br><br>Danke das Sie für <b>'.$row->name.'</b> gevotet haben!');
    }
    $design->footer();
    ?>
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Anoxoz Mitglied
    Registriert seit
    05.07.2013
    Beiträge
    9
    Beitragswertungen
    0 Beitragspunkte
    hab mal eine andere bei uns rein, kann geschlossen werden, denke das es eher mit den einstellung von unserem root zu tun hat was die cookies betrifft. habe es auf einer anderen homepage versucht, auf einem anderen root, funktionierte problemlos.

    grüße


    Zuletzt modifiziert von Anoxoz am 06.09.2013 - 21:12:47
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Erledigt
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten