у меня есть форма
<form action=
http://www.site.com/isapi.dll method="POST">
<INPUT TYPE="TEXT" NAME="DATA">
<INPUT TYPE=SUBMIT>
</FORM>
Фактически она осуществляет вызов
http://www.site.com/isapi.dll с передачей параметра DATA по методу POST.
А мне нужно в случаях обращения к моей (не этой) страничке делать то же что и эта форма, точнее перенаправить пользователя на результат выполения передачи данных из этой формы.
Если бы речь шла о методе GET то я бы в хедерах добавил LOCATION:
http://www.site.com/isapi.dll?DATA=SOMEDATA, ну или что-то около того.
Но вот как такое сделать с постом да еще и на ПЕРЛе у меня нет ни малейшего понятия.
Буду дико рад любой информации.
Здравствуйте, AlexEagle, Вы писали:
AE>Фактически она осуществляет вызов http://www.site.com/isapi.dll с передачей параметра DATA по методу POST.
AE>А мне нужно в случаях обращения к моей (не этой) страничке делать то же что и эта форма, точнее перенаправить пользователя на результат выполения передачи данных из этой формы.
AE>Если бы речь шла о методе GET то я бы в хедерах добавил LOCATION: http://www.site.com/isapi.dll?DATA=SOMEDATA, ну или что-то около того.
а чем тебя POST не устраивает?...
AE>Но вот как такое сделать с постом да еще и на ПЕРЛе у меня нет ни малейшего понятия.
perldoc LWP
Здравствуйте, AlexEagle, Вы писали:
AE>у меня есть форма
AE><form action=http://www.site.com/isapi.dll method="POST">
AE><INPUT TYPE="TEXT" NAME="DATA">
AE><INPUT TYPE=SUBMIT>
AE></FORM>
AE>Фактически она осуществляет вызов http://www.site.com/isapi.dll с передачей параметра DATA по методу POST.
AE>Но вот как такое сделать с постом да еще и на ПЕРЛе у меня нет ни малейшего понятия.
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
my %form = (
'DATA' => 'data-to-post'
);
my $userAgent = LWP::UserAgent->new();
my $page = $userAgent->request(
POST 'http://location-to-post/page.html',
Content_Type => 'multipart/form-data',
ontent => [%form]
);
if ($page->is_success)
print $page->content();
else
print $page->error_as_HTML;
A.
Вот код на PHP, который возвращает почти такой-же результат, как если-бы запрос был произведен с помощью формы.
("Почти такой-же" значит, что он еще выдаст HTTP/1.1 200 OK и еще пару лишних строк, обрезать которые, я думаю, не составит труда).
Я в перле не силен, но почти уверен, что там тоже есть функции работы с сокетами, все остальное дело техники.
Суть скрипта в нескольких словах: подключаемся к 80-му порту (HTTP сервер) и посылаем ему запрос, очень похожий на тот, который ему посылается при использовании Вашей формы. Ответ сервера, в данном случае дословно, выводится в браузер.
Подозреваю, что метод не совсем элегантный, но вроде работает

. Если возникнут вопросы, пишите на boda2004/at/mail.ru.
<?php
$fp = fsockopen ("site.com", 80, &$errno, &$errstr, 30);
$s="DATA=SOMEDATA";
$l=strlen($s);
$q="POST http://www.site.com/isapi.dll HTTP/1.0\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: $l\r\n\r\n$s";
fputs($fp,$q);
while(!feof($fp)){
echo fgets($fp,128);
}
fclose($fp);
?>