Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите начать: cgi и HTML-Template 
:(
    Опции темы
Xenser
Дата 11.3.2005, 18:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1). Как узнать - с какими параметрами юзер вызывает скрипт? то есть
http://x.ru/a.cgi?var=data1&var2=data2
как обработать var'ы более легким способ чем через QUERY_STRING?

2). Не могу догнать - как оптимально юзать HTML-Template..
Код

<html>
  <head><title><TMPL_VAR NAME=ВРЗМОЖНЫЕ ИЗМЕНЕНИЯ 1></title>
  <body>

  <TMPL_VAR NAME=ВОЗМОЖНЫЕ ИЗМЕНЕНИЯ 2>
  <bla-bla><bla-bla>
  <TMPL_VAR NAME=ВОЗМОЖНЫЕ ИЗМЕНЕНИЯ 3>

  </body>
</html>


тогда будет 1 тмпл файл и ВОЗМОЖНЫЕ ИЗМЕНЕНИЯ изменять в зависимости от QUERY_STRING?
но это как-то не гибко и неправильно как я чувствую.. Что делать то?

Это сообщение отредактировал(а) korob2001 - 12.3.2005, 22:09
  Вверх
korob2001
Дата 11.3.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

1). Как узнать - с какими параметрами юзер вызывает скрипт? то есть
http://x.ru/a.cgi?var=data1&var2=data2
как обработать var'ы более легким способ чем через QUERY_STRING?

Юзай модуль CGI.pm, подробнее здесь: http://forum.vingrad.ru/index.php?showtopic=43044
Цитата

2). Не могу догнать - как оптимально юзать HTML-Template..

Человеку который хорошо знает HTML, будет легко работать с таким файлом, не вмешиваясь в программный код. Если нужно оптимизировать, используй Mason, mod_perl, FastCGI.

Это сообщение отредактировал(а) korob2001 - 11.3.2005, 21:34


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Kiber_rat
Дата 11.3.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 1
Всего: 9



Для работы с CGI стоит использовать модуль CGI smile
Как получить переданные скрипту параметры (не важно в адресной строке или через форму) написано не один раз на этом же форуме. Я, к примеру, получаю их та:
Код

#!/usr/bin/perl -w
use CGI qw(:standard);
my %Q=CGI::Vars();

В результате у тебя в хэше Q хранятся все переданные скрипту переменные, в виде:
Код

$Q{var1} = data1;
$Q{var2} = data2;

Что касается работы с темплейтами то я не совсе понял вопрос. Ты используешь какой-то модуль для работы с ними или хочешь написать свой вариант? На самом деле вопрос еще и в том что именно ты хочешь, именно темплейты или же embeded perl. Второй вариант предпочтительнее. Как вариант могу предложить использовать свои "тэги", потом просто парсить страничку и выводить уже значения вместо твоих "тэгов".
Например:
test.html
Код

<html>
<body>
Some string in HTML<br>
Here must be value of variable $a<!--%$a%--><br>
</body>
</html>

Далее парсишь то что выше:
default.cgi
Код

#!/usr/bin/perl -w
use CGI qw(:standard);
print header();
open FH, '<test.html>';
while (<FH>) {
  s/<!--%(\%*?)%-->/eval($1)/g;
  print;
}
close FH;

Для того что бы при запросе браузером странички она перед отправкой парсилась твоим скриптом надо кинуть в корень сайта примерно такой .htaccess
Код

Action pcgi /cgi-bin/default.cgi
AddHandler pcgi .html

Это примитивный пример, для нормального embeded perl все сложнее, но направление ты надеюсь понял...
И еще... Я не гарантирую что то что написано заработает smile Я писал из головы и не тестил...


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
Guest
Дата 11.3.2005, 22:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











пасиба..
  Вверх
Guest
Дата 12.3.2005, 10:41 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











М.. я вот раньше пхп юзал для Веба.. там делается вобще все элементарно...
<?php>
инклюдим топовую часть дизайна
</php>

пишем что душе угодно

<?php>
инклюдим боттомную чать дизайна
</php>

Я вот подумал можно на перле замутить такую вешь: создаем файл скажем индекс.пл - который будет запускаться с параметром index.pl?page=news - сам индекс.пл будет сперва считывать и выдавать на STDOUT файл скажем "dizain.verh" - которы будет содержать хтмл код дизайна, потом он будет также построчно выводить в ИЕ файл "news" И затем файл "dizain.niz". Таким образом, имхо довольно удобно отделяется типичный дизайн от часто изменяющихся элементов.

Вот то что я написал, такое вообще делают? или это изврат полный? Может кто пробовал? Насколько это удобно? Имхо порой это должно быть удобнее темплейтов..
  Вверх
Guest
Дата 12.3.2005, 21:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











??
  Вверх
korob2001
Дата 12.3.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Вообще-то я для подобных вещей пишу класс, но можно и так:
Создай файл top.htm
Код

<html>
 <head>
   <title>Test</title>
 </head>
 <body>
  <center><h1>Это верхняя часть стараницы</h1></center><br><hr>

Теперь файл news.htm
Код

  <table width="50%" border="1" bgcolor="#<!--//Color//-->">
    <tr><td width="100%">Новости <!--//Time//--></td></tr>
    <tr><td width="100%"><!--//News//--></td></tr>
  </table><br><br>

Здесь стоит обратить внимание на теги коментариев, мы в послдствии будем заменять их нужными данными.
Тепь создай файл bot.htm
Код

<br><center><h1>Это нижняя часть страницы</h1></center> 
</body>
</html>

Теперь напиши на Perl такой код и сохрани его в файл added.pl
Код

#!/usr/bin/perl -w
use strict;
my ( $top, $news, $bot ) = qw( top.htm news.htm bot.htm );
my $time = localtime;
my $color = "cccccc";
my $add_news = <<"NEWS";
Привет всем!
Сегодня $time я начал изучать язык Perl.
Это было просто тестовое сообщение, потому прошу не обращать на него особого внимания.
Пока
NEWS

$add_news =~ s/\n/<br>/g;

print "Content-type: text/html\n\n";
for my $file ( $top, $news, $bot ) {
    open( F, "< $file" ) or die $!;
        while ( <F> ) {
           s#<!--//Time//-->#$time#gi;
           s#<!--//News//-->#$add_news#gi;
           s#<!--//Color//-->#$color#gi;
           print;
        }
    close( F );
}

в тот же каталог, куда сохранял и предидущие фалы, толко каталог должен быть исполняемым, как правило это /cgi-bin или /cgi, в зависимости от настроек сервера.

Теперь запуcти файл added.pl.

Удачи.

Это сообщение отредактировал(а) korob2001 - 12.3.2005, 22:03


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0462 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.