cURL + PHP:使用相同表单名称的重复表单提交表单
问题描述:
我正在尝试将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>
答
你必须做一些事情来指示两种形式得到提交。您可以提交一个字段名称相同,但不同的值在每一个,或者使用提交按钮:
<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 ....
}
使用这两种方法的工作原理相同,只是挑一个这是最有意义/最简单的,并从那里开始。
答
$formdata = "id=$login&password=$password&Submit=Sign-In";
可能会诀窍;注意第二个表单有一个提交按钮的值,第一个表单有一个<button>
,它不会发送一个值(或者可能通过脚本或其他东西发送一个不同的值)
我只是注意到提交按钮没有名称;尝试通过它没有提交参数,即:
$formdata = "id=$login&password=$password
有没有办法说我想提交到第二个表单值? Like&name [1] = UserNameHere – brant 2011-04-12 17:14:42