Counter

  • Servus ich hab ein Counter und möchte gerne 2 Ip sperren also das sie nicht mehr mitgezählt werden!!!
    hier der fertige Counter:
    ___________________________________________

    [php:1:a34974dbae]
    <?php
    $datei = "counter.txt";

    $file = fopen($datei, "r");
    $stand = fread($file, filesize($datei));
    $stand = $stand+1;
    fclose($file);


    function ipcheck($client_ip)
    {
    switch(func_num_args())
    {
    case 4: $operating_dir=func_get_arg(3);
    case 3: $max_timediff=func_get_arg(2);
    case 2: $log_ip=func_get_arg(1);break;
    default: $operating_dir=""; $max_timediff="3600"; $log_ip=true;
    }
    switch(func_num_args())
    {
    case 2: $max_timediff="3600";
    case 3: $operating_dir="";break;
    }

    $file=$operating_dir . "ip.txt";
    $seenbefore=false;

    $lines=file($file);
    for($i=0;$i<count($lines);$i++)
    {
    $ip_chunks=explode("-",$lines[$i]);
    $timediff=time()-$ip_chunks[1];
    if($timediff>$max_timediff) $lines[$i]="";
    elseif($ip_chunks[0]==$client_ip) $seenbefore=true;
    }

    $handle = fopen($file,"w+");
    if ($handle)
    {
    for($i=0;$i<count($lines);$i++) fputs($handle, $lines[$i]);
    if(!$seenbefore && $log_ip) fputs($handle, $client_ip . "-" . time() . "\n");
    fclose($handle);
    }
    return($seenbefore);
    }

    if(!ipcheck($REMOTE_ADDR))
    {
    $file = fopen($datei, "w");
    fputs($file, $stand);
    fclose($file);
    }
    ?>
    Sie sind der <?php echo $stand; ?>. Besucher[/php:1:a34974dbae]
    ___________________________________


    Hoffe ihr könnts ma helfen!!
    mfg marko

  • Hi erstmal, wiso machst du das ganze eigentlich nicht in einer Datenbank??

    Und hier die Antwort.

  • Code
    $gesperrte_ips=array("192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", "192.168.0.5", "192.168.0.6");


    Hier schreib ich dann die gesperrten ips rein ?
    wow super danke hast mir sehr geholfen !!=)

    datenbank bringt sich ja erst dann wenn ich viel mehr benützer hab und ich denk ma das tuts auch !


    lg; marko

  • Da geht was nicht er schreibt mir:

    Parse error: parse error, unexpected '}' in /home/www/ww8200/html/index.php on line 44


    an was kann das liegen??


    Lg; marko

  • HOPLA da hat doch glatt ein semikolon gefehlt (-;

  • Hab das jetzt nochmal ausprobiert und hab mir die ips angeschaut aber es geht noch immer nicht; in der Ip.txt datei steht noch immer die Ip drinnen??

    mfg marko

  • Mit diesem Script wirst du auf dauer Probleme bekommen,
    denn du verlaesst dich darauf, dass REGISTER_GLOBALS aktiviert ist,
    was aber bei allen neueren PHP-Version als Standard deaktiviert ist,
    da es enorme Sicherheitsprobleme birgt.

    Code
    if(!ipcheck($REMOTE_ADDR))
    {
    $file = fopen($datei, "w");
    fputs($file, $stand);
    fclose($file);
    }

    Benutz anstelle von $REMOTE_ADDR die Variable$_SERVER['REMOTE_ADDR']

  • Danke;
    ich schau mir das dann zu hause an und hoffe das, dass dann entlich geht

    falls nicht; weiss irgendwer eine Seite wo es schon einen fertigen counter zum downloaden gibts(mit solchen funktionen eben)?

    MFG MARKO

  • Das ding hat mehr probs gemacht alsi ch erst gedacht habe!! habe fats 30 min gebruahct (-;

  • aber wo schreib ich jetzt den alten wert hin

    9452. Besucher.

    is ja voll org wenn ich jetzzt wieder bei 0 anfang !

    mfg marko

  • [php:1:73e7e36000]<?php
    <?PHP

    $datei="ip-s.txt";
    $gesperrte_ips=array("192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", "192.168.0.5", "192.168.0.6");
    $gesperrte_Zeit=3600; // in sekunden
    $startwert=9452;

    $ende=0;
    $handle = fopen ($datei, "r");

    while (!feof($handle))
    {
    $buffer = fgets($handle, 4096);
    if (trim($buffer)!="")
    {
    $file_data.=$buffer;
    $tmp=split(":", $buffer);
    $Werte[]=$tmp;
    }
    }
    fclose($handle);

    $ip=$_SERVER['REMOTE_ADDR'];

    foreach($gesperrte_ips AS $gesperrt)
    {
    if ($gesperrt==$ip) { $ende=1; }
    }

    foreach($Werte AS $Wert)
    {
    if (trim($Wert[1])==$ip && trim($Wert[0])>=time()) { $ende=1; }
    }

    if ($ende==0)
    {
    $tmp=time()+$gesperrte_Zeit;
    $data=$tmp.":".$ip."\n";
    $handle = fopen ($datei, "w+");
    foreach($Werte AS $Wert)
    {
    fwrite($handle, $Wert[0].":".$Wert[1]."\n" );
    }

    fwrite($handle, $data);
    fclose($handle);

    $Besucher=count($Werte)+1+$startwert;
    } else {
    $Besucher=count($Werte)+$startwert;
    }


    echo $Besucher;
    ?>
    [/php:1:73e7e36000]

    und versuche es doch einfach mal so (-;
    Und mal ne Frage: kannst du PHP ??? oder hast du dir mein script schon mal angechaut ?? das ist doch voll simpel!!!

  • DAnke; ich lerne gerade php und naja ist noch alles in der anfangs phase!"

    Lg; marko

  • der caunter geht auch nicht ;)
    zeigt auch keine fehler an sondern macht nur ne weisse Seite auf??

    mfg marko