Зд да се реализира графичен брояч за сайт на PHP с GD е нужно да е инсталирана графичната библиотека GD и 10 графики с числата от 0-9.
Като начало трябва да се инициализират няколко променливи за да функционира скрипта:
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <?
$count=1; // начало на брояча
$ip=getenv( "REMOTE_ADDR"); // IP адрес на потребителя
$counterfile= "counter.txt"; // текстов файл
$anzahl = 5; // позиции на брояча
$reloadsperre = FALSE; // блокиране
$error_img = "fehler.png"; // графика за грешка
?>
<?
function error_image()
{
global $error_img;
$size = GetImageSize($error_img);
$src_img = ImageCreateFromPNG($error_img);
$c_img = ImageCreate($size[0], $size[1]);
ImageCopy($c_img,$src_img, 0, 0, 0, 0, $size[0], $size[1]);
imagedestroy($src_img);
Header( "Content-type: image/png");
ImagePNG($c_img);
imagedestroy($c_img);
exit;
}
?> |
Тази функция се извиква в случай, че се предизвика грешка от скрипта. За тази цел трябва да предоставите една графика в PNG формат.
В следващата стъпка запаметяваме резултатите от брояча в текстови файл.
CODE1
2
3
4
5
6
7
8
9
10
11
| <?
if (!file_exists($counterfile))
{
if ($datei=fopen($counterfile, "w"))
{
fputs($datei, "$count:$ip");
fclose($datei);
} else {
error_image();
}
?> |
Прочитането на резултатите от брояча става по следния начин:
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <?
if (list($line) = file($counterfile))
{
list($count,$old_ip)=split( ":",$line);
if ($ip != $old_ip OR $reloadsperre == FALSE)
{
$count++ ;
if ($datei=fopen($counterfile, "w"))
{
fputs($datei, "$count:$ip");
fclose($datei);
} else {
error_image();
}
}
} else {
error_image();
}
}
?> |
В случай, че файла съществува се прочитат данните. Ако IP-то на потребителя е ново или е прескочило границата на блокиране се записват новите данни във файла.
Брояча се изпълва с нули от ляво
CODE1
2
3
| <?
$count = str_pad($count, $anzahl, "0", STR_PAD_LEFT);
?> |
Определя се големината на графиката
CODE1
2
3
| <?
$counter_size = GetImageSize( "0.png");
?> |
Създава се празна графика върху която ще се наслагват по-късно цифрите.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?
$c_im = ImageCreate(($anzahl*$counter_size[0]), $counter_size[1]);
?>
<?
for($i=0;$i<$anzahl;$i++)
{
$src_im = ImageCreateFromPNG( "$count[$i].png");
ImageCopy($c_im,
$src_im,
($counter_size[0]*$i),
0,
0,
0,
$counter_size[0],
$counter_size[1]);
imagedestroy($src_im);
}
?> |
Тази част е сърцето на скрипта. В тази част се нанасят графиките с числата чрез функзията imageCopy върху празната графика. Функцията imageCreateFromPNG отваря графиките на брояча и прочита изобразената цифра.
Накрая вече графиката на брояча се изобразява.
CODE1
2
3
4
5
| <?
Header( "Content-type: image/png");
ImagePNG($c_im);
imagedestroy($c_im);
?> |
Запаметете този скрипт под името counter.php и го използвайте по следния начин във вашия HTML документ
<img src="counter.php">.