|
PHP |
| Главная PHP | Документация учебники | PHP справочники | | |
Триада PHP & MySQL & gd library Сервис счетчиков обращенийPhp - (Hypertext Preprocessor) - платформо-независимый
язык для динамического наполнения WEB-сайта.
Тем неменее, он позволяет динамически
генерировать не только HTML-документы,
но и графические изображения в формате gif.
В статье
рассмотрены вопросы обработки параметров get-запроса,
доступа к базе MySQL и
генерации gif-рисунков
на практическом примере. Когда у
вас будет свой сайт вы безусловно захотите
вести статистику посещений. Если вы
предоставляете место и траффик для
бесплатного размешения страниц и хотите
предоставить каждому пользователю
неограниченное количество счетчиков, но
без права исполнения скриптов, то эта
статья для Вас. Как это работает? Web-мастер помещает на свою страницу ссылку на рисунок. Но не gif или jpeg, а на этот php скрипт. Положим, ссылка на счетчик страницы 'Об авторе', расположенной на моем сайте будет выглядеть так: <img src="/scripts/counter.php3?SiteID=Vlad&PageID=About"> Здесь SiteID и PageID - так называемые get-параметры, а Vlad и About - их значения. Эти get-параметры идентифицируют счетчик. Скрипт найдет соответсвующую запись в базе, увеличит значение счетчика на еденицу и построит рисунок. Пример картинки, как выглядит счетчик:
Мы еще не представляем как будет выглядеть все остальное но уже можем обработать get-параметры $locSiteID = $HTTP_GET_VARS["SiteID"]; Здесь следует остановиться на важном моменте. Дело в том, что по правилам php имена переменных и get-параметров чувствительны к регистру. Это значит, что если человек напишет ссылку и get-параметры прописными буквами, то наш скрипт не сможет распознать такой запрос. Поэтому я предлагаю не такой изящный, но очень надежный способ интерпреции get-параметров. Состоит он вот в чем: последоватьным перебором всех get-параметров попытаемся найти интересующие нас SiteID и PageID. Причем при поиске используем нечувствительное к регистру сравнение строк: $locSiteID = "_"; Здесь префикс "_" необходим для MySQL-движка. Далее установим базу счетчиков Counters mysqladmin create Counters и создадим в ней таблицу Counters. Таблица как вы наверно уже догадались, состоит из трех полей: SiteID, PageID, CountValue: Create Table Counters ( Обратите
внимание на индекс CounterIndex. Поля,
входящие в индекс, должны иметь атрибут NOT
NULL, размер ключей (читай
полей, входящих в индекс) не должен
превышать 256 символов. И последнее - порядок
полей в индексе должен совпадать с порядком
в секции Where SQL запроса.
Если же Вы планируете небольшую базу и
колчество записей невелико, то индекс можно
и не создавать. Для
работы с базой нам потребуется всего три
запроса: ·
Создать
новую запись в базе при первом обращении к
счетчику: ·
Найти
значение счетчика: ·
Увеличить
значение счетчика на еденицу: А
теперь самое время вспомнить про префикс "_"
значений get-параметров.
На самом деле все очень просто. Посмотрите
на структуру таблицы. Поля SiteID, PageID помечены
аттрибутом NOT NULL, и
префикс "_" позволяет
пропустить один или даже оба параметра в get-запросе: //
Нечувствительные к регистру get-параметры Преобразовываем
число в строку и форматируем в шестизначное
число. $strCounterValue = sprintf("%d",$locCountValue); Далее
показано как пользоваться gd library в
php для
динамического рисования счетчика. Строго
говоря, это не самый иллюстративный пример.
Шрифты, входящие в библиотеку gd library могут
различаться по дистрибутивам, поэтому для
этого проекта я использовал спецальный
формат представления шрифта и процедуру
его отображения. Тем неменее код достаточно
документирован и, я надеюсь, поможет вам
сделать очередной шаг. Header("Content-type:
image/gif"); |