Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GIF или PNG без модуля GD и ImageMagic 
:(
    Опции темы
djkostya
Дата 16.11.2006, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Ребят где-то в какой-то книжки видел пример как сгенерировать простые чила (не важно по красоте)
Не подскажете как можно сделать без использования GD или ImageMagic
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 17.11.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: нет
Всего: 3



а какая связь между простыми числами и графическими библиотеками?
и какая связь с темой топика?

PS: по поводу генерации погугли на темы "решето Эратосфена" и "тест Рабина-Миллера" (может "Раббина")
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
djkostya
Дата 17.11.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 16.5.2006
Где: Москва

Репутация: 1
Всего: 2



Мне нужно сделать счётчик посещений...
Я просто не так выразился (простые числа)
PM MAIL WWW ICQ   Вверх
korob2001
Дата 27.11.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Без граф. библиотек можно обойтись, но тогда твой счётчик будет текстовый. Пожалуй для счётчика посещений это и есть самы оптимальный вариант. Да и к тому же зачем генерировать, просто создай файл, записывай в него имя файла и кол-во посещений, если такая запись уже есть, то инкрементируй счётчик.
Вот простейший пример счётчика на основе DBM, просто вставляй этот код в начало каждого файла:
Код

#!/usr/bin/perl
use DB_File;
my %counter = ();
my $count = 0;
tie(%counter, "DB_File", "/home/localhost/cgi-bin/counter") or die $!;
if (exists $counter{$ENV{SCRIPT_NAME}} ) {
    $count = ++$counter{$ENV{SCRIPT_NAME}};
} else {
    $count = $counter{$ENV{SCRIPT_NAME}} = 1;
}
untie(%counter);

# Следующий код нужет только для демонстрации.
print "Content-type: text/html\n\n";
print "<html><body>";
print "Вы у нас $count посетитель";
print "</body></html>";

Только это простейший пример, если нужно подсчитывать посещения с различных IP адресов, то придётся ещё создать файл, для их учёта.

Это сообщение отредактировал(а) korob2001 - 27.11.2006, 22:53


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
GoodBoy
Дата 28.11.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Цитата(korob2001 @  27.11.2006,  22:47 Найти цитируемый пост)
Без граф. библиотек можно обойтись, но тогда твой счётчик будет текстовый

Тут ты не прав...  Запросто можно сгенерить вручную куртинку...  Помнится лет 6 назад я писал такой счётчик...

Пример его работы: user posted image

Правда есть у этого скрипта один минус.  Он генерит картинку в формате BMP.  Можно сделать и в GIF, но в тот раз я с этим не стал разбираться, а сейчас - некогда... :-)))))

Вызов скрипта осуществляется следующим образом:
<img scr="http://www.domain.ru/cgi-bin/counter.cgi?user=Name&digit=5"> 

В этом вызове определяется пользователь, для которого нужно вернуть значение счетчика и количество цифр в возвращаемом изображении. 

Формат файла записей для скрипта следующий:
Код
Vitalij||13995
Sasha||237
Booka||6
Igos||3


Если пользователь найден, то значение счетчика для него увеличивается на 1 и сохраняется в файле.   Если запрошенный пользователь не существует, то производится выход из программы. 

Далее происходит вычисление размеров изображения в соответствии с запросом пользователя.   Сразу отмечу, что в качестве исходных используются изображения цифр формата 16х24 пикселов.  После этого происходит формирование заголовка изображения в соответствии с вычисленными размерами. 

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

После того, как заголовок сформирован, происходит формирование непосредственно самого графического изображения цифр счетчика, после чего оно отправляется в браузер пользователя.

В некоторых случаях, если не увидите в браузере изображение, то попробуйте в качестве типа указать: image/x-bitmap.

В файле скрипта описаны массивы @header, @dig и @logo представляющие, соответственно, заголовок для изображения, массив из кодов изображений десяти цифр и изображение небольшого логотипчика, выводимого, перед цифрами в счетчике.


Код
#!/usr/bin/perl

@header=(
0x42,0x4D,0xF6,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x00,0x00,0x00,0x28,0x00,
0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0xFC,0x00,0xFC,0x84,0x84,0x00,0x00,0x00,
0x00,0x83,0x00,0x00,0x00,0x83,0x00,0x00,0x00,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x83,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x83,0x00,0x00,
0x00,0x83,0x00,0x00,0x00,0x00);

@dig=(
[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x10,0x00,0x01,0x10,0x00,0x01,0x11,
0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x01,0x10,0x00,0x01,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x00,0x01,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x11,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x00,0x00,0x01,0x11,
0x11,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x10,0x00,0x00,0x11,0x11,0x00,0x11,
0x11,0x11,0x00,0x00,0x01,0x11,0x00,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x11,0x11,0x10,0x00,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x01,0x11,
0x11,0x11,0x11,0x11,0x10,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x11,
0x11,0x00,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x11,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x10,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x10,0x00,0x01,0x11,0x00,0x01,0x11,
0x11,0x00,0x00,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x00,0x11,0x11,0x10,0x00,0x11,
0x11,0x10,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x11,
0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x10,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x00,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x00,0x00,0x01,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x00,0x11,0x11,0x10,0x00,0x11,0x11,
0x11,0x00,0x01,0x11,0x10,0x00,0x11,0x11,0x11,0x10,0x00,0x11,0x10,0x00,0x11,0x11,
0x11,0x11,0x00,0x01,0x10,0x00,0x11,0x11,0x11,0x11,0x10,0x00,0x10,0x00,0x11,0x11,
0x11,0x11,0x11,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x00,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x10,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x00,0x00,0x11,0x11,0x00,0x01,0x11,
0x11,0x00,0x00,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,
0x11,0x10,0x11,0x11,0x10,0x00,0x01,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x01,0x11,
0x11,0x10,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,
0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x01,0x11,0x11,0x11,0x11,0x11,
0x11,0x10,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x01,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,
0x11,0x10,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x00,0x00,0x00,0x00,0x00,0x01,0x11,
0x11,0x00,0x01,0x00,0x00,0x01,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,
0x11,0x10,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x01,0x11,0x11,0x11,
0x11,0x11,0x10,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,
0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,
0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x01,0x11,0x11,0x11,
0x11,0x11,0x11,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x01,0x11,0x11,0x11,
0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x00,0x01,0x11,0x11,0x11,0x01,0x11,0x11,0x00,0x00,0x11,0x11,
0x10,0x01,0x11,0x11,0x10,0x00,0x01,0x11,0x11,0x00,0x11,0x11,0x11,0x00,0x00,0x11,
0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x11,0x11,0x11,
0x11,0x10,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x00,0x00,0x11,0x10,0x00,0x01,0x11,
0x11,0x00,0x01,0x11,0x11,0x00,0x01,0x11,0x11,0x00,0x01,0x11,0x11,0x00,0x01,0x11,
0x11,0x10,0x00,0x11,0x00,0x00,0x01,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x11,0x11,
0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,0x11,0x10,0x00,0x00,0x00,0x11,0x11,0x11,
0x11,0x00,0x00,0x01,0x00,0x00,0x11,0x11,0x11,0x00,0x00,0x11,0x10,0x00,0x01,0x11,
0x11,0x00,0x01,0x11,0x11,0x00,0x01,0x11,0x11,0x00,0x01,0x11,0x11,0x00,0x01,0x11,
0x11,0x10,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11],

[0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x11,0x11,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x01,0x11,
0x11,0x11,0x10,0x00,0x00,0x10,0x00,0x11,0x11,0x10,0x00,0x00,0x00,0x00,0x00,0x11,
0x11,0x10,0x00,0x11,0x11,0x00,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,0x11,0x10,0x00,0x11,
0x11,0x00,0x01,0x11,0x11,0x10,0x01,0x11,0x11,0x10,0x00,0x11,0x11,0x00,0x01,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x10,0x00,0x00,0x01,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11]);

@logo=(
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x01,0x11,0x11,0x10,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x00,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x01,0x11,0x11,0x10,0x11,0x11,
0x11,0x11,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x00,0x01,0x11,0x11,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x11,0x11,0x11,0x11,0x11,0x01,0x11,0x00,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x00,0x00,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x11,0x11,0x11,
0x11,0x11,0x00,0x01,0x11,0x11,0x11,0x11,0x11,0x11,0x01,0x11,0x11,0x11,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x00,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x10,0x11,0x11,0x11,0x11,0x00,0x11,0x10,0x11,0x11,0x11,
0x11,0x11,0x00,0x00,0x00,0x10,0x11,0x11,0x11,0x11,0x11,0x00,0x00,0x00,0x11,0x11,
0x11,0x11,0x11,0x11,0x10,0x00,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x11,
0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11);

%FORM={};
$x_size=16;
$y_size=24;

&parseform;

$user=$FORM{'user'};
$digits_in_image=$FORM{'digit'};

open COUNTF, "<counter.dat";
@countrec=<COUNTF>;
close COUNTF;
$counter=0;
for ($i=0; $i<@countrec; $i++)
  {  if ($countrec[$i]=~/$FORM{user}/)
       {  @records=split(/\|\|/, $countrec[$i]);
          $records[1]++;
          $counter=$records[1];
          $countrec[$i]=$records[0]."||".$records[1]."\n";
       }
  }
exit if ($counter==0);
open COUNTF, ">counter.dat";
flock COUNTF, 2;
print COUNTF @countrec;
flock COUNTF, 8;
close COUNTF;

$digits_in_image+=1;

$image_size=$digits_in_image*$x_size*$y_size*2; # полный размер изображения
$ret_size=$image_size+118;                      # полный размер файла

@ret=@header;

$ret[2]=$ret_size-(int($ret_size/256)*256);     # младший байт размера файла
$ret[3]=int($ret_size/256);                     # старший байт размера файла
$ret[34]=$image_size-(int($image_size/256)*256);# младший байт размера изображения
$ret[35]=int($image_size/256);                  # старший байт размера изображения
$ret[18]=$digits_in_image*$x_size;              # размер изображения по оси Х

@count=split (//, $counter);
if (($digits_in_image-1)>length($counter))
  {  for ($i=0; $i<($digits_in_image-1-length($counter)); $i++)
       {  unshift @count, 0;
       }
  }


for ($i=0; $i<24; $i++)
  {  for ($j=0; $j<8; $j++)
       {  push @ret, $logo[$i*8+$j];
       }
     for ($k=0; $k<@count; $k++)
       {  for ($j=0; $j<8; $j++)
            {  push @ret, $dig[$count[$k]][$i*8+$j];
            }
       }
  }

# ---------- For write to file -----------
# open BMPF, ">counter.bmp";
# foreach $byte (@ret)
#   {  print BMPF chr($byte);
#   }
# close BMPF;
# ----------------------------------------

# -------- For write to brouser ----------
print "Content-Type: image/bmp\n\n";
foreach $byte (@ret)
  {  print chr($byte);
  }
# ----------------------------------------

sub parseform
{  local($name, $value, $pair, $buffer, @pairs);

   @pairs=split(/&/, $ENV{'QUERY_STRING'});
   foreach $pair (@pairs)
     {  ($name, $value)=split(/=/, $pair);
        $value=~tr/+/ /;
        $value=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $FORM{$name}=$value;
     }
   return(1);
}



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1266 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.