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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача значений скрипту 
:(
    Опции темы
study
Дата 2.12.2004, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

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



Народ, помогите мне передать значения скрипту! Значения надо передать через ссылку, я пытаюсь сделать так:
формирую ссылку http://www.domen.ru/cgi-bin/script.cgi?var=5, но почемуто переменная в скрипт не передаёться???
я в скрипте обрабатываю входные параметры так:
Код

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
 ($name, $value) = split(/=/, $pair);
 $value =~ tr/+/ /;
 $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
 $value =~ s/<!--(.|\n)*-->//g;
 $input{$name} = $value;
}


по идее переданная мною в ссылке переменная должна находиться в $input{'var'}, может я что-то не то делаю smile
подскажите как это можно сделать.

Спасибо.
PM MAIL   Вверх
Forza
Дата 2.12.2004, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Используй модуль CGI.
В нём переданные скрипту значения получаются очень просто:
Код
use CGI qw(:standard);
my $var = param("var");

Да и в другом он тоже пригодится. smile

Это сообщение отредактировал(а) Forza - 2.12.2004, 14:44
PM MAIL   Вверх
study
Дата 2.12.2004, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

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



а без использования модуля CGI как-нибудь можно smile
PM MAIL   Вверх
Forza
Дата 2.12.2004, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.9.2004

Репутация: нет
Всего: 2



Откуда нежелание использовать модуль?

Конечно, без него можно, но сложно. Я уже не помню, как это самостоятельно делается. smile
PM MAIL   Вверх
study
Дата 2.12.2004, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

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



я просто точно не знаю, установлен ли этот модуль на машине где будет работать скрипт
PM MAIL   Вверх
korob2001
Дата 2.12.2004, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Замени эту строку:
Код

@pairs = split(/&/, $buffer);

на такую:
Код

@pairs = split(/&/, $ENV{ QUERY_STRING });


Цитата

я просто точно не знаю, установлен ли этот модуль на машине где будет работать скрипт

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

Удачи.

Это сообщение отредактировал(а) korob2001 - 2.12.2004, 15:11


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 20.9.2004

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



СПАСИБО ВСЁ РАБОТАЕТ smile
PM MAIL   Вверх
GoodBoy
Дата 2.12.2004, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



study
Смотри, тот вариант, что использовал ты расчитан на метод POST, то, что тебе предложил korob2001, - на метод GET... Теперь всё это соединяем и добавляем возможность передачи переменных из командной строки в формате:
script.pl var1=val1 var2=val2 var3=val3
Итог:

Код
our (%FORM, %NUMBER) = ();

sub form_parse {
   my $buffer = '';
   my $method = $ENV{"REQUEST_METHOD"};
   if ($method eq "GET") {
       $buffer = $ENV{'QUERY_STRING'};
   }
   if ($method eq "POST") {
       read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
   }
   my @pairs = split(/&/, $buffer);
   @pairs = (@pairs, @ARGV) if (@ARGV);
   foreach my $pair (@pairs) {
       my ($name, $value) = split(/=/, $pair);
       $name  =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
       $value =~ tr/+/ /;
       $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
       $FORM{$name} = $value;
       $NUMBER{$name} = $1 if ($value =~ /^([0-9]+)$/);
   }
}


Посте вызова в твоей программе &form_parse; в хэшах %FORM и %NUMBER будут содержаться значения, переданные скрипту...


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
chaos
Дата 3.12.2004, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



Цитата(study @ 2.12.2004, 14:57)
я просто точно не знаю, установлен ли этот модуль на машине где будет работать скрипт

Это стандартный пакет, даже если и нет не переписывать же скрипт-модуль всегда можно поставить


и еще тыточно знаешь как сервер интерпретирует \n\n ??? Вот модуль CGI точно знает при выводе print header;

Это сообщение отредактировал(а) chaos - 3.12.2004, 08:25
PM WWW   Вверх
GoodBoy
Дата 3.12.2004, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Цитата(chaos @ 3.12.2004, 08:23)
и еще тыточно знаешь как сервер интерпретирует \n\n

А как он это может интерпретировать????????? smile


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
Phoinix
Дата 5.12.2004, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 16.11.2004
Где: Moskau

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



GoodBoy

Цитата(GoodBoy @ 3.12.2004, 13:44)
А как он это может интерпретировать?????????


#!/usr/bin/perl

my $var = '\n\n';
print $var;


Результат:
\n\n

как символы...

вот только непонятно
Цитата(chaos @ 3.12.2004, 08:23)
и еще тыточно знаешь как сервер интерпретирует \n\n


Причем здесь это... ;)
PM WWW ICQ   Вверх
korob2001
Дата 5.12.2004, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

#!/usr/bin/perl

my $var = '\n\n';
print $var;

Да, только проблема здесь не в сервере, а в одинарных кавычках. Да и вообще интерпретирует не сервер, а Perl, если конечно последний не встроен в сервер в виде модуля расширения mod_perl.


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


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 4
Всего: 83



Phoinix
То, что ты написал я и так прекрасно знаю.... :-))) А в конце ты сам ещё раз повторил мой вопрос... :-)))))


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


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

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


 




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


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

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