cURL + PHP:提交具有相同表单名称的重复表单的表单

时间:2011-04-12 17:13:18

标签: php forms curl submit

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

// 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>

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

我刚注意到提交按钮没有名字;尝试使用NO submit参数传递它,即:

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