Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Феликс   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.045 c
4-15376
Diamond Cat
2002-11-18 00:17
2003.01.06
чем можно заменить сообщение BM_SETIMAGE


4-15369
sen
2002-11-19 14:15
2003.01.06
Открытие внешних файлов Word


4-15349
DeepProg
2002-11-16 23:12
2003.01.06
Поиск не по имени, а по дате последнего доступа


8-15164
Aleksey Rykov
2002-09-13 01:48
2003.01.06
DirectDraw в оконном режиме


14-15299
stone
2002-12-18 11:30
2003.01.06
FAQ для оверклокеров и фрикеров





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский