|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Maxim Vavilov 2:5020/1202 03 Jan 2002 23:34:08 To : All Subject : отправить POST'ом -------------------------------------------------------------------------------- Господа, я только учусь, посему прошу не сильно глумиться над моим вопросом.. Хочется отправить информация методом POST, но что-то никак не получается. Hе расскажете, как это сделать, plzz Почитав доку по перлу, решил что вот так: -=cut=- #!/usr/bin/perl -w use LWP::UserAgent; $ua = LWP::UserAgent->new; my $req = HTTP::Request->new(POST => 'http://localhost/cgi-bin/refer2.cgi'); $req->content_type('application/x-www-form-urlencoded'); $req->content('name=Maxim&password=test'); my $res = $ua->request($req); print $res->as_string; -=cut=- Да. Запускаясь из перла оно работает. А вот из под Апача - нет. И потом оно пользует библиотеку. Можно ли написать что-нить типа: -=cut=- #!/usr/bin/perl -w use strict; use Socket; my ($port, $host, $url, $sin, $full_url); $port = 80; $host = "localhost"; $url = "/cgi-bin/refer2.cgi"; $sin = sockaddr_in($port,inet_aton($host)); $full_url="GET ".$url." HTTP/1.0\n"; connect(Socket_Handle,$sin); send (Socket_Handle,$full_url,0); send (Socket_Handle,"Content-Type: application/x-www-form-urlencoded\n",0); send (Socket_Handle,"Content-Length: 26\n",0); send (Socket_Handle,"name=Maxim&password=test\n",0); -=cut=- Оно у меня, правда, тоже не работает.. но я к тому, что бы не пользовались библиотеки и работало шустрее и у большинства провайдеров. зы: да. оно вероятно криво. но я же предупреждал.. :) ззы: refer2.cgi, это: -=cut=- #!/usr/bin/perl -w if($ENV{'REQUEST_METHOD'} eq 'GET'){ $query=$ENV{'QUERY_STRING'}; } elsif($ENV{'REQUEST_METHOD'} eq 'POST'){ sysread STDIN,$query,$ENV{'CONTENT_LENGTH'}; } @formfields=split /&/,$query; foreach(@formfields){ if(/^name=(.*)/){$name=urldecode($1);} if(/^password=(.*)/){$password=urldecode($1);} } sub urldecode{ local($val)=@_; $val=~s/\+/ /g; $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge; return $val; } print "Content-Type: text/html\n\n"; print "<HTML><HEAD><TITLE>Результат</TITLE></HEAD>\n"; print "MAME:$name PASSWORD:$password\n"; -=cut=- единственное что работает у меня.. :-\ THKS for reading this message.. TempBye. MaxX --- GoldED/W32 3.0.1 * Origin: The Show Must Go On!!! ьFr.Mercury (2:5020/1202) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/27053c34e254.html, оценка из 5, голосов 10
|