Perl. 4 с половиной способа ответить юзеру.

Как правильно организовать HTML-ответ скрипта.

Все способы ответов пользователю используют одну и ту же команду print. Это не удивительно. Это правильно. Использовать один и тот же инструмент можно и нужно по разному в зависимости от обстоятельств.

Способ № 1.
Если ваш скрипт предназначен для переадресации в зависимости от запроса пользователя, то лучше использовать заголовок HTML "Location". Этот способ идеально подходит и для случаев, когда пользователь должен получить ответ из небольшого набора стандартных. В этом случае следует создать HTML файлы со стандартными ответами и ссылаться на эти файлы.

   if ($user_input eq "Condition_1"){
        print "Location: http://www.first.link/link.htm\n\n";
        exit;
   }elsif ($user_input eq "Condition_2"){
        print "Location: http://www.second.link/link.htm\n\n";
        exit;
   }else{  
        print "Location: http://www.third.link/link.htm\n\n";
        exit;
   }

Обратите внимание на подстроку \n\n в конце каждой ссылки. Это признак окончания заголовка HTML. Если эта строка не будет оформлена правильно - ничего не произойдет. Команда exit в конце каждого логического блока не обязательна, но желательна. Она нужна для того, чтобы скрипт корректно завершил работу. Чтобы пользователь случайно не получил еще какого-нибудь ответа от вашей программы.

Способ № 2.
Самый простой. Его можно использовать, если ваш скрипт должен выдавать какой-то простой и короткий ответ. Без особых изысков в дизайне. Быстро, просто, надежно.

print " Content-type: text/html\n\n";
print " <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\n";
print " <html>\n";
print " <body>\n";
print " ...\n";
print " ...\n";
print "</body>\n";
print "</html>\n";

Способ № 3.
Когда в ответе используется общий шаблон, т.е. HTML имеет один и тот же вид, но в зависимости от запроса пользователя изменяются некоторые текстовые части или картинки, можно и нужно использовать технологию HERE-FILE, т.е. HTML-файл, вложенный в скрипт. Этот метод очень хорош для организации фотогалереи, справочника и т.п., для всех случаев, когда ответ выдается в фиксированной форме и/или пользователь работает с вашей базой данных.

$new_text = "Kakoj-to tam tekst";
$new_picture = "http://www.somwere.someone.org/images/Kakaja-toKartinka.gif"
print <<HTML;
Content-type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
</head>
<body>
...
<p>$new_text</p> <!-- здесь располагается переменная текстовая часть -->
...
<img src=$new_picture> <!-- здесь располагается картинка -->
...
</body>
</html>
HTML
exit;

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

$sourcefile = "z:\\templates\\year2000\\template.file";
open (SourceFile, $sourcefile) || die "Can't open data file";
@source=<SourceFile>;
close (SourceFile);
$SIZE = @source;
print ("Content-Type: text/html\n\n");
for ($i=0;$i<=$SIZE;$i++){
   $_=$source[$i];
   print ("$_")
}

Комбинация способов  № 3 и № 4. 
Несколько более изощренный способ. Можно применять, когда одновременно решаются несколько задач: 
а) источник HTML файла находится в отдельном файле (не в скрипте);
б) в ответ необходимо включить переменную или вычисляемую динамически величину.
Лучшая сфера применения такого способа - игры, чаты, гостевые книги и пр. 

open (SourceFile, $sourcefile) || die "Can't open data file";
@source=<SourceFile>;
close (SourceFile);
$SIZE = @source;
print ("Content-Type: text/html\n\n");
for ($i=0;$i<=$SIZE;$i++){
   $_=$source[$i];
    if (/<!-- new_text -->/)
      {print ("$new_text");}
    if (/<!-- new_list -->/)
      {print ("@new_list");}
    elsif (/<!-- new_picture -->/)
      {print ("<img src=$new_picture>");}
...
...
     else
       {print ("$_");}
}

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

<!-- new_text -->
<!-- new_list -->
<!-- new_picture -->

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

Удачи Вам.
Будут замечания, исправления - пишите.
Ваше ноу-хау может быть опубликовано в "Стране Советов"
Если у Вас есть что сказать - говорите.

Отправьте ссылку на эту программу знакомым Perl программистам
Bookmark this page using Ctrl+D
Wowwi.

Wowwi Home Page

  Программистам:
Защита Гостевой
Защита от спама
Отладка Perl-CGI (1)
Отладка Perl-CGI (2)
Perl. Методы
Долой пароли
JavaScript Tester
Делаем Sitemap
HTML как PHP

  Всем-всем-всем:
Дешёвые лекарства
Школа обольщения
Бесплатное метро
Как защитить дачу
Заявление в ОВИР
RUS_Keyboard
Transliterator
За помощью в ИНТЕРПОЛ
АлкоМЕТР
Секреты NOKIA

Страна Советов


© Wowwi 1999-2017 wowwi@mail.ru