Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Lösungen für den Alltag  Teil von  Online-Besucherzähler
Letztes Update: 04.09.2007 20:49:50

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

Counter mit IP-Sperre




Die dritte und letzte Variante eines Besucherzählers, die ich Ihnen vorstellen will, hat eine IP-Sperre. Diese IP-Sperre ermöglicht es Ihnen, den jeweiligen Besucher lediglich ein einziges Mal pro Besuch zu registrieren, und zwar für eine festgelegte Zeit. Natürlich stellt dies keinen absoluten Schutz vor Refresh-Aufrufen dar, aber immerhin lässt sich hiermit der Besucherzähler wesentlich sinnvoller betreiben.

Das erforderliche Skript zur Umsetzung des Counters sieht so aus:

<?php

/////////////////////////////////////////
// Counter + Reloadsperre v1.0
/////////////////////////////////////////

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

/////////////////////////////////////////
// IP-Reloadsperre
/////////////////////////////////////////

function pruf_IP($rem_addr) {
  global $ipdatei,$zeit;
  @$ip_array = file($ipdatei);
  $reload_dat = fopen($ipdatei,"w");
  $this_time = time();
  for ($i=0; $i<count($ip_array); $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;
}

/////////////////////////////////////////
// Counter-Abfrage
/////////////////////////////////////////

if (file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['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);
}else if (!file_exists($datei) && ($aktiv==0 || ($aktiv==1 && pruf_IP($_SERVER['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);
} 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);

?>

Diese Lösung setzt sich ähnlich zusammen wie der Text- bzw. Grafikcounter. Es ist lediglich eine Funktion pruf_IP() hinzugekommen, die Sie in die Lage versetzt, die jeweilige IP-Adresse des Besuchers und die Besuchszeit zu speichern. Hierzu wird eine Textdatei ips.txt angelegt, in dieser befinden sich sämtliche Besucher-IPs samt Besuchszeiten. Die Reloadsperre ist für jeden Besucher eine Minute lang aktiv. Dies lässt sich mithilfe der Variablen $zeit natürlich ohne Weiteres verlängern. Die durch die Funktion erzeugten Einträge innerhalb der ips.txt-Datei setzen sich wie folgt zusammen: ipadresse|besuchszeit.


Beispiel – Zeile aus der ips.txt-Datei

127.0.0.1|1075942181

Die Counter-Abfrage und auch die Ausgabeformatierung sind in ihren wesentlichen Bestandteilen identisch mit den vorherigen Lösungen. Der Aufruf des Counters kann anschließend aus jedem beliebigen PHP-Skript Ihrer Website erfolgen und zwar, wie folgt:

Beispiel – Textcounter

<?php

include("counter.php");
echo "<font face=Arial color=blue size=5>$zahl</font>";

?>

Beispiel – Grafikcounter

<?php

include("counter.php");

// Hier wird dann der Zähler aus Bildern zusammengesetzt
for($i=0;$i<$stellen;$i++){
$bild_counter=$bild_counter . "<img src=bilder/" . substr($zahl,$i,1) . ".gif align=absmiddle width=$breite height=$hoehe>";
}

echo $bild_counter;

?>

Tipp: Nehmen Sie sich genügend Zeit, um sich mit der IP-Sperre zu befassen. Diese Funktion kann Ihnen auch für weitere Anwendungen, beispielsweise bei einem Gästebuch, nützliche Dienste erweisen, um doppelte Einträge zu vermeiden.



 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt