cURL + PHP: отправка формы с дубликатами форм с одинаковыми именами - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь отправить сообщение на страницу, которая имеет две формы с повторяющимися элементами имени.Проблема в том, что одна форма получает значение пароля, а другая форма получает значение для входа.(Я могу увидеть это, распечатав curl_exec ($ ch);) Я включу свой код для целевого URL и данные формы.Как мне это исправить?

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

1 голос
/ 12 апреля 2011

$formdata = "id=$login&password=$password&Submit=Sign-In"; может сделать трюк; обратите внимание на тот факт, что вторая форма имеет кнопку отправки со значением, а первая форма имеет <button>, которая не будет отправлять значение (или, может быть, отправляет другое значение с помощью скрипта или чего-то еще)

Я только что заметил, что кнопка отправки не имеет имени; попробуйте передать его с параметром NO NO, т. е .:

$formdata = "id=$login&password=$password
1 голос
/ 12 апреля 2011

Вам нужно будет что-то сделать, чтобы указать, какая из двух форм была отправлена. Вы можете отправить поле с тем же именем, но разными значениями в каждом, или использовать кнопку отправки:

<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 ....
    }

использование любого метода работает одинаково, просто выберите тот, который наиболее понятен / наиболее прост, и переходите оттуда.

...