The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Perl" / Оглавление документа

Заполнение и отправка данных из скрипта формы на удаленном сервере

Допустим нужно регулярно отправлять на какую-нибдуь доску объявлений данные, причем необходимо заполнить несколько полей и при этом подгружать несколько картинок. Для того, чтобы заполнить текстовые поля name и descr в форме:
<form action="http://www.server.ru/cgi-bin/gbook.pl" method=post>
<input type=text name=name size=20><br>
<input type=text name=descr size=20><br>
<input type=submit value="Submit"><br>
<input type=reset value="clear">
</form>
нужно написать следующий скрипт(соответствующие значения полей name и descr указаны в квадратных скобках):
#!/usr/bin/perl -w
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
$ua = LWP::UserAgent->new();
my $req = POST 'http://www.server.su/cgi-bin/gbook.pl',
  [ name => 'lalala', 
   descr => 'aaa'];
print $content = $ua->request($req)->as_string;
Если в форме полей больше, чем в приведенном примере, то их нужно просто перечислить в квадратных скобочках через запятую, причем после поледнего поля запятую ставить не нужно:
my $req = POST 'http://www.server.su/cgi-bin/gbook.pl',
  [ name => 'lalala',
   email => 'user\@host.ru',
    text => qx{
bla-bla-bla
alalalalal hahahaha test

s privetom,
Vasya
}
   descr => 'aaa'];
Если необходимо подгрузить помимо текста еще и картинку(картинки), то нужно указать Content_Type => 'form-data':
#!/usr/bin/perl -w
$test = "http://www.server.ru/add.html";
$file = "test.gif";
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
use CGI qw(header -no_debug);

my $req = POST $test,
Content_Type => 'form-data',
Content      => [
        user => 'vasya',
    password => '123456',
       image => [$file],
        href => 'aaaaaaaaaaaa',
     profile => '13',
       ratio => '333333',
         alt => 'Hot News!',
                ];
my $res = LWP::UserAgent->new->request($req);
print header, $res->is_success ? $res->content : $res->status_line;
print $req->as_string;
если необходимо подгружать одновременно несколько картинок(любое число), без текста, то это описано тут или слегка модифицировав POST-запрос:
my $req = POST $test,
Content_Type => 'form-data',
Content      => [
        user => 'vasya',
    password => '123456',
      image1 => [$file1],
      image2 => [$file2],
      image3 => [$file3],
      image4 => [$file4],
        href => 'aaaaaaaaaaaa',
     profile => '13',
       ratio => '333333',
         alt => 'Hot News!',
                ];
Вобщем такими методами можно отправлять картинки и/или сообщения через интернет на различные доски объявлений и подобные типы сервисов без участия человека. Так-же неплохо бы найти и прочитать в интернете последнюю версию LWP FAQ by fido7.ru.cgi.perl by Paul Kulchenko ([email protected])

Данную программу можно приспособить, например, для отправки SMS-сообщений через www.mts.ru/sms или иные странички. В случае биллайна нужно позвонить по определенному телефону, после чего на sms.beemail.ru будет выделен e-mail адрес, через который можно отпавлять почту через sms. Но биллайн не разрешает отправку пересылаемых сообщений(которые содержат Forward, т.е. нужно писать скрипт через procmailrc или smrsh, который бы перенаправлял сообщения на sms.beemail.ru). Так-же mts поддерживает отправку на sms простых картинок, но нужно с ними предварительно договариватся о формате.  




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру