<?php
/**************************************************************************************************
* Goldfish Counter Script Version 2
* This php script is created by Goldfish from Fishbeam Software: http://www.fishbeam.com
* All rights reserved. © 2007 Yves Pellot
**************************************************************************************************/

$src="../".$_GET['src']; //source filename
$length=max($_GET['length'], 1); //length (chars) of counter image

//Get file extension
$fileType=substr($src, strlen($src)-3);

//Load image
switch($fileType) {
case "jpg":
  $source=imagecreatefromjpeg($src);
  break;
case "gif":
  $source=imagecreatefromgif($src);
  break;
case "png":
  $source=imagecreatefrompng($src);
  break;
}

//Get and calculate neccesary data
$digitWidth=floor(imagesx($source)/10);
$image=imagecreate($digitWidth*$length+imagesx($source)%$digitWidth, imagesy($source));
$ip=$_SERVER["REMOTE_ADDR"];
$now=time();

//Read file in array
if(file_exists("saved/counter.txt")) {
  $data=file("saved/counter.txt");
  for($i=0; $i<count($data); $i++)
    $data[$i]=substr($data[$i], 0, strlen($data[$i])-1);
}

//Delte old IPs
for($i=count($data)-1; $i>0; $i--) {
  $arg=explode(" ", $data[$i]);
  if($arg[0]<=$now-60*60*12)
    array_splice($data, $i, 1);
}

//Check if IP is locked
$locked=false;
for($i=1; $i<count($data); $i++) {
  $arg=explode(" ", $data[$i]);
  if($arg[1]==$ip) {
    $locked=true;
    break;
  }  
}

//Only if IP not found increase counter and save IP
if(!$locked) {
  if(!$data[0])
    $data[0]=1;
  else
    $data[0]++;
  $data[count($data)]="$now $ip";
  $file=fopen("saved/counter.txt","w");
  if($file) {
    for($i=0; $i<count($data); $i++)
      fputs($file, $data[$i]."\n");
    fclose($file);
  }
}

//Draw counter
for($i=0; $i<=$length; $i++) {
  if($i<$length-strlen($data[0]))
    $digit=0;
  else
    $digit=substr($data[0], $i-($length-strlen($data[0])), 1);
  ImageCopy($image, $source, $digitWidth*$i, 0, $digitWidth*$digit, 0, $digitWidth, imagesy($source));
}

//Send picture to browser
switch($fileType) {
case "jpg":
  header("Content-Type: image/jpeg");
  header("Content-Transfer-Encoding: binary");
  imagejpeg($image);
  break;
case "gif":
  header("Content-Type: image/gif");
  header("Content-Transfer-Encoding: binary");
  imagegif($image);
  break;
case "png":
  header("Content-Type: image/png");
  header("Content-Transfer-Encoding: binary");
  imagepng($image);
  break;
}

?>