|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
|
Ответов: 1
|
09-01-12 11:23
|
|
   Web - программирование
|
|
|
   Программирование под ОС
|
|
|
   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 являются счетчики посещений. Они стоят практически на каждой страничке, возможно даже и у вас. Но иногда вас не устраивает тот факт, что счетчик лежит где-то в другом месте... подробнее
|
Кол. просмотров: общее - 5026 сегодня - 0
|
|
Вам иногда хотелось наверное узнать,кто же смотрит на вашу страничку,откуда и когда ваша страничка посещалась.
Бывают такие вопросы? Кто-то считает,что ответить на них нельзя. Но вы не верьте этому расхожему мнению... подробнее
|
Кол. просмотров: общее - 4389 сегодня - 1
|
|
Я так решил назвать эту часть,потому что это название больше всего соответствует.
Я вам в этой части расскажу о всяких тонких и неочевидных местах и о том как с этим боротся... подробнее
|
Кол. просмотров: общее - 4851 сегодня - 1
|
|
CGI-программы -не самые простые в отладке,по сложности отладки они способны сравнится лишь с отладкой драйверов. Вся сложность заключается в том,что скрипт выполняется не как обычная программа. Он выполняется в специальной среде сервера,которая создается при клиентском запросе... подробнее
|
Кол. просмотров: общее - 4604 сегодня - 1
|
|
Когда говорят о каком-то популярном сайте,то частенько к преимуществам относят и анимацию. Действительно,когда изображение изменяется (и особенно к месту ;)),то это смотрится и пользователю нравится... подробнее
|
Кол. просмотров: общее - 4353 сегодня - 1
|
|
|
|