zwerg: PHP Online-Besucherzähler mit IP-Sperre

Glück auf!

Ich habe folgendes Script für einen Besucherzähler, welches mir auch anzeigt, wieviele User online sind, aus einem Buch:

<?php

// 0=keine Reloadsperre, 1=Reloadsperre
$aktiv = 1;
// Zeit der Reloadsperre in Minuten
$zeit = 2;
// IP-Datei
$ipdatei = "../Counter/ips.txt";
// Counterdatei
$datei = "../Counter/counter.txt";
// Anzahl der führenden Nullen
$stellen = 5;
// Festlegen der Bild-Dimensionen
$breite="15";
$hoehe="19";

function pruf_IP($rem_addr) {
  global $ipdatei,$zeit,$anzahl;
  @$ip_array = file($ipdatei);
  $reload_dat = fopen($ipdatei,"w");
  $this_time = time();
  $anzahl = count($ip_array);
  for ($i=0; $i<$anzahl; $i++) {
    list($ip_addr,$time_stamp) = explode("|",$ip_array[$i]);
    if ($this_time < ($time_stamp+60*$zeit)) {
      if ($ip_addr == $rem_addr) {
        $gefunden=1;
      }
      else {
        fwrite($reload_dat,"$ip_addr|$time_stamp");
      }
    }
  }
  fwrite($reload_dat,"$rem_addr|$this_time\n");
  fclose($reload_dat);
  return ($gefunden==1) ? 1 : 0;
}

if (file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
  // Falls die Datei existiert, wird sie ausgelesen und
  // der dort enthaltene Wert um Eins erhöht.
  $fp=fopen($datei,"r+");
  $zahl=fgets($fp,$stellen);
  $zahl++;
  rewind($fp);
  flock($fp,2);
  fputs($fp,$zahl,$stellen);
  flock($fp,3);
  fclose($fp);
  $anzahl++;
}else if (!file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($REMOTE_ADDR)==0))) {
  // Die Datei counter.txt existiert nicht, sie wird
  // neu angelegt und mit dem Wert 1 gefüllt.
  $fp=fopen($datei,"w");
  $zahl="1";
  fputs($fp,$zahl,$stellen);
  fclose($fp);
  $anzahl++;
} else {
  // Die Datei existiert zwar, jedoch handelt
  // es sich wahrscheinlich um den gleichen Besucher
  $fp=fopen($datei,"r");
  $zahl=fgets($fp,$stellen);
  fclose($fp);
}

$zahl=sprintf("%0".$stellen."d",$zahl);
$user_online=sprintf("%0".$stellen."d",$anzahl);

?>

Es funktioniert einwandfrei :-)
Nun will ich das Script jedoch auch verstehen, um dies ggfls. auch ändern zu können.
Nun meine Fragen:

  1. Welchen Einfluss hat die Variable $zeit auf das Skript?
    Erhöhe ich diese auf 5 min., wird m. E. die Zeit, wann der User durch einen Klick auf eine Seite einen neuen Eintrag  (Besucher/User +1) vornehmen kann erhöht.
  2. Hat dies aber auch Auswirkungen darauf, wenn ein User offline geht, dass dies erst nach 5 min. angezeigt wird?
    Mein Problem diesbezüglich ist nämlich, dass ich die Zeit für den Besucherzähler gerne bei etwa 60 Min. hätte, den Zähler "User-online" aber möglichst zeitnah etwa 1 Min. aktualisiert haben will.

3)Was empfehlt ihr diesbezüglich? Besucherzähler abkoppeln und mit Cookie arbeiten? Zeiten trennen (wie?)? Besucherzähler komplett rausnehmen und wie bisher nur über die Startseite "zwergenspiegel.de" erhöhen, die i.d.R. nur beim erstmaligen Aufruf angesteuert wird (Nachteil: Nur wenn man direkt über zwergenspiegel.de die Seite ansteuert und nicht etwa über zwergenspiegel.de/Hauptseiten/home.php, wird der Zähler erhöht)?

Tut mir leid, dass ich jetzt solange gebraucht habe, um mein Problem zu schildern. Aber ich wollte im Script nichts wichtiges weglassen und euch möglichst genau meine Fragen erläutern.

Hoffe ihr habt hierdurch nicht die Lust verloren zu antworten.

Beste Grüße

zwerg Alex

  1. Glück auf nochmal!

    Ich hab mich jetzt dafür entschieden, dass Beispiel von
    Self HTML umzusetzen.

    Das verstehe ich zwar noch weniger, aber so ist mein Besucherzähler vom Online-Zähler getrennt und ich bin erstmal zufrieden.

    Danke an alle, die sich mit meinem Problem beschäftigt haben.

    Beste Grüße
    Alex