Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.06;
Скачать: CL | DM;

Вниз

Вопрос по Перлу   Найти похожие ветки 

 
Феликс ©   (2002-12-14 22:33) [0]

Есть код:
#!/usr/bin/perl

print "Content-type: text/html\n\n";

if ($ENV{"REQUEST_METHOD"} eq "POST") {$mode = 0}
if ($ENV{"REQUEST_METHOD"} eq "GET") {$mode = 1}
if ($mode == 0) {read(STDIN, $buffer, $ENV{"CONTENT_LENGTH"})}
if ($mode == 1) {$buffer = $ENV{"QUERY_STRING"}}
@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;
$FORM{$name} = $value;
}

$image =$FORM{"image"};
$users = $FORM{"users"};


А задача стоит такая:
Скрипт должен получить значение перменных со страницы и из ссылки. А ссылка такая (к примеру) ...cgi-bin/script.pl?id=12345.
Т.е программа должна иметь данные из компонента с названием image и users, а также получить значени 12345, которое указано в ссылке. Вопрос как это сделать если выше указанный код получает данные только со страницы? Вернее сказать, что надо добавить или убрать со страницы, чтобы сформировать переменные с данными из страницы и ссылки.


 
McSimm ©   (2002-12-15 12:14) [1]

Во первых скрипт получает данные не со страницы, а из формы.
(я не придираюсь к словам, это важно). Причем здесь какая-то ссылка?
Может быть это сделано так?
<FORM METHOD=POST ACTION="script.pl?id=12345">...поля image,users</FORM>
Так действительно надо немного переделать программу и для POST метода обрабатывать также и строку запроса:
if ($mode == 0) {read(STDIN, $buffer, $ENV{"CONTENT_LENGTH"}); $buffer .= "&".$ENV{"QUERY_STRING"}}}

Но зачем так делать? можно то же самое сделать и по-человечески:
<FORM METHOD=POST ACTION="script.pl?id=12345">
<INPUT TYPE="hidden" NAME="id" VALUE="12345">
...поля image,users
</FORM>
Тогда используется только метод POST, передаются все даныые и программу переделывать не нужно.


 
McSimm ©   (2002-12-15 12:19) [2]

Поправка:
<FORM METHOD=POST ACTION="script.pl">
<INPUT TYPE="hidden" NAME="id" VALUE="12345">
...поля image,users
</FORM>


 
Феликс ©   (2002-12-15 14:44) [3]

Задача заключается в том, чтобы получать данные как из формы так и из ссылки. Ведь как-то же можно нажав на ссылку выполнить скрипт причем с теми данными что указаны на форме и значением id? Или нет?


 
McSimm ©   (2002-12-15 14:53) [4]

Чтобы передать данные формы надо делать ей SUBMIT.
Простое нажатие на ссылку приводит к обращению к скрипту методом GET и параметры беруться только из URL - т.е. никакие данные формы не передаются. И наоборот - при submit формы никакого понятия "ссылка" нет.

Есть разные хитрости, например можно при нажатии на ссылку (с фиктивным адресом, напр. "#")выполнить javascript, который сделает заполнение hidden полей и submit формы.


 
Феликс ©   (2002-12-15 15:41) [5]

Вообщем я все понял! Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2003.01.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-15026
_sanek_
2002-12-21 12:19
2003.01.06
Swif


3-14901
mama
2002-12-07 07:19
2003.01.06
индекс пропадает...


1-15114
Groove
2002-12-23 07:06
2003.01.06
ListView размер итема


7-15328
Anar
2002-10-16 21:58
2003.01.06
Насчёт клавиатуры


7-15320
Дмитрий К.К.
2002-10-25 15:58
2003.01.06
Добавить в избранное: Opera