Selbstgebastelter Counter Help :(

Killer3d

Neuling
Thread Starter
Mitglied seit
05.05.2006
Beiträge
402
Hallo,

Ich habe mir mal gedanken zu einen Counter gemacht da ich so auf http://gidf.de nichts gefunden habe habe ich mal selbst was gemacht:

PHP:
<?
//_____________________Hier Abändern____________________________________
//Counterabstände einstellen in Sekunden
$sekunden = "43200"; // Standart = 43200 (12 Stunden)
// Die counter.txt MUSS die Rechte Chmod 777 Besitzen
//______________________Ab hier nichts mehr abändern____________________
// ----Bitte nicht entfernen---- Copyright by Killer3d.de



if ($_COOKIE["count"]) {

$fp = fopen("counter.txt","r");
$zeile = fgets($fp, 100);
fclose($fp);
echo "Sie sind Besucher Nr. $zeile";

}
else {
setcookie("count","counter", Time()+$sekunden);

   $fp = fopen("counter.txt","r");
   $zeile = fgets($fp, 100);
   fclose($fp);

$besucher = $zeile;

$besucher = $besucher + 1;

echo "Sie sind Besucher Nr. $besucher";


   $fp = fopen("counter.txt","w");
   flock($fp,2);
   fputs($fp,$besucher);
   flock($fp,3);
   fclose($fp);
}

?>

nur leider ist dabei das Problem wen man seine Cookies Sperrt das man immer wieder aktualisieren kann und der zählt einen dazu -.-

Weiss einer was dazu oder hat einer ne Reloadsperre für mich vllt mit ip ?

MfG Killer3d
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Wie wärs damit ?
<?php

$DateinameCount = "count.txt";
$DateinameIP = "ip.txt";
$Zeitsperre = 86400; // Sekunden

#######################################

$Gefunden = FALSE;
$IPListe = file($DateinameIP);

if(count($IPListe) > 0)
{
foreach($IPListe as $Zeile)
{
$GesplitteteZeile = explode("|", $Zeile);

if(($GesplitteteZeile[0]+$Zeitsperre) > time())
{
$NeueIPListe[] = trim($Zeile)."\n";
}
}

if(count($NeueIPListe) > 0)
{
foreach($NeueIPListe as $Zeile)
{
$GesplitteteZeile = explode("|", $Zeile);

if(trim($GesplitteteZeile[1]) == $_SERVER['REMOTE_ADDR'])
{
$Gefunden = TRUE;
}
}
}
}

$FilePointerIP = fopen($DateinameIP, "w");

if(count($IPListe) > 0 && count($NeueIPListe) > 0)
{
foreach($NeueIPListe as $Zeile)
{
fwrite($FilePointerIP, trim($Zeile)."\n");
}
}

if(!$Gefunden)
{
fwrite($FilePointerIP, time()."|".$_SERVER['REMOTE_ADDR']."\n");
}

fclose($FilePointerIP);

$FilePointerCount = fopen($DateinameCount, "r+");
$Counter = fread($FilePointerCount, filesize($DateinameCount));

if(!$Gefunden)
{
$Counter++;
rewind($FilePointerCount);
fwrite($FilePointerCount, $Counter);
}

fclose($FilePointerCount);

echo$Counter;

?>

Ps hab nicht viel ahnung von PHP ;) ab so etwa solls aussehen
 
ja den habe ich auch schon gefunden: da kommt bei mir der fehler:

PHP:
Warning: fread() [function.fread]: Length parameter must be greater than 0. in /usr/export/www/vhosts/funnetwork/hosting/killer3d/counter.php on line 56

http://killer3d.ki.funpic.de/counter.php

ich habe auch die counter.txt angelegt und die ip.txt.....
 
Schreib ma in beiden txt `s was rein also Counter 1 und in ip einfach eine ip adden
 
wenn du mysql hast mach den counter damit.. weil wenn du viele besucher auf deiner seite hast.. dann wird das sehr langsam mit wachsender ip.txt
 
der counter geht jetzt aber ich brauche ja den counter für eine homepage:

http://www.killer3d.de/realschule/html/ (sieht scheisse aus soll aber so sein)

da ist links unten der counter und immer wen man aktualisiert wird ein besucher dazugezählt

die Counter.php ist hier http://www.killer3d.de/realschule/html/counter.php
und die txt hier http://www.killer3d.de/realschule/html/counter.txt
und die iptxt hier http://www.killer3d.de/realschule/html/counterip.txt

in der index .php steht das drinne

PHP:
<?
include("index2.html");
?>

und ind er index2.html das also halt die tabelle und und und und da wo der counter seht das:

Code:
<td  bgcolor="#4E6F81"   height="22"  background="images/a2.gif" > <font color="#FFFFFF"><? include("counter.php"); ?></front> </td>

eigentlich müsste das doch gehen :) tuht es aber nicht -.-

@Nascar jo kann ich wen das funktioniert auch machen aber so ne realschulpage hat nicht 50 Visits am tag oder so :d
 
Benenne die index2 in php um und adde den counter auch dort
und in der iptext steht in nur die dynamsiche ip er speichert nicht hast du den richtigen chmod auf die datei gesetzt ?
 
ich greif die frage nochmal auf...

hast du MySQL zur verfügung ?! wenn ja, dann machs damit... is - find ich - einfacher...

meine Lösung hier haste sogar mit täglicher Statistik...

Zum Eintragen in die DB:
PHP:
$ip = $_SERVER['REMOTE_ADDR'];

// COUNTER Eintragen
$time = time();
$date = date("d.m.Y", $time);
$deltime = $time-(3600*24);

//IP-Adressen nach 24-h aus der IP-Liste löschen
$loeschen = "DELETE FROM ". PREFIX ."_counter_iplist WHERE del<".$deltime;
$loesch = mysql_query($loeschen);

	$erg=mysql_query("SELECT * FROM ". PREFIX ."_counter_iplist WHERE ip='".$ip."'");
	$reihe= mysql_fetch_object($erg);
	$anz = $reihe->ip;
if(!$anz) {
	//Hits auslesen, um 1 erhöhen und wieder einspeichern
	$ergh = mysql_query("SELECT * FROM ". PREFIX ."_counter");
	$rowh = mysql_fetch_object($ergh);
	$hitz = $rowh->hits; 
	
	$hitz++;
	$aendern = "UPDATE ". PREFIX ."_counter SET hits=". $hitz;
	$update = mysql_query($aendern);
	
	//Eintragung ind die IP-Liste für die 24-h-Counterupdate-Sperre
	$eintrag= "INSERT INTO ". PREFIX ."_counter_iplist (dates, del, ip) VALUES ('".$date."', '".$time."', '".$ip."')";
	$eintragen = mysql_query($eintrag);
	
	//Counterstatistik auslesen
	$erg=mysql_query("SELECT dates FROM ". PREFIX ."_counter_stats WHERE dates='".$date."'");
	$reihe= mysql_fetch_object($erg);
	$anz2 = $reihe->dates;
  
  if(!$anz2) {
	$eintrag = "INSERT INTO `". PREFIX ."_counter_stats` (`dates`, `count`) VALUES ('".$date."', '1')";
	$eintragen = mysql_query($eintrag);
  }
	else 
	$aendern = "UPDATE ". PREFIX ."_counter_stats SET count=count+1 WHERE dates='".$date."'";
	$update = mysql_query($aendern);
}

Zum Auslesen aus der DB:
PHP:
function counter() {

	$erg = mysql_query("SELECT * FROM ". PREFIX ."_counter");
	$reihe= mysql_fetch_object($erg);
	$count = $reihe->hits;
	$precountdate = $reihe->online;
	$countdate = date("d.m.Y - H:i",$precountdate);
	echo $count ." Besucher<br>seit ". $countdate;
}

und auf der jeweiligen PHP-Seite dann einfach:
PHP:
counter();
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh