Главная страница
    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.45 MB
Время: 0.009 c
6-15190
wmz
2002-11-07 13:02
2003.01.06
Проверка proxy-серверов


14-15212
TTCustomDelphiMaster
2002-12-18 20:15
2003.01.06
Kaр Кар


14-15256
VictorT
2002-10-25 20:20
2003.01.06
Халявный хостинг


1-15008
SI-riuss
2002-12-24 12:38
2003.01.06
StringGrid


14-15297
OZZY OSBOURNE
2002-12-17 23:01
2003.01.06
Ищу Леля.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский