Если провайдер не включит функцию протоколирования посещений сайта (из-за дополнительного места, занимаемого файлов журналов, и потребления ре- сурсов сервера на их ведение), или если вы хотите отслеживать доступ только к
определенным страницам сайта, для создания собственных отчетов о посещаемо — сти можно воспользоваться таблицей MySQL и набором PHP-сценариев. Предпо — ложим, например, что для создания таблицы usageLog в базе данных MySQL был выполнен следующий SQL-оператор CREATE:
CREATE TABLE UsageLog
(visitor_I P TEXT,
page_URL TEXT,
54 0 Глава 10. РНР4
DT_retrieved TIMESTAMP,
referrer URL TEXT, session_I D TEXT,
session_view s INTEGER) ; [ НИ
Цосле этого можно подготовить код, вызывающий показанную ниже пользо - вательскую функцию в начале каждой PHP-страницы, для которой необходимо отслеживать посещаемость. Эта функция будет добавлять строки в таблицу
usageLog базы данных MySQL.
function recordPageHit($db_host,$db_user,$db_pass,$db_name,$sessionID)
{
global $REMOTE_ADDR, $HTTP_XJFORWARDED_FOR, $PHP_SELF, $link, $result;
// Для экономии места используется функция str_jreplace() для удаления из
// URL строки //"http://". Кроме того, для исключения запроса после "?" в
// URL используется explode(), если таковой имеется.
Скопируйте исходный PHP-код приведенной выше функции и пользовательс — кой функции connectToDB () (служащей для установки соединения с СУБД
MySQL в начале функции recordPageHito) на свой компьютер, выгрузив архив
chptiOTipi3.zip из сайта издательства русскоязычной редакции этой книги (http :
//www. diasoft. kiev. ua). Страница chptiOTipi3.php (входящая в состав архива
chptiOTipi3.zip) содержит операторы, которые необходимо вставить в начало фай —
лов РНР-СТранИЦ ДЛЯ Организации Сеанса И ВЫЗОВа фуНКЦИИ recordPageHit() .
Глава10.РНР4 54 1
Обратите внимание, что функция recordPageHit() вызывает одну и ту же поль — зовательскую фуНКЦИЮ (executeQuery() , ВКЛЮЧенНуЮ В арХИВ ChptlOTipl3.zip ) как для обновления содержимого строки данных в таблице UsageLog, так и для вставки новой строки. При работе с СУБД MySQL для передачи на выполнение SQL-операторов (например, SELECT, INSERT, UPDATE, CREATE, DROP И Т. Д.) исполь —