gamerff
Goto Top

Problem mit PHP Besucherzähler

Hallo Leute, ich habe ein Problem mit meinem PHP besucherzähler

$gesamt = fopen("gesamt.txt","r+");
$gesamt = fgets($gesamt, 10);
rewind($gesamt);
$gesamt=$zahl+$gesamt;
fwrite($gesamt, $testen);
fclose($gesamt);

und zwar möchte ich immer den Zähler ($zahl) der die Besucher zählt zu den Gesamt Besuchern (gesamt) dazurechnen und in eine txt datei speichern.
Alles funktioniert super bis auf den Punkt wen ich $zahl auf 0 setze setzt sich automatisch der Gesamt Zähler auch auf 0 obwohl es den wert in einer txt Datei gespeichert hat.

Content-Key: 246068

Url: https://administrator.de/contentid/246068

Printed on: April 16, 2024 at 16:04 o'clock

Member: colinardo
colinardo Aug 10, 2014, updated at Aug 11, 2014 at 06:29:39 (UTC)
Goto Top
Moin,
dein Fehler ist, das du deinen File-Pointer ($gesamt) in der zweiten Zeile überschreibst ! Dann kann natürlich Zeile 3, 5 und 6 nicht mehr Funktionieren da die Variable $gesamt keinen File-Pointer mehr enthält sondern den Inhalt der Texdatei ! Und wo ist bitte $testen deklariert ?
So kann das auf keinen Fall laufen.
Nutze also separate Variablen für Pointer und Textinhalt.

Grüße Uwe
Mitglied: 110135
110135 Aug 10, 2014 at 11:22:36 (UTC)
Goto Top
Hallo,

du machst einige Fehler:
1. Du verwendest die Variable $gesamt zu häufig - bzw. für unterschiedliche Typen!
2. Du möchtest $testen in die Datei "gesamt.txt" schreiben - das geht nicht, weil $gesagt kein File-Stream bzw. Object mehr ist, sondern nun die Zahl deiner Besucher innehält -> Ich verweise hier auf Problem 1!
3. Was soll $zahl machen? Die ist aktuell nicht initialisiert bzw. deklariert - ergo hat sie den Wert 0!
4. Wenn du einfach den Counter um eine Stelle erhöhen möchtest geht auch $gesamt++;


Schau dir doch das hier einmal an:
http://www.selfphp.de/praxisbuch/praxisbuch.php?group=39


Ansonsten:
<?php
$besucher = 0;

$datei = fopen("gesamt.txt","r+");  
$besucher = fgets($datei, 10);
rewind($datei);
$besucher++;
fwrite($datei, $besucher);
fclose($datei);
?>


Das sollte es gewesen sein - ungetestet!

LG,
Florian
Member: gamerff
gamerff Aug 11, 2014 at 06:05:53 (UTC)
Goto Top
Ja das ist ja der Besucherzähler den ich verwende (Link). Ich möchte noch die Funktion "Gestern" und "Gesamt" hinzufügen.
Mitglied: 110135
110135 Aug 11, 2014 at 06:09:50 (UTC)
Goto Top
Hallo,

das wirst du so einfach nicht hinbekommen!
Schau dir doch mal das hier an:
http://www.html.de/threads/php-besucherzaehler-mit-cookie-sperre-und-oh ...

LG,
Florian
Member: gamerff
gamerff Aug 11, 2014 at 07:14:03 (UTC)
Goto Top
Danke für den Link, weist du ob ich den Besucherzähler so abändern kann das ich den auf meiner HTML Webseite ausgeben kann ?
Member: gamerff
gamerff Aug 11, 2014 at 08:57:22 (UTC)
Goto Top
Der Counter den du mir grade vorgeschlagen hast (Link) ist ziemlich umstendlich.
Ich habe ja meinen Counter der Seinen Wert in einer TXT Datei (counter.txt) speichert. Kann ich da nicht einfach sagen das wen es 0:00 Uhr der Aktuelle Wert aus der counter.txt ausgelesen wird und in die gestern.txt reingeschrieben wird ?
Member: colinardo
colinardo Aug 11, 2014 updated at 09:36:35 (UTC)
Goto Top
Zitat von @gamerff:

Der Counter den du mir grade vorgeschlagen hast (Link) ist ziemlich umstendlich.
Aber dafür korrekte Ergebnisse, was bei deiner Variante vermutlich nicht der Fall ist, hier zählt dann quasi jeder Seitenaufruf egal wie oft einzelner User die Seite aufruft, was das Ergebnis verfälscht. Also halte dich an die gängigen Prozeduren für Besucherzähler. Du musst hier das Rad nicht neu erfinden. Die vorhandenen Scripte sind erprobt und bringen vor allem "richtige" Ergebnisse !

Grüße Uwe
Member: colinardo
colinardo Aug 11, 2014 updated at 11:03:54 (UTC)
Goto Top
Ein einfaches Script das den Counter für das jeweilige Datum zusammen in einer Datei speichert kannst du z.B. so realisieren:
Die Logdatei sieht dann so aus:
09.08.2014;200
10.08.2014;334
11.08.2014;22
hinter dem Datum wird dann der Counter abgelegt und bei jedem Aufruf entsprechend dem aktuellen Datum aktualisiert.
<?php
session_set_cookie_params(3600);
session_start();
$logpath = "/test_counter.txt";  

if (!$_SESSION['counter_ip']){  
	$strLog = file_get_contents($logpath);
	$today = date('d.m.Y');  
	if (preg_match("/^$today/m",$strLog)){  
		$result = preg_match("/^$today;(\d+)/m",$strLog,$matches);  
		$counter = $matches[1];
		$counter++;
		$strNewLog = preg_replace("/(^$today;)(\d+)/m",'${1}'.$counter,$strLog);  
		file_put_contents($logpath,$strNewLog);
	}else{
		$f = fopen($logpath,"a");  
		fwrite($f,$today.';1');  
		fclose($f);
	}
	$_SESSION['counter_ip'] = true;  
}
?>
Zu beachten ist, dass im Script das Cookie für eine Stunde gesetzt wird (3600s), also in diesem Zeitraum für diesen User nur einmal gezählt wird. User die Cookies deaktiviert haben sind im Script jetzt nicht berücksichtigt.

Ich persönlich würde aber zu einer Datenbank raten !

Grüße Uwe
Member: gamerff
gamerff Aug 11, 2014 at 11:01:40 (UTC)
Goto Top
In meinem Beushcerzähler den ich habe, wird die IP Adresse ausgelesen und in eine ip.txt getragen und da fü 24h gespeert.