Чтение онлайн

на главную - закладки

Жанры

Интернет решения от доктора Боба

Swart Bob

Шрифт:

3.4. Web Magic

Теперь вы уже знаете что, мы можем писать мощные Интернет приложения любого сорта с помощью Дельфи. Тем не менее, я как web мастер популярного web сайта, я очень часто чувствую нужду в приложениях поддержки; инструменте который бы мне помог обслуживать мой web сайт. Например, счетчики, гостевые книги, детектор мертвых ссылок, автоматический аплоадер (для публикации новых страниц) и даунлоадер (для автоматического получения файлов с сети).

Поскольку не каждый использует Client/Server версию Delphi 3, мы используем только "голые кости" (bare bones)

технологию, такую как мой модуль DrBobCGI или Microsoft WinInet DLL и модули импорта доступные бесплатно.

3.4.1. Счетчик

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

Для отслеживания количества посетителей я просто создан однострочный файл, назвав его "counter", который содержит количество посещений. Единственная вещь, которая нам требуется, это простая CGI программа, которая читает этот файл, увеличивает на единичку и записывает обратно. Конечно, прекрасно при этом показывать посетителю эту информацию или в виде картинки или в виде простого текстового сообщения.

{$APPTYPE CONSOLE}

{$I-}

var

f: Text;

i: Integer;

begin

System.Assign(f,'counter');

reset(f);

if IOResult = 0 then readln(f,i)

else i := 0;

Inc(i);

rewrite(f);

writeln(f,i);

close(f);

if IOResult <> 0 then { skip };

writeln('Content-type: text/html');

writeln;

writeln('<HTML>');

writeln('<BODY>');

writeln('<CENTER>');

writeln('You are user <B>',i,'</B> of Dr.Bob''s Delphi Clinic');

writeln('</CENTER>');

writeln('</BODY>');

writeln('</HTML>')

end.

Вышеприведенная программа показывает текущее значение в виде текстового сообщения, которое выводится в отдельном фрейме:

<HTML>

<FRAMESET ROWS="64,*">

<FRAME SRC=http://www.drbob42.com/cgi-bin/hitcount.exe? NAME="Head">

<FRAME SRC="guest.htm"NAME="Main">

</FRAMESET>

</HTML>

Это

очень простое CGI приложение. Оно даже не получает ввода, просто преобразовывает удаленный файл на web сервере и возвращает динамическую страницу. Позвольте теперь сделать фокус на более сложном CGI приложении – таком которое требует ввода данных – например гостевой книге.

3.4.2. Гостевая книга

Подлинный CGI пример: приложение – гостевая книга (в котором спрашиваем имя и небольшой комментарий), всего лишь несколько строк на Дельфи.

Сначала CGI форма:

<HTML>

<BODY>

<H2>Dr.Bob's Guestbook</H2>

<FORM ACTION="http://www.drbob42.com/cgi-bin/guest.exe" METHOD=POST

Name: <INPUT TYPE=text NAME=name<BR>

Comments: <TEXTAREA COLS=42 LINES=4 NAME=comments>

<INPUT TYPE=SUBMIT VALUE="Send Comments to Dr.Bob">

</FORM>

</BODY>

</HTML>

Теперь консольное (Дельфи) приложение:

program CGI;

{$I-}

{$APPTYPE CONSOLE}

uses

DrBobCGI;

var

guest: Text;

Str: String;

begin

Assign(guest,'guest'); // assuming that's the guestbook

Append(guest);

if IOResult <> 0 then // open new guestbook

begin

Rewrite(guest);

writeln(guest,'<HTML');

writeln(guest,'<BODY')

end;

writeln(guest,'Date: ',DateTimeToStr(Now),'<BR');

writeln(guest,'Name: ',Value('name'),'<BR');

writeln(guest,'Comments: ',Value('comments'),'<HR');

reset(guest);

writeln('Content-type: text/html');

writeln;

while not eof(guest) do // now output guestbook itself

begin

Поделиться:
Популярные книги

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Мастер 2

Чащин Валерий
2. Мастер
Фантастика:
фэнтези
городское фэнтези
попаданцы
технофэнтези
4.50
рейтинг книги
Мастер 2

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Имя нам Легион. Том 3

Дорничев Дмитрий
3. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 3

Запасная дочь

Зика Натаэль
Фантастика:
фэнтези
6.40
рейтинг книги
Запасная дочь

Убивать чтобы жить 7

Бор Жорж
7. УЧЖ
Фантастика:
героическая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 7

У врага за пазухой

Коваленко Марья Сергеевна
5. Оголенные чувства
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
У врага за пазухой

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Генерал Скала и ученица

Суббота Светлана
2. Генерал Скала и Лидия
Любовные романы:
любовно-фантастические романы
6.30
рейтинг книги
Генерал Скала и ученица

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Его маленькая большая женщина

Резник Юлия
Любовные романы:
современные любовные романы
эро литература
8.78
рейтинг книги
Его маленькая большая женщина

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит