我正在尝试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>
答案 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