[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / Разное /

Учебное пособие по CGI-программированию Страница 30. Счётчик посещений

Счётчик посещений

Наверное тоже одним из часто встречающихся приложений CGI являются счетчики посещений. Они стоят практически на каждой страничке, возможно даже и у вас. Но иногда вас не устраивает тот факт, что счетчик лежит где-то в другом месте.Из-за этого скажем невозможно начать счет с произвольного числа.Или еще некоторые счетчики по разному фильтруют 'Reload'. Да и мало ли? Ну а иногда вам хочется просто сделать другой дизайн цифр. То если вы CGI-програмист то возможно имеет смысл написать свой счетчик. И делать с ним что захочется. Вот я так-же написал.....
Скрипт данного счетчика обслужевает несколько счетчиков ,им вы присваиваете идентификаторы. Поэтому вы спокойно можете втыкать независимые счетчики в разные страницы сайта и даже давать это делать друзьям. В общем он прост в использовании:<IMG xsrc="cgi-bin/counter.cgi?id=name">, Где name -любое уникальное имя идентифицирующее счетчик.Вытакже можете задать необязательный параметр dig который задает количество цифр в счетчике ,Например:
<IMG xsrc="cgi-bin/counter.cgi?id=doom2&dig=9">.
Получится примерно вот так:
.gif'ы в счетчике с прозрачными областями.Что дает дополнительную гибкость к примеру для улучшения внешнего вида с помощью другого фона его иногда имеет смысл запихнуть в "таблицу":
<TABLE><TR><TD bgcolor="white"><IMG xsrc="counter.gif"></TD></TR></TABLE>
Свои данные он пишет примерно в такой файл counter.dat:

doom2 4 127.0.0.1 906992351 
quake2 1 127.0.0.1 906992700
quake 3 127.0.0.1 906992668
doom 1 127.0.0.1 906991960
Вы спросите,зачем столько информации? Чтобы отфильтровывать нажатия Reload. Если с одного IP-адреса между заходами промежуток меньше чем 30 секунд,то счетчик не инкрементируется (Так например поступает счетчик в Rambler'е).
Теперь об исходнике.Скрипт получился великоват,потому,что я вместо чтения из файлов решил .gif'ы запихнуть в сам скрипт.Выглядит громоздко , зато пашет как трактор ;))!!
#!/usr/bin/perl #counter.cgi $gifheader="GIF89a"; 
#Использую 14x16 .gif $digx_size=14;
$digy_size=16; $datafile="counter.dat";
######################################################
$GifData[0]= "GIF89ax0Ex00x10x00xEFx00x00Cx03x03x03xFFxFFx2Fx2Fx2F
x8Bx03x03x7Fx03x03x9Bx03x03xA7". "x03x03x5Bx03x03gx03x03xBFx03
x03sx03x03xB3x03x03Ox03x03xCBx03x03xFFxB7xB7x3Fx2Bx1BG3x23". "
xF3xA3xA3xEBx97x97Ox3Bx2BxF7xABxABxDFx87x87xE7x8Fx8FxD3ssxCBkk
xC7ccxBFx5Bx5BxBBW". "WxDBx7Bx7BxAFGGxA7x3Fx3FxA3x3Bx3Bx9B33
xB3OOx8Fx2Bx2Bx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "x17x17sx13x13kx0F
x0Fgx0Bx0B_x07x07x5Bx07x07Sx07x07x97x2Fx2FGx03x03Cx03x03xFFxEB
xDF". "xFFxE3xD3xFFxDBxC7xFFxD3xBBxFFxCFxB3xFFxC7xA7xFFxBFx9B
xFFxBBx93xFFxB3x83xF7xABx7BxEFxA3sxE7x9B". "kxDFx93cxD7x8Bx5BxCF
x83SxCBx7FOxBFx7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7x87". "W3x7FSx2FwO
x2BkGx27_Cx23Sx3Fx1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23x0FxEFxEFxEF". "xE7
xE7xE7xDFxDFxDFxDBxDBxDBxD3xD3xD3xCBxCBxCBxC7xC7xC7xBFxBFxBF
xB7xB7xB7xB3xB3xB3xABxABxABxA7xA7". "xA7x9Fx9Fx9Fx97x97x97x17
x1Fx07x2F7x1Fx0Fx17x03x23x2Bx0Fx07x07x07oookkkcccx5B". "x5B
x5BWWWOOOGGGCCCx3Bx3Bx3B777x13x13x13x27x27x27x23x23x23wxFFo". "o
xEFggxDF__xCFWx5BxBFOSxAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23x1B
x1B". "x1Bx1FCx17x173x0Fx13x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAF
x97x7FxA7x8Fwx9Fx87ox9Bx7Fkx93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgS
x3F_K7WC3Sx3Fx2Fx9Fx83c". "x8FwSx83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7B
x7FcosWgkOx5Bc". "GSWx3BGO3x3FGx2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3
x9Bx2FxAFx7Bx1Fx9Bx5Bx13x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFF
xBBxBBxFFx9Bx9BxFFx7Bx7BxFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "xEF
x03x03xE3x03x03xD7x03x03x83x83x83x0Bx0Bx0Bx7Fx7Fx7FxFFxFFxFFKKK
x17x0Fx07x1Fx17x0Bww". "wx93x93x93x8Bx8Bx8BOx03x03x27Sx1BxE7xE7
xFFxC7xC7xFFxABxABxFFx8Fx8FxFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03
xFFx03x03xE3x03x03xCBx03x03xB3x03x03x9Bx03x03x83x03x03kx03x03S
xFFxFFxFF". "xFFxEBxDBxFFxD7xBBxFFxC7x9BxFFxB3x7BxFFxA3x5BxFF
x8Fx3BxFFx7Fx1BxF3sx17xEBox0FxDFgx0FxD7_". "x0BxCBWx07xC3Ox03xB7G
x03xAFCx03xFFxFFxFFxFFxFFxD7xFFxFFxB3xFFxFFx8FxFFxFFkxFFxFFG
xFF". "xFFx23xFFxFFx03xA7x3Fx03x9F7x03x93x2Fx03x87x23x03Ox3Bx27C
x2Fx1B7x23x13x2Fx1Bx0Bx03x03S". "x03x03Gx03x03x3Bx03x03x2Fx03x03
x23x03x03x17x03x03x0BxBFxA7x8FxFFx9FCxFFxE7KxFFx7BxFFxFFx03". "
xFFxCFx03xCFx9Fx03x9Box03kxA7kkx21xF9x04x01x00x00x01x00x2Cx00
x00x00x00x0Ex00x10x00x00x08". "x94x00x03x08x0Cx00xA0x60xC1x81x08
x0Bx12x28xB0x60x40x81x83x03x01x1Cx28xA0xC0xE1x01x05x06x0Ex00
x88". "hxC0x00x81x01x03x10x20HxF0Px00Ax02x1Dx09x20x00xC0xE0x00Ix02
x1Bx01x60x1Cx00Sx00x80x91". "x05x06x00xB0yxC0x00xCDx98x0Ax16x14
xA8x291xA7Nx82x0Ax12xFCxE4i4x26x81x069wxCA4xD0". "xD0x29Ix9D6Q6x7C
xD8xF0xE5xCEx93x0Bx3ExA6Lx60x60xA7Ix96x08x14x20x28xE0x91x80Fx93
x02". "x0Bx228x10RxA3Yx846x0Dx9Ax85x8B0x80x80xBFx7Fx11x06x04x00x3B";
$GifData[1]= "GIF89ax0Bx00x10x00xEFx00x00Cx03x03x03xFFxFFx2Fx2Fx2FxBF
x03x03x8Bx03x03xCBx03x03x9B". "x03x03xA7x03x03xB3x03x03x7Fx03x03
xD7x03x03sx03x03G3x23x3Fx2Bx1Bx0Fx17x03Ox3Bx2BxFFxB7xB7". "xF7xAB
xABxF3xA3xA3xEBx97x97xE7x8Fx8FxDFx87x87xDBx7Bx7BxD3ssxCBkkxC7cc
xBFx5Bx5BxBBW". "WxB3OOxAFGGxA7x3Fx3FxA3x3Bx3Bx9B33x97x2Fx2Fx8F
x2Bx2Bx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "x17x17sx13x13kx0Fx0Fgx0Bx0B_
x07x07x5Bx07x07Sx07x07Ox03x03Gx03x03Cx03x03xFFxEBxDF". "xFFxE3xD3
xFFxDBxC7xFFxD3xBBxFFxCFxB3xFFxC7xA7xFFxBFx9BxFFxBBx93xFFxB3
x83xF7xABx7BxEFxA3sxE7x9B". "kxDFx93cxD7x8Bx5BxCFx83SxCBx7FOxBF
x7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7x87". "W3x7FSx2FwOx2BkGx27_Cx23Sx3F
x1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23x0FxEFxEFxEF". "xE7xE7xE7xDFxDFxDF
xDBxDBxDBxD3xD3xD3xCBxCBxCBxC7xC7xC7xBFxBFxBFxB7xB7xB7xB3xB3
xB3xABxABxABxA7xA7". "xA7x9Fx9Fx9Fx23x2Bx0Fx93x93x93x2F7x1Fx83
x83x83x7Fx7Fx7Fx17x1Fx07oookkkcccx5B". "x5Bx5BWWWOOOGGGCCCx3Bx3B
x3B777x07x07x07x27x27x27x23x23x23wxFFo". "oxEFggxDF__xCFWx5BxBFOS
xAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23x0Bx0B". "x0Bx1FCx17x173x0F
x13x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAFx97x7FxA7x8Fwx9Fx87ox9B
x7Fkx93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgSx3F_K7WC3Sx3Fx2Fx9Fx83c". "
x8FwSx83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7Bx7FcosWgkOx5Bc". "GSWx3BGO3
x3FGx2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3x9Bx2FxAFx7Bx1Fx9Bx5Bx13
x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFFxBBxBBxFFx9Bx9BxFFx7Bx7B
xFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "xEFx03x03xE3x03x03wwwx13x13x13
x1Bx1Bx1BxFFxFFxFFKKKx17x0Fx07x1Fx17x0Bx97x97x97x8Bx8B". "x8Bgx03
x03x5Bx03x03Ox03x03x27Sx1BxE7xE7xFFxC7xC7xFFxABxABxFFx8Fx8F
xFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03xFFx03x03xE3x03x03xCBx03x03xB3
x03x03x9Bx03x03x83x03x03kx03x03SxFFxFFxFF". "xFFxEBxDBxFFxD7xBB
xFFxC7x9BxFFxB3x7BxFFxA3x5BxFFx8Fx3BxFFx7Fx1BxF3sx17xEBox0FxDFg
x0FxD7_". "x0BxCBWx07xC3Ox03xB7Gx03xAFCx03xFFxFFxFFxFFxFFxD7xFF
xFFxB3xFFxFFx8FxFFxFFkxFFxFFGxFF". "xFFx23xFFxFFx03xA7x3Fx03x9F7
x03x93x2Fx03x87x23x03Ox3Bx27Cx2Fx1B7x23x13x2Fx1Bx0Bx03x03S". "x03
x03Gx03x03x3Bx03x03x2Fx03x03x23x03x03x17x03x03x0BxBFxA7x8FxFF
x9FCxFFxE7KxFFx7BxFFxFFx03". "xFFxCFx03xCFx9Fx03x9Box03kxA7kkx21
xF9x04x01x00x00x01x00x2Cx00x00x00x00x0Bx00x10x00x00x08". "gx00x03
x08x04x40xB0x20x00x81x01x00x1Cx40PxA0x80x82x03x00x04x24x24pxC0
xC0x80x01x08x08Dx04". "x40x80xE2x81x86x034x0A0xC8xB0x40xC8x88x01
x04x8CxFCxD8Px24Bx85x03ZxA2x1ChxF1xA2Kx9A". "x17OJxC4isfxC2x9Ax03
x12xF8x04x60x00x81QxA1x3Bx7Fx22xB8x88xF4x25x01x03x1Dx17x0C5H". "0iJ
x95Xx05x04x04x00x3B";
$GifData[2]= "GIF89ax0Ex00x10x00xEFx00x00Cx03x03
x03xFFxFFx2Fx2Fx2Fx7Fx03x03xA7x03x03x9Bx03x03xB3". "x03x03xBFx03
x03x8Bx03x03xEFx03x03xCBx03x03sx03x03xD7x03x03xE3x03x03gx03x03
xFFxB7xB7xF7xABxAB". "xF3xA3xA3x3Fx2Bx1BxEBx97x97xE7x8Fx8FxDFx87
x87xDBx7Bx7BxD3ssxCBkkxC7ccxBFx5Bx5BxBBW". "WxB3OOxAFGGxA7x3Fx3F
xA3x3Bx3Bx9B33x97x2Fx2Fx8Fx2Bx2Bx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "
x17x17sx13x13kx0Fx0Fgx0Bx0B_x07x07x5Bx07x07Sx07x07Ox03x03Gx03
x03Cx03x03xFFxEBxDF". "xFFxE3xD3xFFxDBxC7xFFxD3xBBxFFxCFxB3xFF
xC7xA7xFFxBFx9BxFFxBBx93xFFxB3x83xF7xABx7BxEFxA3sxE7x9B". "kxDF
x93cxD7x8Bx5BxCFx83SxCBx7FOxBFx7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7
x87". "W3x7FSx2FwOx2BkGx27_Cx23Sx3Fx1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23
x0FxEFxEFxEF". "xE7xE7xE7xDFxDFxDFxDBxDBxDBxD3xD3xD3xCBxCBxCB
xC7xC7xC7xBFxBFxBFxB7xB7xB7xB3xB3xB3xABxABxABxA7xA7". "xA7x9F
x9Fx9Fx2F7x1FOx3Bx2Bx0Fx17x03G3x23x7Fx7Fx7Fx23x2Bx0Foookkkcccx5B". "
x5Bx5BWWWOOOGGGCCCx3Bx3Bx3B777x0Bx0Bx0Bx27x27x27x23x23x23wxFFo". "o
xEFggxDF__xCFWx5BxBFOSxAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23x13
x13". "x13x1FCx17x173x0Fx13x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAF
x97x7FxA7x8Fwx9Fx87ox9Bx7Fkx93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgS
x3F_K7WC3Sx3Fx2Fx9Fx83c". "x8FwSx83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7B
x7FcosWgkOx5Bc". "GSWx3BGO3x3FGx2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3
x9Bx2FxAFx7Bx1Fx9Bx5Bx13x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFF
xBBxBBxFFx9Bx9BxFFx7Bx7BxFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "x17
x1Fx07x83x83x83x07x07x07wwwx1Bx1Bx1BxFFxFFxFFKKKx17x0Fx07x1Fx17
x0Bx97x97x97x93x93". "x93x8Bx8Bx8Bx5Bx03x03Ox03x03x27Sx1BxE7xE7
xFFxC7xC7xFFxABxABxFFx8Fx8FxFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03
xFFx03x03xE3x03x03xCBx03x03xB3x03x03x9Bx03x03x83x03x03kx03x03S
xFFxFFxFF". "xFFxEBxDBxFFxD7xBBxFFxC7x9BxFFxB3x7BxFFxA3x5BxFF
x8Fx3BxFFx7Fx1BxF3sx17xEBox0FxDFgx0FxD7_". "x0BxCBWx07xC3Ox03xB7G
x03xAFCx03xFFxFFxFFxFFxFFxD7xFFxFFxB3xFFxFFx8FxFFxFFkxFFxFFG
xFF". "xFFx23xFFxFFx03xA7x3Fx03x9F7x03x93x2Fx03x87x23x03Ox3Bx27C
x2Fx1B7x23x13x2Fx1Bx0Bx03x03S". "x03x03Gx03x03x3Bx03x03x2Fx03x03
x23x03x03x17x03x03x0BxBFxA7x8FxFFx9FCxFFxE7KxFFx7BxFFxFFx03". "
xFFxCFx03xCFx9Fx03x9Box03kxA7kkx21xF9x04x01x00x00x01x00x2Cx00
x00x00x00x0Ex00x10x00x00x08". "x8Fx00x03x00x18Hpx60x80x83x08x01
x20x20xC0x40x81x02x03x04x1Cx00x40x28pxC0Bx03x05x0AXx1C". "0xF1x20
x80x05x08x16x0Cx18xB0x20xE3x01x8Ex1Ex0Bx0Ex1Cx40xE0x40x01x00
x02x0Ex0AP9xC0x80x82x97". "1x2Bx2AhxD0xF0xC0x01x03x1Ccx02x18Px00
x28x01x03x3Ex83xCEx24zxD4x81xC5x900x85bxD4xA8". "Rx40Nx00x10x09pT
xD9x11x00x81xA3x04x12x88x15kx00xA6xC0xAFx07ZxFAdxD0x00gxC5x91
x20". "x11x14xF8x8AxC0x2CWxAE9xADxEAxDDxAB7x40x40x00x3B";
$GifData[3]= "GIF89ax0Ex00x10x00xEFx00x00Cx03x03x03xFFxFFx2Fx2Fx2Fs
x03x03xBFx03x03xB3x03x03xE3". "x03x03xCBx03x03x8Bx03x03x9Bx03x03
xD7x03x03xEFx03x03xA7x03x03gx03x03x7Fx03x03G3x23xFFxB7xB7". "xF7
xABxABxF3xA3xA3xEBx97x97xE7x8Fx8FxDFx87x87xDBx7Bx7BxD3ssxCBkk
xC7ccxBFx5Bx5BxBBW". "WxB3OOxAFGGxA7x3Fx3FxA3x3Bx3BOx3Bx2Bx3Fx2B
x1Bx8Fx2Bx2Bx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "x17x17sx13x13kx0Fx0Fg
x0Bx0B_x07x07x5Bx07x07Sx07x07Ox03x03Gx03x03Cx03x03xFFxEBxDF". "
xFFxE3xD3xFFxDBxC7xFFxD3xBBx9B33x97x2Fx2FxFFxCFxB3xFFxBBx93xFF
xB3x83xF7xABx7BxEFxA3sxE7x9B". "kxDFx93cxD7x8Bx5BxCFx83SxCBx7FO
xBFx7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7x87". "W3x7FSx2FwOx2BkGx27_C
x23Sx3Fx1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23x0FxEFxEFxEF". "xE7xE7xE7xDF
xDFxDFxDBxDBxDBxD3xD3xD3xCBxCBxCBxC7xC7xC7xBFxBFxBFxB7xB7xB7
xB3xB3xB3xABxABxABxA7xA7". "xA7x9Fx9Fx9FxFFxC7xA7xFFxBFx9BxFF
xFFxFFx83x83x83x17x1Fx07x0Fx17x03oookkkcccx5B". "x5Bx5BWWWOOOGGGCCC
x3Bx3Bx3B777x17x0Fx07x27x27x27x23x23x23wxFFo". "oxEFggxDF__xCFWx5B
xBFOSxAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23x1Fx17". "x0Bx1FCx17x173
x0Fx13x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAFx97x7FxA7x8Fwx9Fx87o
x9Bx7Fkx93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgSx3F_K7WC3Sx3Fx2Fx9Fx83c". "
x8FwSx83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7Bx7FcosWgkOx5Bc". "GSWx3BGO3
x3FGx2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3x9Bx2FxAFx7Bx1Fx9Bx5Bx13
x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFFxBBxBBxFFx9Bx9BxFFx7Bx7B
xFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "x7Fx7Fx7Fx23x2Bx0Fx2F7x1Fx07
x07x07x0Bx0Bx0Bx13x13x13wwwx1Bx1Bx1BKKKx97x97x97x93x93". "x93x8B
x8Bx8Bx5Bx03x03Ox03x03x27Sx1BxE7xE7xFFxC7xC7xFFxABxABxFFx8Fx8F
xFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03xFFx03x03xE3x03x03xCBx03x03
xB3x03x03x9Bx03x03x83x03x03kx03x03SxFFxFFxFF". "xFFxEBxDBxFFxD7
xBBxFFxC7x9BxFFxB3x7BxFFxA3x5BxFFx8Fx3BxFFx7Fx1BxF3sx17xEBox0F
xDFgx0FxD7_". "x0BxCBWx07xC3Ox03xB7Gx03xAFCx03xFFxFFxFFxFFxFFxD7
xFFxFFxB3xFFxFFx8FxFFxFFkxFFxFFGxFF". "xFFx23xFFxFFx03xA7x3Fx03
x9F7x03x93x2Fx03x87x23x03Ox3Bx27Cx2Fx1B7x23x13x2Fx1Bx0Bx03x03S". "
x03x03Gx03x03x3Bx03x03x2Fx03x03x23x03x03x17x03x03x0BxBFxA7x8F
xFFx9FCxFFxE7KxFFx7BxFFxFFx03". "xFFxCFx03xCFx9Fx03x9Box03kxA7kk
x21xF9x04x01x00x00x01x00x2Cx00x00x00x00x0Ex00x10x00x00x08". "x85
x00x01x08x1C80x80Ax83x00x10x280xC0xF0x00x81x01x02x0Fx02pxC0xA0x40
x01x02x16x19x24h". "x00x00xE1x80x8Fx20x07x10x20x90x00x80x80x00x04
x09x128x90x00xA2Ax01x02RxAEdx80xC0xA4xC4x03". "x0Dx09x28x20PxF3
x24xC2x91x16uxF2xB4xE9xF1x23x82x02x06x86xFADxA9xD2x40x81x9Ex29
x07x12HxCA". "1fx81x05Xx15x1CpxA8xA0x24Lx00x09x82ZxBCxB8xD1x26x80
x90x21x05xC2dx1AxD5xE4xDAx970". "xE3xC6x3Dx18x20x20x00x3B";
$GifData[4]= "GIF89ax0Ex00x10x00xEFx00x00Cx03x03x03xFFxFFx2Fx2Fx2Fx7F
x03x03sx03x03x8Bx03x03g". "x03x03xA7x03x03x9Bx03x03xB3x03x03xBFx03
x03xD7x03x03xE3x03x03xEFx03x03Sx07x07x5Bx03x03Cx03x03". "xCBkkxEB
x97x97xE7x8Fx8FxDFx87x87xF7xABxABxFFxB7xB7xDBx7Bx7BxF3xA3xA3
xC7ccxBFx5Bx5BxBBW". "WxB3OOxD3ssxA7x3Fx3FxAFGGx9B33x97x2Fx2Fx8F
x2Bx2Bx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "x17x17sx13x13kx0Fx0Fgx0Bx0B_
x07x07x5Bx07x07xA3x3Bx3BOx03x03Gx03x03x83x83x83xFFxEBxDF". "xFF
xE3xD3xFFxDBxC7xFFxD3xBBxFFxCFxB3xFFxC7xA7xFFxBFx9BxFFxBBx93
xFFxB3x83xF7xABx7BxEFxA3sxE7x9B". "kxDFx93cxD7x8Bx5BxCFx83SxCB
x7FOxBFx7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7x87". "W3x7FSx2FwOx2BkGx27_C
x23Sx3Fx1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23x0FxEFxEFxEF". "xE7xE7xE7xDF
xDFxDFxDBxDBxDBxD3xD3xD3xCBxCBxCBxC7xC7xC7xBFxBFxBFxB7xB7xB7
xB3xB3xB3xABxABxABxA7xA7". "xA7x9Fx9Fx9Fx97x97x97x0Fx17x03G3x23
x3Fx2Bx1Bx7Fx7Fx7FwwwoooOx3Bx2Bcccx5B". "x5Bx5BWWWOOOGGGCCCx3Bx3B
x3B777x23x2Bx0Fx27x27x27x23x23x23wxFFo". "oxEFggxDF__xCFWx5BxBFOS
xAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23x2F7". "x1Fx1FCx17x173x0Fx13
x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAFx97x7FxA7x8Fwx9Fx87ox9Bx7Fk
x93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgSx3F_K7WC3Sx3Fx2Fx9Fx83c". "x8FwS
x83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7Bx7FcosWgkOx5Bc". "GSWx3BGO3x3FG
x2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3x9Bx2FxAFx7Bx1Fx9Bx5Bx13
x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFFxBBxBBxFFx9Bx9BxFFx7Bx7B
xFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "x17x1Fx07kkkx07x07x07xCBx03x03
x0Bx0Bx0Bx13x13x13x1Bx1Bx1BxFFxFFxFFKKKx17x0Fx07x1Fx17". "x0Bx93
x93x93x8Bx8Bx8BOx03x03x27Sx1BxE7xE7xFFxC7xC7xFFxABxABxFFx8Fx8F
xFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03xFFx03x03xE3x03x03xCBx03x03xB3
x03x03x9Bx03x03x83x03x03kx03x03SxFFxFFxFF". "xFFxEBxDBxFFxD7xBB
xFFxC7x9BxFFxB3x7BxFFxA3x5BxFFx8Fx3BxFFx7Fx1BxF3sx17xEBox0FxDFg
x0FxD7_". "x0BxCBWx07xC3Ox03xB7Gx03xAFCx03xFFxFFxFFxFFxFFxD7xFF
xFFxB3xFFxFFx8FxFFxFFkxFFxFFGxFF". "xFFx23xFFxFFx03xA7x3Fx03x9F7
x03x93x2Fx03x87x23x03Ox3Bx27Cx2Fx1B7x23x13x2Fx1Bx0Bx03x03S". "x03
x03Gx03x03x3Bx03x03x2Fx03x03x23x03x03x17x03x03x0BxBFxA7x8FxFF
x9FCxFFxE7KxFFx7BxFFxFFx03". "xFFxCFx03xCFx9Fx03x9Box03kxA7kkx21
xF9x04x01x00x00x01x00x2Cx00x00x00x00x0Ex00x10x00x00x08". "x8Bx00
x01x08x1Cx18x60x20Ax00x05x184Hx00xA0xE0x81x05x0Bx10x00x10x00x60
x40x82x04x05x1AVx3C". "x80x20x23xC5x01x07x0Ex0CxD08x00AxC7x89x08C
x8Ex2C8xA0x40x81x91x14x0Bx98x1Cx29x90x40Kx98". "x08x2Fx16Hx10x92
x80Ox9Cx05x14x28xE0xF8rx80Ox03x28x83xF2x1Cx60xC0xC0OxA4x14x0D
x0EtxCA". "tbx80x00x02xB2fx05x40x95x80xD5xABx60x0BRx85x1Ax16x2CW
x02x05xBCx0Ax28x7Bx15x80x83x07x04". "x0Cx40XxCBVxEAWxB6ZxB5x06
x04x00x3B";
$GifData[5]= "GIF89ax0Ex00x10x00xEFx00x00Cx03x03x2Fx2Fx2F
x03xFFxFFx7Fx03x03x9Bx03x03xA7x03x03x8B". "x03x03sx03x03xBFx03x03
xB3x03x03xD7x03x03xCBx03x03xEFx03x03xE3x03x03x3Fx2Bx1Bx23x2Bx0F
xFFxB7xB7". "xF7xABxABxF3xA3xA3xEBx97x97xE7x8Fx8FxDFx87x87xDB
x7Bx7BxD3ssxCBkkxC7ccxBFx5Bx5BxBBW". "WxB3OOxAFGGxA7x3Fx3FxA3x3B
x3Bx9B33x97x2Fx2Fx8Fx2Bx2Bx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "x17x17s
x13x13kx0Fx0Fgx0Bx0B_x07x07x5Bx07x07Sx07x07Ox03x03Gx03x03Cx03x03
xFFxEBxDF". "xFFxE3xD3xFFxDBxC7xFFxD3xBBxFFxCFxB3xFFxC7xA7xFFxBF
x9BxFFxBBx93xFFxB3x83xF7xABx7BxEFxA3sxE7x9B". "kxDFx93cxD7x8Bx5B
xCFx83SxCBx7FOxBFx7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7x87". "W3x7FS
x2FwOx2BkGx27_Cx23Sx3Fx1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23x0FxEFxEF
xEF". "xE7xE7xE7xDFxDFxDFxDBxDBxDBxD3xD3xD3xCBxCBxCBxC7xC7xC7
xBFxBFxBFxB7xB7xB7xB3xB3xB3xABxABxABxA7xA7". "xA7x9Fx9Fx9Fx1B
x1Bx1Bx17x1Fx07Ox3Bx2BG3x23x7Fx7Fx7Fwwwoookkkcccx5B". "x5B
x5BWWWOOOGGGCCCx3Bx3Bx3B777KKKx27x27x27x23x23x23wxFFo". "oxEFgg
xDF__xCFWx5BxBFOSxAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23x17x0F". "x07
x1FCx17x173x0Fx13x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAFx97x7FxA7
x8Fwx9Fx87ox9Bx7Fkx93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgSx3F_K7WC3Sx3F
x2Fx9Fx83c". "x8FwSx83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7Bx7FcosWgkO
x5Bc". "GSWx3BGO3x3FGx2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3x9Bx2FxAF
x7Bx1Fx9Bx5Bx13x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFFxBBxBBxFF
x9Bx9BxFFx7Bx7BxFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "x0Fx17x03x0B
x0Bx0Bx2F7x1Fx13x13x13x07x07x07x93x93x93xFFxFFxFFx1Fx17x0Bx83
x83x83x97x97x97x8Bx8B". "x8Bgx03x03x5Bx03x03Ox03x03x27Sx1BxE7xE7
xFFxC7xC7xFFxABxABxFFx8Fx8FxFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03
xFFx03x03xE3x03x03xCBx03x03xB3x03x03x9Bx03x03x83x03x03kx03x03S
xFFxFFxFF". "xFFxEBxDBxFFxD7xBBxFFxC7x9BxFFxB3x7BxFFxA3x5BxFFx8F
x3BxFFx7Fx1BxF3sx17xEBox0FxDFgx0FxD7_". "x0BxCBWx07xC3Ox03xB7Gx03
xAFCx03xFFxFFxFFxFFxFFxD7xFFxFFxB3xFFxFFx8FxFFxFFkxFFxFFGxFF". "
xFFx23xFFxFFx03xA7x3Fx03x9F7x03x93x2Fx03x87x23x03Ox3Bx27Cx2Fx1B7
x23x13x2Fx1Bx0Bx03x03S". "x03x03Gx03x03x3Bx03x03x2Fx03x03x23x03x03
x17x03x03x0BxBFxA7x8FxFFx9FCxFFxE7KxFFx7BxFFxFFx03". "xFFxCFx03xCF
x9Fx03x9Box03kxA7kkx21xF9x04x01x00x00x02x00x2Cx00x00x00x00x0Ex00
x10x00x00x08". "x8Dx00x01x08x1CHPxA0x00x01x00x0Ex20x28x90x60x81
x82x87x05x0Cx00x08x80PxE1x00x02x04x06x18x88". "8x60x22xC2x01x08x08
x1Cx18pxA0xA4x81x03x1Ex01x10x40xD0xB1xA0x40x8Ax2Ax17xB4x24x18
xA0xE6xC7x04". "x08x1C6PxC0x12xC0xC1x8Ax08x10x24x88xC80xA3xCFx8A
x07x0Cx18x20ix60xA8xD1x835x0Bx5Ex24x90". "x60xA2Kx81x03x0A0xB4x9A
x80x81Wx06x0B6x260x1Ax40xE5xCExA0x18x0BxF4x8CxBAxB1x00x01xA5
x24". "x3BxDAxBCxFAxD2x26xD4x9AxxF1xFEx14x10x10x00x3B";
$GifData[6]= "GIF89ax0Ex00x10x00xEFx00x00Cx03x03x03xFFxFFx2Fx2Fx2F
xBFx03x03sx03x03x8Bx03x03x9B". "x03x03xA7x03x03xB3x03x03gx03x03
xCBx03x03xD7x03x03x7Fx03x03xE3x03x03xFFxB7xB7x3Fx2Bx1BxF7xAB
xAB". "G3x23xF3xA3xA3xEBx97x97xE7x8Fx8FxDFx87x87xDBx7Bx7BxD3ss
xCBkkxC7ccxBFx5Bx5BxBBW". "WxB3OOxAFGGxA7x3Fx3FxA3x3Bx3Bx9B33x97
x2Fx2Fx8Fx2Bx2Bx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "x17x17sx13x13kx0F
x0Fgx0Bx0B_x07x07x5Bx07x07Sx07x07Ox03x03Gx03x03Cx03x03xFFxEB
xDF". "xFFxE3xD3xFFxDBxC7xFFxD3xBBxFFxCFxB3xFFxC7xA7xFFxBFx9B
xFFxBBx93xFFxB3x83xF7xABx7BxEFxA3sxE7x9B". "kxDFx93cxD7x8Bx5BxCF
x83SxCBx7FOxBFx7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7x87". "W3x7FSx2FwO
x2BkGx27_Cx23Sx3Fx1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23x0FxEFxEFxEF". "xE7
xE7xE7xDFxDFxDFxDBxDBxDBxD3xD3xD3xCBxCBxCBxC7xC7xC7xBFxBFxBF
xB7xB7xB7xB3xB3xB3xABxABxABxA7xA7". "xA7x9Fx9Fx9Fx0Fx17x03x17
x1Fx07Ox3Bx2Bx83x83x83x23x2Bx0Fwwwoookkkcccx5B". "x5Bx5BWWWOOOGGGCCC
x3Bx3Bx3B777x17x0Fx07x27x27x27x23x23x23wxFFo". "oxEFggxDF__xCFWx5B
xBFOSxAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23x1Fx17". "x0Bx1FCx17x173
x0Fx13x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAFx97x7FxA7x8Fwx9Fx87o
x9Bx7Fkx93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgSx3F_K7WC3Sx3Fx2Fx9Fx83c". "
x8FwSx83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7Bx7FcosWgkOx5Bc". "GSWx3BGO3
x3FGx2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3x9Bx2FxAFx7Bx1Fx9Bx5Bx13
x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFFxBBxBBxFFx9Bx9BxFFx7Bx7B
xFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "xEFx03x03x2F7x1FxFFxFFxFFx7F
x7Fx7Fx07x07x07x0Bx0Bx0Bx13x13x13x1Bx1Bx1BKKKx97x97x97x93x93". "
x93x8Bx8Bx8Bx5Bx03x03Ox03x03x27Sx1BxE7xE7xFFxC7xC7xFFxABxABxFF
x8Fx8FxFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03xFFx03x03xE3x03x03xCBx03
x03xB3x03x03x9Bx03x03x83x03x03kx03x03SxFFxFFxFF". "xFFxEBxDBxFF
xD7xBBxFFxC7x9BxFFxB3x7BxFFxA3x5BxFFx8Fx3BxFFx7Fx1BxF3sx17xEBo
x0FxDFgx0FxD7_". "x0BxCBWx07xC3Ox03xB7Gx03xAFCx03xFFxFFxFFxFFxFF
xD7xFFxFFxB3xFFxFFx8FxFFxFFkxFFxFFGxFF". "xFFx23xFFxFFx03xA7x3F
x03x9F7x03x93x2Fx03x87x23x03Ox3Bx27Cx2Fx1B7x23x13x2Fx1Bx0Bx03
x03S". "x03x03Gx03x03x3Bx03x03x2Fx03x03x23x03x03x17x03x03x0BxBF
xA7x8FxFFx9FCxFFxE7KxFFx7BxFFxFFx03". "xFFxCFx03xCFx9Fx03x9Box03k
xA7kkx21xF9x04x01x00x00x01x00x2Cx00x00x00x00x0Ex00x10x00x00x08". "
x93x00x03x08x0Cx00xA0xA0Ax83x03x0Bx12x18xA0x60x81xC3x01x05x00
x08x20x98xC0xC0x01x04x08x0Ex1Cx28". "xC0x80x81Dx82x06x06x0Cx20x40
xB2x24x01x89x00x08x18P0xE0xE0Ax01x00x0Ax1Cx60xE9Rx80Mx98". "x05x06
x2Cx60xD8x40xE4x81x82x02cxEAx1Cx80xD1xA2xC5x88x04s6x40Px80x24x83
xA3x28x0Bx20xE8y". "xB0x80x81x880x13x0CxA0jxD0x2AVx90x3Bx15x288x60
x80x40x81xAFx00x2Ax12ExC0x80dx82x93x13". "x09xA6tx9Bx20AAx9Bx03a
xD6xC4x3BPxE0xCDx9Bx03x03x02x00x3B"; $GifData[7]= "GIF89ax0Ex00x10x00
xEFx00x00x03xFFxFFCx03x03x2Fx2Fx2Fx8Bx03x03sx03x03x9Bx03x03xB3". "
x03x03xA7x03x03x7Fx03x03xBFx03x03gx03x03x0Fx17x03Ox3Bx2BG3x23
x3Fx2Bx1Bx7Fx7Fx7FxFFxB7xB7". "xF7xABxABxF3xA3xA3xEBx97x97xE7
x8Fx8FxDFx87x87xDBx7Bx7BxD3ssxCBkkxC7ccxBFx5Bx5BxBBW". "WxB3OO
xAFGGxA7x3Fx3FxA3x3Bx3Bx9B33x97x2Fx2Fx8Fx2Bx2Bx8Bx23x23x83x1F
x1Fx7Fx1Bx1Bw". "x17x17sx13x13kx0Fx0Fgx0Bx0B_x07x07x5Bx07x07Sx07
x07Ox03x03Gx03x03Cx03x03xFFxEBxDF". "xFFxE3xD3xFFxDBxC7xFFxD3xBB
xFFxCFxB3xFFxC7xA7xFFxBFx9BxFFxBBx93xFFxB3x83xF7xABx7BxEFxA3s
xE7x9B". "kxDFx93cxD7x8Bx5BxCFx83SxCBx7FOxBFx7BKxB3sGxABoCxA3kx3F
x9Bcx3Bx8F_7x87". "W3x7FSx2FwOx2BkGx27_Cx23Sx3Fx1FK7x1Bx3Fx2Fx173
x2Bx13x2Bx23x0FxEFxEFxEF". "xE7xE7xE7xDFxDFxDFxDBxDBxDBxD3xD3
xD3xCBxCBxCBxC7xC7xC7xBFxBFxBFxB7xB7xB7xB3xB3xB3xABxABxABxA7
xA7". "xA7x9Fx9Fx9Fx23x2Bx0Fx2F7x1Fx1Bx1Bx1Bx83x83x83x17x1F
x07wwwoookkkcccx5B". "x5Bx5BWWWOOOGGGCCCx3Bx3Bx3B777KKKx27x27x27x23
x23x23wxFFo". "oxEFggxDF__xCFWx5BxBFOSxAFGKx9Fx3FCx937x3Fx83x2F7s
x2Bx2Fcx23x17x0F". "x07x1FCx17x173x0Fx13x23x0Bx0Bx17x07x03x03x03
xB7x9Fx87xAFx97x7FxA7x8Fwx9Fx87ox9Bx7Fkx93". "x7Bcx8Bsx5Bx83kW
x7BcOw_KoWCgSx3F_K7WC3Sx3Fx2Fx9Fx83c". "x8FwSx83kKw_x3FgS3x5BGx2BOx3B
x23C3x1Bx7Bx7FcosWgkOx5Bc". "GSWx3BGO3x3FGx2B7x3Fx27xFFxFFsxEBxDBW
xD7xBBCxC3x9Bx2FxAFx7Bx1Fx9Bx5Bx13x87". "Cx07sx2Bx03xFFxFFxFFxFF
xDBxDBxFFxBBxBBxFFx9Bx9BxFFx7Bx7BxFF__xFFx3Fx3FxFFx1Fx1FxFFx03
x03". "xEFx03x03xE3x03x03xD7x03x03xCBx03x03x07x07x07x0Bx0Bx0Bx13
x13x13xFFxFFxFFx1Fx17x0Bx97x97x97x93x93". "x93x8Bx8Bx8Bx5Bx03x03O
x03x03x27Sx1BxE7xE7xFFxC7xC7xFFxABxABxFFx8Fx8FxFFssxFFSSxFF7". "7
xFFx1Bx1BxFFx03x03xFFx03x03xE3x03x03xCBx03x03xB3x03x03x9Bx03x03
x83x03x03kx03x03SxFFxFFxFF". "xFFxEBxDBxFFxD7xBBxFFxC7x9BxFFxB3
x7BxFFxA3x5BxFFx8Fx3BxFFx7Fx1BxF3sx17xEBox0FxDFgx0FxD7_". "x0B
xCBWx07xC3Ox03xB7Gx03xAFCx03xFFxFFxFFxFFxFFxD7xFFxFFxB3xFFxFF
x8FxFFxFFkxFFxFFGxFF". "xFFx23xFFxFFx03xA7x3Fx03x9F7x03x93x2Fx03
x87x23x03Ox3Bx27Cx2Fx1B7x23x13x2Fx1Bx0Bx03x03S". "x03x03Gx03x03x3B
x03x03x2Fx03x03x23x03x03x17x03x03x0BxBFxA7x8FxFFx9FCxFFxE7KxFF
x7BxFFxFFx03". "xFFxCFx03xCFx9Fx03x9Box03kxA7kkx21xF9x04x01x00x00
x00x00x2Cx00x00x00x00x0Ex00x10x00x00x08". "lx00x03x08x1C8x10x80A
x83x01x10x14HxC0xF0x40x01x02x02x0Fx06x18PxA0xC0x80x03x18x0Fx0C
x80". "x88x90x80xC7x8Fx04x0CPx0Cx20x00x00Ax82x16x0Dpx04x20xA0xA5
xCBx00x29x0Bx90x3CHx13xE6x00x91". "3ix22xD4x88xB3xA4Nx93x3CexFA
xD49xF1xE6x80x9CDx11x18EZSxC1Mx04Lx25x3A5x00". "uhMx90Qx11x9ExB4J
xD3xA5xCBx80x00x3B"; $GifData[8]= "GIF89ax0Ex00x10x00xEFx00x00Cx03x03
x03xFFxFFx9Bx03x03x2Fx2Fx2Fx8Bx03x03sx03x03g". "x03x03xCBx03x03
xA7x03x03xB3x03x03xBFx03x03xE3x03x03x5Bx03x03xD7x03x03x7Fx03
x03xCBkkxFFxB7xB7". "xF7xABxABxF3xA3xA3xEBx97x97xE7x8Fx8FxDFx87
x87xDBx7Bx7BG3x23x3Fx2Bx1BxC7ccxBFx5Bx5BxBBW". "WxB3OOxAFGGxA7
x3Fx3FxA3x3Bx3Bx9B33xD3ssx97x2Fx2Fx8Bx23x23x83x1Fx1Fx7Fx1Bx1Bw". "
x17x17sx13x13kx0Fx0Fgx0Bx0B_x07x07x5Bx07x07Sx07x07Ox03x03Gx03x03C
x03x03xFFxEBxDF". "xFFxE3xD3xFFxDBxC7xFFxD3xBBxFFxCFxB3xFFxC7xA7
x8Fx2Bx2BxFFxBBx93xFFxBFx9BxF7xABx7BxEFxA3sxE7x9B". "kxDFx93cxD7
x8Bx5BxCFx83SxCBx7FOxBFx7BKxB3sGxABoCxA3kx3Fx9Bcx3Bx8F_7x87". "W3
x7FSx2FwOx2BkGx27_Cx23Sx3Fx1FK7x1Bx3Fx2Fx173x2Bx13x2Bx23x0FxEFxEF
xEF". "xE7xE7xE7xDFxDFxDFxDBxDBxDBxD3xD3xD3xCBxCBxCBxC7xC7xC7
xBFxBFxBFxB7xB7xB7xB3xB3xB3xABxABxABxA7xA7". "xA7x9Fx9Fx9Fx97
x97x97x0Fx17x03x17x1Fx07xFFxB3x83x7Fx7Fx7Fwwwx83x83x83Ox3Bx2Bccc
x5B". "x5Bx5BWWWOOOGGGCCCx3Bx3Bx3B777x23x2Bx0Fx27x27x27x23x23x23w
xFFo". "oxEFggxDF__xCFWx5BxBFOSxAFGKx9Fx3FCx937x3Fx83x2F7sx2Bx2Fcx23
x2F7". "x1Fx1FCx17x173x0Fx13x23x0Bx0Bx17x07x03x03x03xB7x9Fx87xAF
x97x7FxA7x8Fwx9Fx87ox9Bx7Fkx93". "x7Bcx8Bsx5Bx83kWx7BcOw_KoWCgS
x3F_K7WC3Sx3Fx2Fx9Fx83c". "x8FwSx83kKw_x3FgS3x5BGx2BOx3Bx23C3x1Bx7B
x7FcosWgkOx5Bc". "GSWx3BGO3x3FGx2B7x3Fx27xFFxFFsxEBxDBWxD7xBBCxC3
x9Bx2FxAFx7Bx1Fx9Bx5Bx13x87". "Cx07sx2Bx03xFFxFFxFFxFFxDBxDBxFF
xBBxBBxFFx9Bx9BxFFx7Bx7BxFF__xFFx3Fx3FxFFx1Fx1FxFFx03x03". "xEF
x03x03x07x07x07ooox0Bx0Bx0Bx13x13x13x1Bx1Bx1BxFFxFFxFFKKKx17x0F
x07kkkx1Fx17". "x0Bx93x93x93x8Bx8Bx8BOx03x03x27Sx1BxE7xE7xFFxC7xC7
xFFxABxABxFFx8Fx8FxFFssxFFSSxFF7". "7xFFx1Bx1BxFFx03x03xFFx03x03
xE3x03x03xCBx03x03xB3x03x03x9Bx03x03x83x03x03kx03x03SxFFxFFxFF". "
xFFxEBxDBxFFxD7xBBxFFxC7x9BxFFxB3x7BxFFxA3x5BxFFx8Fx3BxFFx7F
x1BxF3sx17xEBox0FxDFgx0FxD7_". "x0BxCBWx07xC3Ox03xB7Gx03xAFCx03
xFFxFFxFFxFFxFFxD7xFFxFFxB3xFFxFFx8FxFFxFFkxFFxFFGxFF". "xFFx23
xFFxFFx03xA7x3Fx03x9F7x03x93x2Fx03x87x23x03Ox3Bx27Cx2Fx1B7x23
x13x2Fx1Bx0Bx03x03S". "x03x03Gx03x03x3Bx03x03x2Fx03x03x23x03x03x17
x03x03x0BxBFxA7x8FxFFx9FCxFFxE7KxFFx7BxFFxFFx03". "xFFxCFx03xCFx9F
x03x9Box03kxA7kkx21xF9x04x01x00x00x01x00x2Cx00x00x00x00x0Ex00x10
x00x00x08". "x95x00x03x08x04x40xB0x20x00x81x08x010x28x20x60xC1x82
x04x02x0A08x18x00x80x01x02x04x04x24P". "x20x40x00Fx03x07x010xCCx98
xD1x81xC7x88x00x06x88xF4xxA0xA0x82x8Cx05RZDx40xA0x25xC1x03". "x04
x10x80x1CPxF1bxC3x06x1Cx09xECxE4Y1x27x82xA34Sx12xB5x28x00Ax81xA7
x08x04x80x1Ch". "x40xA3Mx00x07x0EHx0Dx991xC1xD5x03x09x12x10x90Ix00
xA2x80x03x0Bx0Ex20Px20VfUx8Fl". "x3BBxDCYxF1xA9xDDxBBJx07x1A48x80
xA8xC0xBEx80x03x0Bx0Cx08x00x3B"; $GifData[9]= "GIF89ax0Ex00x10x00xEFx00
x00Cx03x03x03xFFxFFx2Fx2Fx2FxB3x03x03x8Bx03x03sx03x03x9B". "x03x03
xBFx03x03gx03x03xCBx03x03xA7x03x03xE3x03x03x7Fx03x03xD7x03x03
xEFx03x03x2F7x1FxFFxB7xB7". "xF7xABxABxF3xA3xA3xEBx97x97xE7x8F
x8FxDFx87x87xDBx7Bx7BxD3ssxCBkkxC7ccxBFx5Bx5BxBBW". "WxB3OOxAFGG
xA7x3Fx3FxA3x3Bx3Bx9B33x97x2Fx2Fx8Fx2Bx2Bx8Bx23x23x83x1Fx1Fx7F
x1Bx1Bw". "x17x17sx13x13kx0Fx0Fgx0Bx0B_x07x07x5Bx07x07Sx07x07Ox03
x03Gx03x03Cx03x03xFFxEBxDF". "xFFxE3xD3xFFxDBxC7xFFxD3xBBxFFxCF
xB3xFFxC7xA7xFFxBFx9BxFFxBBx93xFFxB3x83xF7xABx7BxEFxA3sxE7
x9B". "kxDFx93cxD7x8Bx5BxCFx83SxCBx7FOxBFx7BKxB3sGxABoCxA3kx3F
x9Bcx3Bx8F_7x87". "W3x7FSx2FwOx2BkGx27_Cx23Sx3Fx1FK7x1Bx3Fx2Fx173x2B
x13x2Bx23x0FxEFxEFxEF". "xE7xE7xE7xDFxDFxDFxDBxDBxDBxD3xD3xD3
xCBxCBxCBxC7xC7xC7xBFxBFxBFxB7xB7xB7xB3xB3xB3xABxABxABxA7
xA7". "xA7x9Fx9Fx9FG3x23x0Fx17x03Ox3Bx2Bx3Fx2Bx1Bx7Fx7F
x7Fwwwoookkkcccx5B". "x5Bx5BWWWOOOGGGCCCx3Bx3Bx3B777xFFxFFxFFx27x27
x27x23x23x23wxFFo". "oxEFggxDF__xCFWx5BxBFOSxAFGKx9Fx3FCx937x3Fx83
x2F7sx2Bx2Fcx23KK". "Kx1FCx17x173x0Fx13x23x0Bx0Bx17x07x03x03x03xB7
x9Fx87xAFx97x7FxA7x8Fwx9Fx87ox9Bx7Fkx93". "x7Bcx8Bsx5Bx83kW
x7BcOw_KoWCgSx3F_K7WC3Sx3Fx2Fx9Fx83c". "x8FwSx83kKw_x3FgS3x5BGx2BO
x3Bx23C3x1Bx7Bx7FcosWgkOx5Bc". "GSWx3BGO3x3FGx2B7x3Fx27xFFxFFsxEB
xDBWxD7xBBCxC3x9Bx2FxAFx7Bx1Fx9Bx5Bx13x87". "Cx07sx2Bx03xFFxFF
xFFxFFxDBxDBxFFxBBxBBxFFx9Bx9BxFFx7Bx7BxFF__xFFx3Fx3FxFFx1Fx1F
xFFx03x03". "x23x2Bx0Fx17x1Fx07x07x07x07x13x13x13x0Bx0Bx0Bx17x0F
x07x1Bx1Bx1Bx83x83x83x1Fx17x0Bx97x97x97x93x93". "x93x8Bx8Bx8Bx5B
x03x03Ox03x03x27Sx1BxE7xE7xFFxC7xC7xFFxABxABxFFx8Fx8FxFFssxFFSS
xFF7". "7xFFx1Bx1BxFFx03x03xFFx03x03xE3x03x03xCBx03x03xB3x03x03
x9Bx03x03x83x03x03kx03x03SxFFxFFxFF". "xFFxEBxDBxFFxD7xBBxFFxC7
x9BxFFxB3x7BxFFxA3x5BxFFx8Fx3BxFFx7Fx1BxF3sx17xEBox0FxDFgx0F
xD7_". "x0BxCBWx07xC3Ox03xB7Gx03xAFCx03xFFxFFxFFxFFxFFxD7xFFxFF
xB3xFFxFFx8FxFFxFFkxFFxFFGxFF". "xFFx23xFFxFFx03xA7x3Fx03x9F7x03
x93x2Fx03x87x23x03Ox3Bx27Cx2Fx1B7x23x13x2Fx1Bx0Bx03x03S". "x03x03G
x03x03x3Bx03x03x2Fx03x03x23x03x03x17x03x03x0BxBFxA7x8FxFFx9FC
xFFxE7KxFFx7BxFFxFFx03". "xFFxCFx03xCFx9Fx03x9Box03kxA7kkx21xF9
x04x01x00x00x01x00x2Cx00x00x00x00x0Ex00x10x00x00x08". "x8Ex00x03
x08x0Cx00xA0x60xC1x81x08x0Bx2AHx90xE0x40x81x83x03x01x10Px60x40
xC1x80x01x14x11x00x10". "x08x00xC1Dx03x0Cx0Ax14x18pxC0x00x00x01x04
x0Dx10Pipx40x02x03x0FSxAEx24xD02x81x02x9A". "x02x3Ax12xD89x60AxC3
x06x07px12x2CxE0xF1x22IxA0Bx09vDPx80x00x83x05AOx0ExCCi". "xF0xE9x00
x9Cx06xB3x02xzx40cNx97x0Dx168x60xxA0x81Ix019x0Dx185ZxD2xEBPx91p". "E
x16DxABTxEBx5CxBAx02xD1xEAxDDx8B0x20x00x3B";
######################################################
sub Number2gif{ my($Number,$digits)=@_;
my($Ascii_Num,$Zeropad,$n_gif,$Gif_Answer,$logsrc,$pal);
my($gif_log_scr_packed,$gif_transps,$gif_img_desc,$gif_dat,$packed_was);
$Gif_Answer="$gifheader";
#GIF89a
$logsrc=pack('S2C3',$digx_size*$digits,$digy_size,pack('B8','01100000'),0,0);
$Gif_Answer .=$logsrc; $Ascii_Num=''.$Number;
$digits=($digits>length($Ascii_Num)?$digits:length($Ascii_Num));
$Zeropad='0' x $digits;
substr($Zeropad,- length($Ascii_Num),length($Ascii_Num))=$Ascii_Num;
$Ascii_Num=$Zeropad; foreach(0..length($Ascii_Num)-1){
$n_gif=0+substr($Ascii_Num,$_,1);
$pal=substr($GifData[$n_gif],13,256*3);
$gif_log_scr_packed=unpack('B8',substr($GifData[$n_gif],10,1));
$gif_transps=substr($GifData[$n_gif],13+256*3,8);
$gif_img_desc=substr($GifData[$n_gif],13+256*3+8,10);
$gif_dat=substr($GifData[$n_gif],13+256*3+8+10,length($GifData[$n_gif]));
$gif_dat=substr($gif_dat,0,length($gif_dat)-1);
substr($gif_img_desc,1,2)=pack('S',$_*$digx_size);
$packed_was=unpack('B8',substr($gif_img_desc,9,1));
substr($gif_img_desc,9,1)=pack('B8','1'.
substr($packed_was,1,1).
substr($gif_log_scr_packed,4,1).'00'.substr($gif_log_scr_packed,5,3));
$Gif_Answer.=$gif_transps.$gif_img_desc.$pal.$gif_dat;
}
$Gif_Answer.='x3B'; return $Gif_Answer;
}
######################################################
sub urldecode{
local($val)=@_;
$val=~s/+/ /g; $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge;
return $val;
}
sub debug_err{ open DEBUGFILE,">>debug.txt";
print DEBUGFILE $ENV{'SCRIPT_NAME'}.' '.scalar(localtime).' '.@_."\n";
close DEBUGFILE; } $query=$ENV{'QUERY_STRING'};
if($query eq ''){print "Content-Type: image/gif\n\n$GifData[0]";}
else{
@fields=split /&/,$query; foreach(@fields){
if(/^id=(.*)/){$id=urldecode($1);}
if(/^dig=(.*)/){$dig=urldecode($1);} }
$digits=$dig;
$digits=9 unless($dig);
$cur_ip=$ENV{'REMOTE_ADDR'};
$cur_time=time;
open DATA,"+<$datafile" || debug_err("Cannot open $datafile $!");
@Dat=<DATA>;
chomp(@Dat); %Counters=@Dat;
($count,$ip,$t)=split /s+/,$Counters{$id};
$count++ if(($ip!=$cur_ip)||($cur_time-$t>30));
$ip=$cur_ip; $t=$cur_time;
$Counters{$id}=join ' ',$count,$ip,$t;
seek DATA,0,0;
foreach(keys %Counters){ print DATA "$_\n";
print DATA "$Counters{$_}\n"; } truncate(DATA,tell(DATA));
close DATA;
print "Content-Type: image/gif\n\n"; print Number2gif($count,$digits); }

Если вам циферки не понравились вы их легко сможете заменить.Новые .gif'ы либо считайте из файла, либо можете продолжить мою традицию и запихнуть их в строку, в чем вам поможет такой скрипт file2str. (Да и еще не забудьте сменить тогда в скрипте константы $digx_size и $digy_size на новый размер цифр.)

#!/usr/bin/perl 
#file2str unless(@ARGV){die "Usage: file2str file strfile\n";}
open F1,"$ARGV[0]" || die "Cannot open $ARGV[0] $!\n";
open F2,">$ARGV[1]" || die "Cannot open $ARGV[1] $!\n";
binmode(F1); sysread F1,$filedata,-s F1; close(F1);
for($i=0;$i<=length($filedata)/32;$i++){
$data=substr($filedata,$i*32,32);
$data=~s/(W)/sprintf("\x%02X",unpack('C',$1))/eg;
print F2 ""$data".(length($data)==32?".":";")."\n";" }
close(F2);




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / Разное /

Учебное пособие по CGI-программированию Страница 30. Счётчик посещений
08-04-2010   

Наверное тоже одним из часто встречающихся приложений CGI являются счетчики посещений. Они стоят практически на каждой страничке, возможно даже и у вас. Но иногда вас не устраивает тот факт, что счетчик лежит где-то в другом месте... подробнее

Кол. просмотров: общее - 3391 сегодня - 0

Учебное пособие по CGI-программированию Страница 28. Кто посещает мою страничку?
08-04-2010   

Вам иногда хотелось наверное узнать,кто же смотрит на вашу страничку,откуда и когда ваша страничка посещалась. Бывают такие вопросы? Кто-то считает,что ответить на них нельзя. Но вы не верьте этому расхожему мнению... подробнее

Кол. просмотров: общее - 3067 сегодня - 1

Учебное пособие по CGI-программированию Страница 27. Trics and traps
08-04-2010   

Я так решил назвать эту часть,потому что это название больше всего соответствует. Я вам в этой части расскажу о всяких тонких и неочевидных местах и о том как с этим боротся... подробнее

Кол. просмотров: общее - 3299 сегодня - 0

Учебное пособие по CGI-программированию Страница 26. Несколько слов об отладке
08-04-2010   

CGI-программы -не самые простые в отладке,по сложности отладки они способны сравнится лишь с отладкой драйверов. Вся сложность заключается в том,что скрипт выполняется не как обычная программа. Он выполняется в специальной среде сервера,которая создается при клиентском запросе... подробнее

Кол. просмотров: общее - 3261 сегодня - 0

Учебное пособие по CGI-программированию Страница 25. Анимация
08-04-2010   

Когда говорят о каком-то популярном сайте,то частенько к преимуществам относят и анимацию. Действительно,когда изображение изменяется (и особенно к месту ;)),то это смотрится и пользователю нравится... подробнее

Кол. просмотров: общее - 3101 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects