Аргерих Л. О языке РНР. Часть 5. Страница 126


Эта функция позволяет добавлять в изображения текстовые строки, в дан­ном случае — вводить числа, взятые из журнала, соответствующие количест­ву посещений. Назовем этот файл counter, php:

<?php

function hitCount($fileName) <

Сначала проверим, можно ли открыть файл для работы со счетчиком:

if (!$filePointer » fopen($fileName, "r+")) { echo("Error opening file $fileName\n"); exit;

i

Затем получим количество посещений из файла журнала:

if (!Shits = fread($filePointer, filesize($fileName))) { echo ("Error reading hits from $fileName\n"); exit;

}

//Инкрементируе»< количество посещений $hits++;

//Возвращаемся к началу журнала для записи заново if (rewind(SfilePointer) == 0) { echo("Couldn't rewind file"): exit;

Запишем в файл новое количество посещений, если запись в этот файл уже не происходит. Мы вызываем функцию flock(), чтобы гарантировать, что никакие другие процессы не используют файл в тот же момент времени, что обеспечивает точность:

if (flock($filePointer, 2)) {

if (!fwrite($filePointer, $hits, strlen($hits))) { echo("Couldn't write updated hits to $fileName"); exit;

)

}

flock($fiiePointer, 3);

Создаем графическое изображение из счетчика посещений с помощью функции, описываемой ниже:

Simage = makelmage($hits);

Наконец, создаем тег <irng> для вызывающей страницы и делаем его прием­лемым для неграфических броузеров:

$counter - "<img src=\"$image\" alt=\"Hits: $hits\">"; return $counter;

t ;

Теперь нам нужна функция, которая создаст наше динамическое изображе­ние и возвратит путь к нему:

function makelmage($number) {

Это имя файла для нашего счетчика: $image = "./hits.png";

Настроим некоторые переменные для определения ширины и высоты наше­го динамического изображения:

SlenHits - strlen($number); ScharHeight = ImageFontHeight(5); $charWidth = ImageFontWidth(5); SstringWidth = $charWidth * SlenHits;

Увеличим немного наше изображение, чтобы оно лучше смотрелось:

SimgWidth = SstringWidth + 10; SimgHeight = $charHeight + 10;

//Найдем центр изображения SimgMidX = SimgWidth / 2; SimgMidY = SimgHeight / 2;

Далее создаем изображение, идентифицируемое как $i, используя вычис­ленные ранее значения:

$i - ImageCreate($imgWidth, SimgHeight);

Установим для нашего изображения некоторые стандартные имена цветов - поскольку $white задан первым, он становится цветом фона для нашего изобра­жения. $black - цвет текста, а также тени, которую мы создадим: