Problem beim Einschreiben von TXT-Dateien

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem beim Einschreiben von TXT-Dateien

    Ich habe von dem Funpic-Benutzer Chrizhome einen Code für einen Counter heruntergeladen und ein bisschen verändert, sodass man Besucheranzahl und Seitenanzahl für jeden einzelnen Tag sieht. Doch leider habe ich ein Problem (siehe unterhalb des Codes).

    PHP-Code:
    <?
    /*
     +---------------------------------------------+
     |                                             |
     |  Name      : Counta x1.1.0                  |
     |  Copyright : (c) 2007                       |
     |  Publisher : chriZ                          |
     |  Webseite  : [url]http://chrizhome.ch.funpic.de[/url]  |
     |  Editor    : Mra                            |
     |  Webseite  : [url]http://americandad-world.de[/url]    |
     |                                             |
     +---------------------------------------------+
    */

    /* E I N S T E L L U N G E N */

    # Aktuelles Datum
    $cur_date = date("Y-m-d", time());

    # Pfad des Besuchercounters
    $file_counter = "counter.txt";

    # Pfad für die IP-Sperre
    $file_ip = "ip.txt";

    # IP-Zeitsperre, Standart 21600 sec = 6h
    $ipsperre = 21600;

    # IP-Adresse des Besuchers ermitteln (nicht aendern!)
    $userip = $_SERVER['REMOTE_ADDR'];

    # IP-Adressen von Bots und Spider,
    # Nur hinzufuegen wenn dieser durch das
    # Suchmuster nicht erfasst werden kan
    $serveradressen = array(
        "72.232.63.242",
        "83.135.230.55",
        "85.25.148.183",
        "85.124.129.156",
        "87.5.5.221",
        "89.204.159.46",
        "127.0.0.1",
        "195.93.60.3",
        "195.225.198.130",
        "209.160.65.31",
        "212.162.14.235",
        "212.227.83.149",
        "222.46.18.34",
    );

    # Suchmuster, nachdem die Bots und Spider ausgemustert werden
    $pattern = array(
      'bot',
      'sp[iy]der',
      'crawler',
      'lib(?:cur|www)',
      'search',
      'archive',
      'Francis',
      'Snappy',
      'W3C',
      'Win',
      'mail',
      'Java',
      'Yahoo',
      'URL',
      'http'

    );


    /* C O U N T E R */

    if (!preg_match('/' . implode('|', $pattern) . '/i', $_SERVER['HTTP_USER_AGENT']) || !in_array($_SERVER['REMOTE_ADDR'], $serveradressen)) {

        $gefunden = FALSE;
        $ip_liste = file($file_ip);
        
        if (count($ip_liste) > 0) {

            foreach($ip_liste as $zeile) {
                $splitten = explode("|", $zeile);

                if (($splitten[0] + $ipsperre) > time()) {
                    $neue_ip_liste[] = trim($zeile). "\n";
                }
            }

            if (count($neue_ip_liste) > 0) {

                foreach ($neue_ip_liste as $zeile) {
                    $splitten = explode("|", $zeile);

                    if (trim($splitten[1]) == $userip) {
                        $gefunden = TRUE;
                    }
                }
            }
        }

        $handle_ip = fopen($file_ip, "w");
        if (count($ip_liste) > 0 && count($neue_ip_liste) > 0) {

            foreach ($neue_ip_liste as $zeile) {
                fwrite($handle_ip, trim($zeile). "\n");
            }
        }
        if (!$gefunden) {
            fwrite($handle_ip, time(). "|" .$userip. "\n");
        }
        fclose($handle_ip);

        //EDIT by MRA Start
        $counter_liste = file($file_counter);

        $splitten = explode("|", trim($counter_liste[0]));
        if ($splitten[0] == $cur_date) {
            if (!$gefunden) {
                $visitors = $splitten[1]+1;
            } else {
                $visitors = $splitten[1];
            }
            $hits = $splitten[2]+1;
            $neue_counter_liste[] = $cur_date."|".$visitors."|".$hits. "\n";
        } else {
            $neue_counter_liste[] = $cur_date."|1|1\n";
        }

        if (count($counter_liste) > 0) {

            foreach($counter_liste as $zeile) {
                $splitten = explode("|", trim($zeile));
                if($splitten[0] != $cur_date) {
                    $neue_counter_liste[] = trim($zeile)."\n";
                }
            }
            
            foreach($neue_counter_liste as $val) {
                echo "<p>".$val."</p>";
            }
        }

        $handle_count = fopen($file_counter, "w");

        rewind($handle_count);

        $write = trim(implode("", $neue_counter_liste))."\n";

        fwrite($handle_count, $write);

        fclose($handle_count);
        //EDIT by MRA Ende

    }
    ?>
    Diese Zeile funktioniert nicht richtig:

    PHP-Code:
    fwrite($handle_count$write); 
    Beim aktuellen Tag werden die Besucher bzw. die Seitenaufrufe um 2 erhöht, sollen aber nur um 1, darum ja auch:

    PHP-Code:
    $hits $splitten[2]+1
    Ich weiß wirklich nicht weiter, woran das liegen könnte. Es wäre nett, wenn einer von euch mir bei meinem Problem helfen könnte.

    EDIT: Wenn ich allein die counter.php Datei aufrufe, dann geht alles, aber wenn ich sie include, dann entsteht der Fehler.
    Zuletzt geändert von Mra; 16.02.2007, 16:56.
    [color=red]Meine Seite:[/color]
    American-Dad.de

  • #2
    Hallo Mra,

    bitte lies doch mal unsere Regeln durch und passe dein Posting bitte entsprechend an.


    Ich vermute, dass du vielleicht 2x includest.
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      verwände doch mal include_once
      Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
      - ...und solche Behauptungen in "falsches Resourcenmanagement"

      Kommentar

      Lädt...
      X