[3.3] Eigenen Counter erstellen und einbinden.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
IMC
Mitglied
Beiträge: 538
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von IMC »

Probiere mal diese Änderung. So würde ich es machen wenn ich einen Zähler haben wollte. Man könnte noch über get_browser() weitere Crawler filtern. Das würde aber jetzt zu weit führen.
Diese Änderung in der common.php ist auch erforderlich. viewtopic.php?p=1414816#p1414816

Code: Alles auswählen

	public function add_page_header_links($event)
	{
		if(!isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) || !isset($_SERVER['HTTP_USER_AGENT']))
			return(false);
		
		if (!empty($this->config['allow_visits_counter']))
		{
			$this->user->add_lang_ext('dmzx/counter', 'common');

			$sql = 'SELECT COUNT(uvc_ip) AS visits_counter
				FROM ' . $this->visits_counter_table . '
				WHERE ' . $this->db->sql_in_set('uvc_ip', $this->user->ip);
			$result = $this->db->sql_query($sql);
			$visits_counter = (int) $this->db->sql_fetchfield('visits_counter');
			$this->db->sql_freeresult($result);

			if ($visits_counter == 0)
			{
				$sql_ary = [
					'uvc_ip'		=> $this->user->ip,
					'uvc_timestamp'	=> time()
				];
				$sql = 'INSERT INTO ' . $this->visits_counter_table . ' ' . $this->db->sql_build_array('INSERT', $sql_ary);
				$this->db->sql_query($sql);

				$this->config->increment('visits_counter', 1, true);
			}
			else
			{
				$timestamp = time() - $this->config['visits_counter_gc'];
				$sql_ary = [$timestamp];
				$sql = 'DELETE FROM ' . $this->visits_counter_table . '
					WHERE uvc_timestamp < ' . (int) $timestamp;
				$this->db->sql_query($sql);
			}

			$sql = 'SELECT COUNT(uvc_ip) AS counter
				FROM ' . $this->visits_counter_table;
			$result = $this->db->sql_query($sql, 60);
			$counter = (int) $this->db->sql_fetchfield('counter');
			$this->db->sql_freeresult($result);

			$this->template->assign_vars([
				'UNIQUE_VISITS_COUNTER'			=> $this->user->lang('UNIQUE_VISITS_COUNTER', $counter, $this->config['visits_counter']),
				'UNIQUE_VISITS_COUNTER_HOUR'	=> $this->user->lang('UNIQUE_VISITS_COUNTER_HOUR', $this->config['visits_counter_gc'] / 3600, $this->config['visits_counter']),
			]);
		}
	}
Gruß, Thorsten
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von MDuss »

HI IMC.

Jetzt scheint es zu gehen, habe nochmals die od von Grund auf mit den Modifikationen hochgeladen. Scheinbar war das irgendwas in der common.php nicht mehr ganz korrekt.

Auf jeden Fall scheint es jetzt richtig angezeigt zu werden.

Ich werde jetzt noch deinen neuen Änderungsvorschlag auch mit einbauen und dann mal testen, wie sich das ganze nun verhält.

MfG
MDuss
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von MDuss »

IMC hat geschrieben: 28.11.2021 14:50 Probiere mal diese Änderung. So würde ich es machen wenn ich einen Zähler haben wollte. Man könnte noch über get_browser() weitere Crawler filtern. Das würde aber jetzt zu weit führen.
Diese Änderung in der common.php ist auch erforderlich. viewtopic.php?p=1414816#p1414816

Code: Alles auswählen

	public function add_page_header_links($event)
	{
		if(!isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) || !isset($_SERVER['HTTP_USER_AGENT']))
			return(false);
		
		if (!empty($this->config['allow_visits_counter']))
		{
			$this->user->add_lang_ext('dmzx/counter', 'common');

			$sql = 'SELECT COUNT(uvc_ip) AS visits_counter
				FROM ' . $this->visits_counter_table . '
				WHERE ' . $this->db->sql_in_set('uvc_ip', $this->user->ip);
			$result = $this->db->sql_query($sql);
			$visits_counter = (int) $this->db->sql_fetchfield('visits_counter');
			$this->db->sql_freeresult($result);

			if ($visits_counter == 0)
			{
				$sql_ary = [
					'uvc_ip'		=> $this->user->ip,
					'uvc_timestamp'	=> time()
				];
				$sql = 'INSERT INTO ' . $this->visits_counter_table . ' ' . $this->db->sql_build_array('INSERT', $sql_ary);
				$this->db->sql_query($sql);

				$this->config->increment('visits_counter', 1, true);
			}
			else
			{
				$timestamp = time() - $this->config['visits_counter_gc'];
				$sql_ary = [$timestamp];
				$sql = 'DELETE FROM ' . $this->visits_counter_table . '
					WHERE uvc_timestamp < ' . (int) $timestamp;
				$this->db->sql_query($sql);
			}

			$sql = 'SELECT COUNT(uvc_ip) AS counter
				FROM ' . $this->visits_counter_table;
			$result = $this->db->sql_query($sql, 60);
			$counter = (int) $this->db->sql_fetchfield('counter');
			$this->db->sql_freeresult($result);

			$this->template->assign_vars([
				'UNIQUE_VISITS_COUNTER'			=> $this->user->lang('UNIQUE_VISITS_COUNTER', $counter, $this->config['visits_counter']),
				'UNIQUE_VISITS_COUNTER_HOUR'	=> $this->user->lang('UNIQUE_VISITS_COUNTER_HOUR', $this->config['visits_counter_gc'] / 3600, $this->config['visits_counter']),
			]);
		}
	}
An welcher Stelle genau in der listener.php wird dieser Code eingefügt?

MfG
MDuss
Benutzeravatar
IMC
Mitglied
Beiträge: 538
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von IMC »

Sorry, ich dachte dass wäre eindeutig.
Das ist die Funktion add_page_header_links. Einfach die originale Funktion durch meinen Vorschlag ersetzen.
Gruß, Thorsten
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von MDuss »

Danke.

Ich habe jetzt alle Änderungen gemacht, und es scheint jetzt zu funktionieren.
Werde das ganze mal im Testforum weiter testen und beobachten.

Wenn alles gut verläuft, übertrage ich die Extensions ins Hauptforum.

Endlich unabhängig von externen Webcounter Diensten, die dann einfach mal ne Woche außer Dienst sind, und der Counter somit nicht funktioniert.

MfG
MDuss
MDuss
Mitglied
Beiträge: 267
Registriert: 06.02.2008 10:21

Re: [3.3] Eigenen Counter erstellen und einbinden.

Beitrag von MDuss »

Hi.

Wollte nur kurz Rückmeldung geben, wie es läuft.

Bisher läuft alles so wie erwartet. Der Counter läuft und zählt, wie er soll.
Ich werde den dann am Wochenende ins Hauptforum übernehmen.

Nochmals vielen Dank für eure Hilfe.

MfG
MDuss
Antworten

Zurück zu „Coding & Technik“