Графический счётчик на PHP
Абсолютное большинство счётчиков, которые Вы видите на сайтах, являются графическими. Фактически, генерируется изображение (подложка) счётчика, а затем уже на нём сверху рисуется текст. В этой статье мы разберём на примере, как генерируется графический счётчик на PHP.
Сразу привожу код:
<?php
$count = file_get_contents("counter.txt"); // Считываем значение счётчика
$count++; // Увеличиваем на 1
file_put_contents("counter.txt", $count); // Обновляем значение счётчика
$len = strlen($count); // Вычисляем длину значения
$offset = ($len - 1) * 8; // Смещение числа на картинке (чем больше цифр в числе, тем сильнее смещение)
$i = imageCreate(100, 50); // Создаём дескриптор изображения
$color = imageColorAllocate($i, 255, 255, 0); // Создаём жёлтый цвет
imageFilledRectangle($i, 0, 0, 100, 50, $color); // Закрашиваем счётчик
$color = imageColorAllocate($i, 255, 0, 0); // Создаём красный цвет
imageTtfText($i, 25, 0, 43 - $offset, 36, $color, "times.ttf", $count); // Выводим значение счётчика
header("Content-type: image/jpeg"); // Отправляем заголовок
imageJpeg($i); // Выводим изображение
imageDestroy($i); // Удаляем дескриптор
?>
Я думаю, что тут код очень прозрачный. Что касается значения счётчика, то его можно хранить не только в файле, но и в базе данных.
Вывести графический счётчик на PHP можно так:
<img src="counter.php" alt="Счётчик" />
Где counter.php - файл, содержаший код, написанный выше. Вот так создаётся графический счётчик на PHP.
-
- Михаил Русаков
Комментарии (3):
Михаил, а можете в следующий раз написать статью о том как сделать таймер на javasctipt. Знаете, это таймер, который изменяется без обновления страниц. Вы также делали с курсом по яваскрипту и джквери и аяксу на продающей странице "До начала продаж осталось 01.55.12
Ответить
Я так понимаю, у этого кода есть требования - библиотека GD. Я прав? Картинка у поста мощная :)
Ответить
Да, я тоже думаю, что без библиотеки тут не обойтись.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.