Главная страница
    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.007 c
14-15253
Miwa
2002-12-15 14:59
2003.01.06
RedHat 7.3


14-15221
·•·?c?p·•·
2002-12-14 01:29
2003.01.06
Прога!


3-14933
AltFritz
2002-12-13 17:45
2003.01.06
TUpdateSQL


14-15249
race1
2002-12-10 07:59
2003.01.06
деньги


14-15217
DeMoN-777
2002-12-19 01:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский