2013-07-22 2 views
0

У меня есть страница PHP (index.php), где после входа в форму я могу отправить SMS в другой форме. Через WWW :: Механизировать Я смог войти в систему (если я напечатаю ответ, он правильно показывает вторую форму для отправки SMS-сообщения), но я не могу отправить другую форму, если я распечатаю ответ, я получаю страницу отправки сообщений вместо страницы результатов SMS. Вот фрагмент кода, я что-то упускаю?Как войти, а затем отправить другое сообщение с WWW :: Механизировать в Perl

use WWW::Mechanize; 
use strict; 
use warnings; 

my $to = 'xxxxxxx'; 
my $text = 'test'; 

my $mech = WWW::Mechanize->new(); 
$mech->get('http://x.x.x.x/index.php'); 

# Login 

$mech->submit_form(
    fields  => { 
     oper => 'login', 
     usr => 'xxx', 
     pwd => 'xxx', 
    } 
); 

# Now that I logged in I can send the SMS 

#$mech->get('http://x.x.x.x/index.php'); Guess this get is useless 

$mech->submit_form(
    fields => { 
      to => $to, 
      text => $text, 
      submit => 'Send Message' 
    } 
); 

EDIT: добавление кода второй формы HTML может оказаться полезным.

<form name="sendsms" method="post" action="index.php"> 
<p>Phone Number:<br><input type="text" size="30" name="to"></p> 
<p>Message:<br><textarea cols="20" rows="5" name="text></textarea></p> 
<input type="submit" value="Send Message" name="submit"> 
<input type="reset" value="Reset"><br></form> 
+0

нужен ли второй '' get' после submit'? – choroba

+0

Tbh прокомментировал мой код, но я забыл удалить строку, так или иначе, она не работает в любом случае. – raz3r

ответ

0

Вам нужно выбрать форму для отправки. Попробуйте это:

$mech->submit_form(
    with_fields => { 
      to => $to, 
      text => $text, 
      submit => 'Send Message' 
    } 
    button => "your_submit_button_name_here", 
); 
+0

В коде HTML есть только одна форма, но я тоже попробовал ваше решение, но не повезло :( – raz3r

+0

Пожалуйста, покажите вторую форму HTML – gangabass

+0

Я имею в виду, может быть, вам нужно добавить 'button =>" your_button_name "в свой код? – gangabass

0

попробовать что:

$mech->form_name("sendsms"); 
$mech->field("to","$to"); 
$mech->field("text","$text"); 
$click(); 
+1

Добро пожаловать в Stackoverflow! Я думаю, вам нужно подробнее проработать. ОП «попробуй»? – davidkonrad