> Forums > PHP

P

PHP-Counter

phpinfo Mi., 18. Oktober, 2006 um 23:10 #1

[php:1]<?php

//***********************************************************
//* PHP-Counter
//* Grafischer Zugriffszähler mit Reload-Sperre.
//*
//* einfache Einbindung in HTML-Dateien mit:
//*
//* <script language="javascript1.2">
//* <!--
//* ref=escape(document.referrer);
//* document.write("<img src=\"./counter.php4?ref="+ref+"\">");
//* //-->
//* </script>
//* <noscript>
//* <img src="./counter.php4">
//* </noscript>
//*
//*
//*
//*
//***********************************************************

//***********************************************************
// Konfiguration
//***********************************************************

$OFFSET = 54; // Wert, der zum aktuellen Counterstand hinzugefügt
$FONT = 5; // Größe der Schrift (1..5)
$HEIGHT = 13; // Höhe des Counter-Bildes (je nach Schriftgröße)
$WIDTH = 30; // Breite des Counter-Bildes (je nach Schriftgröße)
$MAXIP = 10; // Anzahl der zu speicherden IP-Adressen&Timecode für Reload-Sperre
$FILENAME = "counter.dat"; // Name der Datei, in der die Counter-Daten gespeichert werden

// (wird automatisch angelegt. Falls man auf dem Server keine
// Rechte zum Anlegen von Dateien hat, einfach eine leere Datei
// per FTP mitkopieren)
$TIMEOUT = 1800; // Zeit(in Sekunden), nach der Zugriffe von derselben IP wieder gezählt werden.

$TEXT = 0x000000; // Textfarbe als Hex-RGB (0xRRGGBB)
$BACKGROUND = 0xffffff; // Hintergrundfarbe als Hex-RGB (0xRRGGBB)


$ip = getenv("REMOTE_ADDR");
$currtime = time();

if(!file_exists($FILENAME))
{
$fd = fopen($FILENAME , "w+");
fwrite( $fd, "0");
fclose($fd);
}

// prüfen, ob Counter-Datei existiert, da sonst Skriptfehler auftritt
if(file_exists($FILENAME))
{
$file_array = file($FILENAME);
$file_ip = array_slice($file_array,1, $MAXIP);
$counter = $file_array[0];

$found = false;

// auf Reload prüfen
foreach($file_ip as $var)
{
list($lastip,$lasttime) = explode(':',$var);
if( !strcmp($ip,$lastip) && ( ($currtime-$lasttime) < $TIMEOUT))
{
$found = true;
}
}
if(!$found)
{
$counter = $counter+1;
array_unshift($file_ip,($ip.":".$currtime."\n"));
$file_ip = array_slice($file_ip,0, $MAXIP);
$fd = fopen($FILENAME , "w+");
fwrite( $fd, $counter."\n");

foreach($file_ip as $var) fwrite( $fd, $var);
fclose($fd);

// write logfile about request (optional, requires "accesslog.php" in same directory)
include("accesslog.php");
}
}
else $counter = 0;

header("content-Type: image/png");

$img = ImageCreate($WIDTH, $HEIGHT);

$bg_color = ImageColorAllocate($img, ($BACKGROUND >> 16)&255, ($BACKGROUND >> &255, $BACKGROUND&255);
$text_color = ImageColorAllocate($img, ($TEXT >> 16)&255, ($TEXT >> &255, $TEXT&255);

ImageString($img,$FONT,1,0,$counter+$OFFSET,$text_color);

ImagePng($img);
ImageDestroy($img);
?>[/php:1]



C&M distanziert sich konkret und ausdrücklich vom Inhalt dieses Postings.
Der Ersteller des Postings haftet für seine Äußerungen.
Inhalte, die nicht den Forumsregeln entsprechen sind bitte vom Leser zu melden ...



> Forums > PHP

Top