Поиск

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

В этом разделе в качестве примера мы рассмотрим настраиваемую гостевую книгу Web-сервера. Под гостевой книгой мы подразумеваем форму HTML, в которой пользователь оставляет свое имя, адрес и комментарии. Гостевая книга может использоваться для обратной связи по данной теме, для организации простой доски объявлений или для отправки вопроса в справочную службу. Все данные сохраняются в файле и могут быть выведены после заполнения формы; кроме того, они выводятся на собственной Web-странице.

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

Форму должна обрабатывать CGI-программа /cgi-bin/helpdesk.cgi. Текст этой программы представлен в листинге 18.8. Если вы хотите поместить программу в другое место или назвать ее как-нибудь иначе, измените URL в коде формы, приведенной в листинге 18.7.

Большая часть кода листинга 18.8 должна быть вам понятна, обратите лишь внимание на следующее.

  • Данная форма не может обойтись без функций get_lock() и release_lock(). Как вы знаете, одновременно может быть запушено несколько экземпляров одной CGI-программы. Это означает, что с файлом журнала может работать сразу несколько экземпляров программы helpdesc.cgi. Поэтому перед выполнением операции записи в файл его нужно заблокировать. Перед операцией чтения файл блокировать не нужно, поскольку чтение файла в тот момент, когда в него производится запись другим процессом, не вызывает никаких опасных последствий.
  • Эта CGI-программа предусматривает два варианта использования. При вызове из формы, приведенной в листинге 18.7, она добавляет новые записи в файл журнала. При вызове не из формы — отображает содержимое файла журнала.