2011-12-19 1 views
0

http://site/signin/index.php과 같은 웹 사이트에 perl로 로그인 (안정)하고 싶습니다. 이 페이지는 양식이 있고 이름없이 제출합니다. 어떻게 로그인 할 수 있습니까? 이것은 예제 코드는 로그인하는 것입니다무명으로 제출 한 무명의 양식에 www :: mechanize로 로그인하십시오.

my $mech = WWW::Mechanize->new(); 
$mech -> cookie_jar(HTTP::Cookies->new()); 
$mech -> get($login_url); 
$mech -> form_name('theform'); 
$mech -> field ('username' => $username); 
$mech -> field ('password' => $password); 
$mech -> click ('log in'); 
print $mech-> content(); 

이, 당신은, number하여 참조 할 수 있습니다 내 양식

<form method="post" action=""> 
<table id="regform" cellspacing="5"> 
<tr> 
<td class="regparam">email:</td> 
<td><input type="text" name="email" value="" tabindex="1" maxlength="100" style="font-family: Tahoma; font-size: 10pt; font-weight: bold; border: 1px solid #9AD7F8; background-color: #ffffff" class="reginp" /></td> 
</tr> 
<tr> 
<td class="regparam">password:</td> 
<td><input type="password" name="password" value="" tabindex="2" maxlength="100" style="font-family: Tahoma; font-size: 10pt; font-weight: bold; border: 1px solid #9AD7F8; background-color: #ffffff" class="keyboardInput" /></td> 
</tr> 
<tr> 
<td></td> 
<td valign="middle"> 
<button type="submit" style="font-weight:bold; tabindex="4" class="subm-posts">login</button> 
<label style="margin:0px; padding:0px; margin-left:10px; margin-top:7px; float:left; clear:none;"> 
<input type="checkbox" name="rememberme" value="1" tabindex="3" /> 
<span style="padding:2px; padding-left:5px;">remember me</span> 
</label> 
</td> 
</tr> 
</table> 
</form> 
+0

관련 HTML 표시. – daxim

답변

1

대신의 이름으로 형태를 참조입니다 즉, 어디를

$mech->form_number(1); 

양식 번호는 하나에서 시작합니다.

마찬가지로, 단지 one button는 형태로 존재하는 한, 당신은 단지

$mech->click(); 

를 사용하고 버튼을 클릭합니다으로 그 양식을 제출합니다.

+0

정말 감사합니다 martin – thi

0
my $mech = WWW::Mechanize->new(); 
$mech->cookie_jar(HTTP::Cookies->new()); 
$mech->get($login_url); 

$mech->submit_form(
    form_name => 'theform', 
    fields => { 
     username => $username, 
     password => $password, 
    }, 
); 

print $mech->content(); 
+0

제목을 읽고 답을 보내주십시오. – thi

+0

@ sali444 정답을 얻으려면 올바른 코드를 게시하고 나중에 편집하면 이전에 게시 된 답변이 변경되지 않습니다. – Pradeep