Animate Digits IP Tracking Counter 0.4.0 zählt nicht

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Animate Digits IP Tracking Counter 0.4.0 zählt nicht

Beitrag von Helmut »

Hallo,

ich habe bei mir den Animate Digits IP Tracking Counter 0.4.0 eingebaut, aber ich habe ihn bis jetzt nicht zum laufen gebracht. Die Konfiguration hat wunderbar geklappt, die Anzeige des Counters stimmt auch, im ACP lässt sich alles einstellen, nur er zählt nicht egal was ich im ACP einstelle. Weis jemand von euch, woran das liegen kann?

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo,

nochmal nach oben schieb ...... :wink:

Ich bin bis jetzt noch nicht weiter gekommen bei der Frage, warum der Zähler nicht läuft. Hat denn keiner eine Idee?

Gruß Helmut :(
Ich bin nicht ganz dicht.... na und.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo,

nochmal nach oben schieb ...... :oops:

Leider habe ich immer noch nicht die Ursache gefunden warum der Zähler nicht geht. :(

Vielleicht kann sich mal jemand den Zähler anschauen wo der Fehler liegen könnte?


[EDIT]
Hier ist die functions_counter.php welche die eigentliche Zählung vornehmen soll:

Code: Alles auswählen

class display_counter {

	var $config = array();

	function display_counter()
	{
		global $config, $phpbb_root_path;

		$this->config['counter_digits_path']		= $phpbb_root_path . $config['counter_digits_path'];
		$this->config['counter_digits_ani_path']	= $phpbb_root_path . $config['counter_digits_ani_path'];
		$this->config['counter_digits_number']		= $config['counter_digits_number'];
		$this->config['counter_digits_width']		= $config['counter_digits_width'];
		$this->config['counter_digits_height']		= $config['counter_digits_height'];
		$this->config['counter_block_ip']			= $config['counter_block_ip'];
		$this->config['counter_block_time']			= $config['counter_block_time'];
		$this->config['counter_ip_logfile']			= $phpbb_root_path . $config['counter_ip_logfile'];
	}

    function is_new_visitor()
	{
		$is_new = true;
		$rows = @file($this->config['counter_ip_logfile']);
		$this_time = time();
		$ip = getenv('REMOTE_ADDR');
		$reload_dat = fopen($this->config['counter_ip_logfile'], 'wb');

		flock($reload_dat, 2);

		for ($i = 0; $i < sizeof($rows); $i++)
		{
			list($time_stamp, $ip_addr) = split("\|", $rows[$i]);

			if ($this_time < ($time_stamp + $this->config['counter_block_time']))
			{
				if (chop($ip_addr) == $ip)
				{
					$is_new = false;
				}
				else
				{
					fwrite($reload_dat, "$time_stamp|$ip_addr");
				}
			}
		}

		fwrite($reload_dat, "$this_time|$ip\n");
		flock($reload_dat, 3);
		fclose($reload_dat);

		return $is_new;
	}

	function read_counter()
	{
		global $config, $phpbb_root_path;

		$update = false;

		$this->counter = $config['counter_hits'];

		if ($this->config['counter_block_ip'])
		{
			if ($this->is_new_visitor())
			{
				$this->counter++;
				$update = true;
			}
		}
		else
		{
			$this->counter++;
			$update = true;
		}

		if ($update)
		{
			set_config('counter_hits', $this->counter, true);
		}

		return $this->counter;
	}

	function create_output()
	{
		$this->read_counter();
		$this->counter = sprintf("%0" . "" . $this->config['counter_digits_number'] . "" . "d", $this->counter);

		$ani_digits = sprintf("%0" . "" . $this->config['counter_digits_number'] . "" . "d", $this->counter + 1);
		$html_output = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr align=\"center\">\n";

		for ($i=0; $i < strlen($this->counter); $i++)
		{
			if (substr("$this->counter", $i, 1) == substr("$ani_digits", $i, 1))
			{
				$digit_pos = substr("$this->counter", $i, 1);
				$html_output .= "<td class=\"counter\"><img src=\"" . $this->config['counter_digits_path'] . "/$digit_pos.gif\"";
			}
			else
			{
				$digit_pos = substr("$ani_digits", $i, 1);
				$html_output .= "<td class=\"counter\"><img src=\"" . $this->config['counter_digits_ani_path'] . "/$digit_pos.gif\"";
			}

			$html_output .= " width=\"" . $this->config['counter_digits_width']. "\" height=\"" . $this->config['counter_digits_height'] . "\" alt=\"\" /></td>\n";
		}

		$html_output .= "</tr></table>\n";

		return $html_output;
	}
}
Es funktioniert alles, nur die eigentliche Zählung geht nicht. Das Problem steckt vermutlich bei der Funktion function is_new_visitor(), bin mir aber nicht sicher.


Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
ups
Mitglied
Beiträge: 990
Registriert: 06.12.2006 14:57
Wohnort: Basel/Freiburg Land

Beitrag von ups »

hmmm...

so wie ich das sehe hast du ein phpbb2 board und ein phpbb3 beta mod eingebaut....

das kann nicht funktionieren....
[FINAL] Impressum Dinseprinz 0.1.8 http://www.phpbb.de/community/viewtopic ... 52&start=0
[Final] Linkverzeichnis Mod Phpbb Annuaire v0.2.1 http://www.phpbb.de/community/viewtopic ... 17&start=0
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Hallo ups,

Helmut baut sich grad das 3er Board auf, von daher passt es schon :)

Hallo Helmut,

die möglichen Fehlerquellen sind da wohl ziemlich komplex.

Falls sich keine Lösung finden sollte, nimm den CHCounter.

Tausendfach bewährt und schon lange keine Beta mehr :wink:

Ab hier lesen

lg
4seven
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo 4seven,

die Fehlerquellen sind nicht so wild, so wie es aussieht, wird nur der Zählerstand nicht in der phpbb3_config aktuallisiert, die Ausgabe usw. geht ja Fehlerfrei. Der Zähler basiert auf dem Animated Counter 1.1, den du hier runterladen kannst. Hier ist die acounter.php:

Code: Alles auswählen

class acounter {

    var $config = array();

    function acounter () {

        /* URL to the digitset */
        $this->config['img'] = "http://localhost/~counters/acountphp/digits/";

        /* URL to the animated digitset */
        $this->config['animated_img'] = "http://localhost/~counters/acountphp/digits_ani/";

        /* How many digits to show */
        $this->config['pad'] = 6;

        /* digit width and height */
        $this->config['width']  = 16;
        $this->config['height'] = 22;

        /* ip blocking (true/false) */
        $this->config['block_ip'] = false;

        /* path to ip logfiles */
        $this->config['logfile'] = "./ip.txt";

        /* timeout (minutes) */
        $this->config['block_time'] = 15;
    }

    function is_new_visitor() {
        $is_new = true;
        $rows = @file($this->config['logfile']);
        $this_time = time();
        $ip = getenv("REMOTE_ADDR");
        $reload_dat = fopen($this->config['logfile'],"wb");
        flock($reload_dat, 2);
        for ($i=0; $i<sizeof($rows); $i++) {
            list($time_stamp,$ip_addr) = split("\|",$rows[$i]);
            if ($this_time < ($time_stamp+$this->config['block_time'])) {
                if (chop($ip_addr) == $ip) {
                    $is_new = false;
                } else {
                    fwrite($reload_dat,"$time_stamp|$ip_addr");
                }
            }
        }
        fwrite($reload_dat,"$this_time|$ip\n");
        flock($reload_dat, 3);
        fclose($reload_dat);
        return $is_new;
    }

    function read_counter_file($page) {
        $update = false;
        if (!file_exists("./pages/$page.txt")) {
            $count_dat = fopen("./pages/$page.txt","w+");
            $this->counter = 1;
            fwrite($count_dat,$this->counter);
            fclose($count_dat);
        } else {
            $fp = fopen("./pages/$page.txt", "r+");
            flock($fp, 2);
            $this->counter = fgets($fp, 4096);
            flock($fp, 3);
            fclose($fp);
            if ($this->config['block_ip']) {
                if ($this->is_new_visitor()) {
                    $this->counter++;
                    $update = true;
                }
            } else {
                $this->counter++;
                $update = true;
            }
            if ($update) {
                $fp = fopen("./pages/$page.txt", "r+");
                flock($fp, 2);
                rewind($fp);
                fwrite($fp, $this->counter);
                flock($fp, 3);
                fclose($fp);
            }
        }
        return $this->counter;
    }

    function create_output($page='') {
        if (empty($page)) {
            $page = "counter";
        }
        $this->read_counter_file($page);
        $this->counter = sprintf("%0"."".$this->config['pad'].""."d",$this->counter);
        $ani_digits = sprintf("%0"."".$this->config['pad'].""."d",$this->counter+1);
        $html_output = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr align=\"center\">\n";
        for ($i=0; $i<strlen($this->counter); $i++) {
            if (substr("$this->counter",$i,1) == substr("$ani_digits",$i,1)) {
                $digit_pos = substr("$this->counter",$i,1);
                $html_output .= "<td><img src=\"".$this->config['img']."$digit_pos.gif\"";
            } else {
                $digit_pos = substr("$ani_digits",$i,1);
                $html_output .= "<td><img src=\"".$this->config['animated_img']."$digit_pos.gif\"";
            }
            $html_output .= " width=\"".$this->config['width']."\" height=\"".$this->config['height']."\"></td>\n";
        }
        $html_output .= "</tr></table>\n";
        return $html_output;
    }

}
Dieser Code funktioniert, es werden die Besucher/Klicks gezählt. Der wesentliche Unterschied im Code liegt nur darin, dass hier der Zählerstand in eine Datei geschrieben wird, die Erfassung der Seitenaufrufe ist praktisch gleich.

Ich werde mir mal den CHCounter anschauen. Die meisten dieser Counter wollen eine externe Verbindung zu "ihrem" Server aufbauen, sowas gefällt mir nicht so gut, da es dann immer mal zu Problemen kommen kann, wenn der Zugriff lange dauert.

@ups
Stimmt, meine aktuelle Homepage basiert auf phpBB2, aber wie 4seven schon sagte, ich bin gerade dabei, die HP auf das neue Forum umzustellen. Daher ist die neue Seite auch noch nicht offiziell für jeden Zugänglich, obwohl die Test Homepage schon Online ist.

Gruß Helmut :wink:


P.S. 4seven, ich schicke dir mal ne PN, dann kannst dir die neue Seite mal anschauen.
Ich bin nicht ganz dicht.... na und.
Benutzeravatar
ups
Mitglied
Beiträge: 990
Registriert: 06.12.2006 14:57
Wohnort: Basel/Freiburg Land

Beitrag von ups »

Helmut hat geschrieben:@ups
Stimmt, meine aktuelle Homepage basiert auf phpBB2, aber wie 4seven schon sagte, ich bin gerade dabei, die HP auf das neue Forum umzustellen.
sorry, das wußte ich nicht...ich ging in der annahme..
nunja, irren ist menschlich :)

ups
[FINAL] Impressum Dinseprinz 0.1.8 http://www.phpbb.de/community/viewtopic ... 52&start=0
[Final] Linkverzeichnis Mod Phpbb Annuaire v0.2.1 http://www.phpbb.de/community/viewtopic ... 17&start=0
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Helmut hat geschrieben: Die meisten dieser Counter wollen eine externe Verbindung zu "ihrem" Server aufbauen, sowas gefällt mir nicht so gut, da es dann immer mal zu Problemen kommen kann, wenn der Zugriff lange dauert.
Tut der CHCounter garantiert nicht, da ich den Counter schon seit Jahren eingebaut und vollständig analysiert habe. Er läuft 100% local. Außerdem sind die (Weiter)Betreiber des Counters klasse drauf und Open-Source-Freunde, die "um der Sache Willen" das vom Original-Autor stillgelegte Project mit viel Einsatz weiterpflegen :wink:

Und, hab Dank für die Einladung :grin:

lg
4seven
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Beitrag von Helmut »

Hallo 4seven,

ich habe mir den Counter ausgesucht, weil er sehr kompakt und überschaubar ist. Ich habe jetzt noch nicht weiter gesucht warum er nicht zählt, gibt eigentlich nur zwei Punkte die dafür verantwortlich sein können. Du kannst dir ja mal den Counter testweise einbauen und schauen ob er bei dir geht.

Den CHCounter habe ich nocht nicht getestet, werde ihn aber auch mal testweise einbauen.

Gruß Helmut :wink:
Ich bin nicht ganz dicht.... na und.
Antworten

Zurück zu „[3.0.x] Mod Support“