Сайтостроительство


         

Анализ посетителей веб-сайта - часть 4


//выдаем прозрачный GIF размером 1х1 пиксел printf("Content-type: gif\n\n"); fwrite("GIF89a ? яяя !щ , @D ;", 1, 43, stdout);

LABEL_END: //закрываем соединение с базой mysql_close(pDB);

//освобождаем память DeleteString(sref); DeleteString(pref); DeleteString(spage); DeleteString(ppage);

DeleteString(id); DeleteString(ref); DeleteString(browser); DeleteString(version); DeleteString(cookie); DeleteString(frame); DeleteString(java); DeleteString(x); DeleteString(y); DeleteString(depth); DeleteString(js); DeleteString(os);

return 0; }

******Makefile*********** all: counter

counter: counter.c itcgi.a gcc counter.c -L/usr/local/lib/mysql \ -L/usr/local/lib -I/usr/local/include \ -o counter -lmysqlclient /usr/lib/itcgi.a -Wall -O3 strip counter

Создайте базу данных counter, а в ней таблицу hit, приведенную выше. Соберите данный CGI-скрипт и разместите код счетчика на ваших страницах.

Далее мы напишем программу построения отчетов.

#include <stdio.h> #include <stdlib.h> #include <mysql/mysql.h> #include <itcgi.h>

int main() { MYSQL* pDB; MYSQL_RES* res; MYSQL_ROW row;

//переменные для хранения дня, за который строится отчет, и запроса LString* day = CreateString(); LString* sql_query = CreateString();

pDB = mysql_init(NULL);

if(!pDB) { printError("Внимание! Ошибка!!!", mysql_error(pDB)); return -1; }

if( !mysql_real_connect(pDB, NULL, "counter", "xxxx", "counter", 0, NULL, 0) ) { printError("Внимание! Ошибка!!!", "mysql_real_connect: %s\n", mysql_error(pDB)); goto LABEL_END; }

//выдаем HTTP-заголовок printf("Content-type: text/html; charset=windows-1251\n\n");

//получаем день GetParamByName("day", day); if(!strlen(*day)) { //если из CGI-параметров день не удалось получить, //берем текущую дату //CURDATE() вернет дату в виде 2002-01-08, т.е. 8 января 2002 года LString_Format(sql_query, "SELECT CURDATE()"); mysql_query(pDB, *sql_query); res = mysql_store_result(pDB); row = mysql_fetch_row(res); LString_SetString(day, row[0]); mysql_free_result(res); }




Содержание  Назад  Вперед