Лабораторная работа №3 (CGI)
⇐ ПредыдущаяСтр 2 из 2 “Создание гостевой книги” Гостевые книги или “книги отзывов и предложений” стали неотъемлемой частью любого хорошего сайта. Ведь это – первый шаг к созданию обратной связи с посетителями сайта. Гостевая книга – это программа, предоставляющая посетителю просмотреть отзывы других посетителей сайта, а также добавить свой отзыв или сообщение. Нижеследующую гостевую книгу можно использовать автономно, используя шаблоны. Основные части создаваемой гостевой книги: · 1. форма для добавления сообщения в Книгу. Включает поля ИМЯ, E-MAIL, СООБЩЕНИЕ и др. · 2. страница, выводящая ошибку ввода данных. · 3. страница с подтверждением добавления сообщения в Книгу. · 4. страница, формирующая собственно Книгу. Здесь программа должна быть как можно гибче к формированию вывода отдельной записи Книги. Параметры конфигурации программы: $MY_DIR = "/home/dolgov/public_html/"; $ADD_HTML = $MY_DIR. "gbaddrec.htm"; # шаблон для благодарности за запись $BOOK_HTML = $MY_DIR. "gbbook.htm"; # шаблон для записей книги $ERROR_HTML = $MY_DIR. "gberror.htm"; # шаблон для ошибок ввода $BOOK_FILE = $MY_DIR. "/cgi-bin/book.txt"; # собственно книга Первый шаг – получение, разбор и анализ входных данных. В данной книге используются минимум анкетных данных – Имя посетителя, его e-mail, сообщение. Если в URL-скрипта содержится что-либо в строке запроса (query-string), то выполняется вывод записей в Книге (н-р: http://…/cgi-bin/gbook.pl?records). Если обнаружены ошибки во входной информации, пользователю отсылается шаблон с сообщением о неправильно заполненной форме (указываются незаполненные поля). # получаем список параметров из входного потока &parse_form; if (length($ENV{'QUERY_STRING'})) { $command = "BOOK"; } else { $username = $FORM{'name'}; $message = $FORM{'text'};
$email = $FORM{'email'}; # проверка на наличие ошибок ввода if(($username eq "")||($message eq "")) { $VAR{'error_fields'}.= "Имя посетителя<br>\n" if (!$username); $VAR{'error_fields'}.= "Текст сообщения<br>\n" if (!$message); $TEMPLATE_HTML = $ERROR_HTML; } else { $command = 'ADDRECORD'; } } Теперь в зависимости от команды, выполняем программные действия. 1. Добавляем сообщение в Книгу (command = “ADDRECORD”) Для простоты фиксации времени добавления сообщения в Книгу, составим строковую переменную $mestime в формате DD.MM.YYYY HH:MM. # работа с текущей датой и временем ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year = 1900 + $year; $mon++; my $mestime = sprintf("%.2d.%.2d.%4d %.2d:%.2d", $mday,$mon,$year,$hour,$min);
Информационная запись в Книге будет представляться следующим образом my $mes = sprintf("!R>>%s>>%s>>%s", $username, $mestime, $email);Далее обработаем сообщение и заменим символ “перевод каретки” на символ “абзац”. $message =~ s/\r+/\n/g; # обработка текста (каретку -> абзац)В завершении, запись в начало Книги нового сообщения: # открытие книги и списывание всех данных open(GBOOK, $BOOK_FILE); @oldtext = <GBOOK>; close(GBOOK); # открытие книги для записи open(GBOOK, ">".$BOOK_FILE); print GBOOK $message,"\n"; print GBOOK $mes,"\n"; # конец записи print GBOOK @oldtext; # добавление всего остального в конец файла close(GBOOK); Далее указывается HTML-шаблон, подлежащий обработке и выводу пользователю. $TEMPLATE_HTML = $ADD_HTML;2. Просмотр записей в Книге. Здесь необходимо последовательно просматривать файл Книги и разделять отдельные сообщения. # открытие файла книги open(GBOOK, $BOOK_FILE) || die "error open $BOOK_FILE"; while (<GBOOK>) { if ((/^!R>>/)&&($umes)) { ($temp,$username,$rectime,$dopinfo) = split(/>>/, $_); $VAR{'book_records'}.= &book_template($username,$rectime,$umes,$dopinfo); $umes = ""; $VAR{'num_records'}++; # счетчик записей } else { $umes.= $_; } } close(GBOOK); $TEMPLATE_HTML = $BOOK_HTML; При формировании отдельной записи в книге используется функция book_template. Эта функция получает на вход данные очередной записи и возвращает HTML-код для этой записи.
Читайте также: A) Лица, старше 14 лет, работающие на момент обследования не менее определенного краткосрочного периода. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|