Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 отправить POST\'ом   Maxim Vavilov   03 Jan 2002 23:34:08 
 Re: отправить POST\'ом   Artem Chuprina   04 Jan 2002 12:20:45 
 отправить POST\'ом   Maxim Vavilov   04 Jan 2002 19:56:57 
 Re: отправить POST\'ом   Artem Chuprina   08 Jan 2002 13:14:13 
 отправить POST\'ом   Maxim Vavilov   08 Jan 2002 21:32:35 
 Re: отправить POST\'ом   Artem Chuprina   09 Jan 2002 12:35:21 
Архивное /ru.cgi.perl/27053c34e254.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional