//
// Counter with red background
//
// or:
//
//
// Counter with red background, green foreground and 4 digits
//
// or:
//
//
// Counter with transparent background and red foreground
//
//
Header("Content-type: image/png");
require("colors.php");
// Load the gd-library
// under Windooze use this one
// dl("php3_gd.dll");
// under UNIX use this one
// dl("php3_gd.so");
// some default-values
$Font = 5;
$BGColor = GetColor("black");
$BGTrans = False;
$FGColor = GetColor("white");
$FGTrans = False;
$Length = 7;
// get environment
$query_string = getenv("QUERY_STRING");
// parse environment
// split query-string
$env_array = split("&", $query_string);
// split in key=value and convert %XX
while (list($key, $val) = each($env_array))
{
// split
list($name, $wert) = split("=", $val);
// replace %XX by character
$name = urldecode($name);
$wert = urldecode($wert);
// write to $cgivars
$CGIVars[$name] = $wert;
}
// eventually replace the default-values by the given parameters
if ($CGIVars["BGColor"])
{
if (ereg("([0-9]*) ([0-9]*) ([0-9]*)", $CGIVars["BGColor"], $tmp))
{
$BGColor["red"] = $tmp[1];
$BGColor["green"] = $tmp[2];
$BGColor["blue"] = $tmp[3];
}
else if (eregi("transparent", $CGIVars["BGColor"]))
{
$BGTrans = True;
}
else
{
$BGColor = GetColor($CGIVars["BGColor"]);
}
}
if ($CGIVars["FGColor"])
{
if (ereg("([0-9]*) ([0-9]*) ([0-9]*)", $CGIVars["FGColor"], $tmp))
{
$FGColor["red"] = $tmp[1];
$FGColor["green"] = $tmp[2];
$FGColor["blue"] = $tmp[3];
}
else if (eregi("transparent", $CGIVars["FGColor"]))
{
$FGTrans = True;
}
else
{
$FGColor = GetColor($CGIVars["FGColor"]);
}
}
if ($CGIVars["Length"])
{
$Length = $CGIVars["Length"];
}
// calculate size of image
$SizeX = $Length * 13;
$SizeY = 16;
// read counter-file
if (file_exists("counter.txt"))
{
$fp = fopen("counter.txt", "rt");
while ($Line = fgets($fp, 999))
{
// split lines into identifier/counter
if (ereg("([^ ]*) *([0-9]*)", $Line, $tmp))
{
$CArr["$tmp[1]"] = $tmp[2];
}
}
// close file
fclose($fp);
// get counter
$Counter = $CArr[urlencode($CGIVars["Identifier"])];
if(!$Counter) {
$since = "Hits Since ". date('M d, Y');
}
$Counter += 1;
$CArr[urlencode($CGIVars["Identifier"])] = $Counter;
}
else
{
// the new counter is initialized with 1
$CArr[urlencode($CGIVars["Identifier"])] = 1;
$Counter = 1;
// print "create counter.txt and initialize the date
\n";
}
// write counter file
$fp = fopen("counter.txt", "wt");
// output array elements
reset($CArr);
while (list($Key, $Value) = each($CArr))
{
$tmp = sprintf("%s %d\n", $Key, $Value);
fwrite($fp, $tmp);
}
// close file
fclose($fp);
// Counter mit führenden Nullen auffüllen
// fill counter with leading 0´s
$Counter = sprintf("%0".$Length."d", $Counter);
// create image
$img = ImageCreate($SizeX + 4, $SizeY + 4);
// use interlace
ImageInterlace($img, 1);
// transparent color for separators
$trans = ImageColorAllocate($img, 1, 1, 1);
ImageColorTransparent($img, $trans);
// fill background
if ($BGTrans)
{
ImageFill($img, 1, 1, $trans);
}
else
{
$col = ImageColorAllocate($img, $BGColor["red"], $BGColor["green"],
$BGColor["blue"]);
ImageFill($img, 1, 1, $col);
}
// output digits
if ($FGTrans)
{
$col = $trans;
}
else
{
$col = ImageColorAllocate($img, $FGColor["red"], $FGColor["green"],
$FGColor["blue"]);
}
$PosX = 0;
for ($i = 1; $i <= strlen($Counter); $i++)
{
ImageString($img, $Font, $PosX + 3, 2 + $i % 2,
substr($Counter, $i - 1, 1), $col);
if ($i != 1)
{
// draw separator
ImageLine($img, $PosX, 0, $PosX, $SizeY + 4, $trans);
}
$PosX += 13;
}
// output image
ImagePNG($img);
ImageDestroy($img);
?>