2011-04-12 41 views
0

我正在尝试将POST发布到具有两个具有重复名称元素的表单的页面。问题是一个表单获取密码值,另一个表单获取登录值。 (我可以通过打印出curl_exec($ ch)来看到这一点;)我将包括我的代码,目标URL和formdata。我该如何解决?cURL + PHP:使用相同表单名称的重复表单提交表单

// my target url and form data 
$target = "http://www.example.com/login"; 
$formdata = "id=$login&password=$password&Submit=Log In"; 

形式:

<form id="login" name="login" method="post" action="login"> 

      <label for="id">LOGIN ID</label> <input type="text" value="" name="id" maxlength="50" size="30"><br> 
      <label for="password">Password ID</label> <input type="password" name="password" maxlength="12" size="30"> 
      <div align="center"><button class="siteSprite signInSm" value="Log In" name="Submit" type="submit"></button></div> 
</form> 


<form section="login" id="loginform" name="loginform" action="http://www.example.com/login" method="post"> 
<input type="text" size="20" value=" Log-in" onfocus="this.value=''" name="id"></td> 
<input type="password" value="Password" maxlength="15" size="12" onfocus="this.value=''" name="password"> 
<input type="submit" class="siteSprite signInSm" value="Sign-In"> 
</form> 
+0

有没有办法说我想提交到第二个表单值? Like&name [1] = UserNameHere – brant 2011-04-12 17:14:42

回答

1

你必须做一些事情来指示两种形式得到提交。您可以提交一个字段名称相同,但不同的值在每一个,或者使用提交按钮:

<form ...> 
    <input type="hidden" name="whichform" value="1" /> 
    <input type="submit" name="Submit" value="form 1" /> 
</form> 

<form ...> 
    <input type="hidden" name="whichform" value="2" /> 
    <input type="submit" name="Submit" value="form 2" /> 
</form> 

然后

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    if (($_POST['Submit'] == 'form 1') || ($_POST['whichform'] == '1')) { 
     .... handle form #1 .... 
    } 
    if (($_POST['Submit'] == 'form 2') || ($_POST['whichform'] == '2')) { 
     .... handle form #1 .... 
    } 

使用这两种方法的工作原理相同,只是挑一个这是最有意义/最简单的,并从那里开始。

+1

可能需要修复第二个表单上的数字。 :) – drudge 2011-04-12 17:21:00

+0

没错。谢谢。我真的需要醒来......上午11点30分,在工作时仍然没有意识到。不好。 – 2011-04-12 17:25:41

+0

尝试9:30上午,没有咖啡。 ;) – drudge 2011-04-12 17:29:59

1

$formdata = "id=$login&password=$password&Submit=Sign-In";可能会诀窍;注意第二个表单有一个提交按钮的值,第一个表单有一个<button>,它不会发送一个值(或者可能通过脚本或其他东西发送一个不同的值)

我只是注意到提交按钮没有名称;尝试通过它没有提交参数,即:

$formdata = "id=$login&password=$password