Perl - специальный справочник


           

Perl. Специальный справочник - стр. 328


Приложение использует два файла данных для хранения двух последних реплик. (Я использую отдельные текстовые файлы для каждой реплики, чтобы сделать хранилище текстов более защищенным с точки зрения блокировки файлов, а приложение — более надежным.) При желании можно изменить код и выводить на экран больше реплик.

Устанавливаем период обновления HTML

Наверняка вам захочется изменить по крайней мере одно — это пятисекундный период обновления, используемый данным приложением. Для этого в строке файла chat1.cgi; просто впишите требуемое количество секунд:

"<meta HTTP-EQUIV=\"refresh\" CONTENT=\"5\">",

Очищаем обновленные элементы HTML

Надо сделать еще одно замечание. Оно касается CGI.pm. Когда пользователь посылает форму, элементы управления которой содержат данные, а ваш сценарий возвращает ее без изменений, CGI.pm копирует данные из старых элементов управления в новые. Другими словами, предположим, что форма включает текстовую область:

$co->textarea(

-name=>'textarea',

-default=>'',

-rows=>4,

-columns=>40)

Если пользователь вводит текст, а затем передает его сценарию, тот может прочитать данные стандартными CGI-методами. Однако, когда вы возвращаете Web-страницу с аналогичной формой, CGI.pm восстанавливает в текстовой области исходный текст (даже если в качестве текста по умолчанию задана пустая строка). В приложении результат будет таков: когда пользователь отсылает набранный текст, он воспринимается сценарием, но не исчезает из текстовой области. Чтобы CGI.pm обновлял элементы управления значениями по умолчанию, атрибут -override

нужно установить в значение истина:

$co->textarea(

-name=>'textarea',

-default=>'',

-override=>1,

-rows=>4,

-columns=>40

)

Теперь текстовая область будет очищаться после прочтения комментария, к чему вы и стремились.

Листинг 21.1. chat.htm

<HTML>

<HEAD>

<TITLE>Chat</TITLE>

<FRAMESET ROWS="150,*">

<NOFRAMES>Sorry, you need frames to use chat.</NOFRAMES>




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