cURL PHP: отправка формы с дублирующимися формами с одинаковыми именами форм

#php #forms #curl #submit

#php #формы #curl #Отправить

Вопрос:

Я пытаюсь ОПУБЛИКОВАТЬ на странице, на которой есть две формы с повторяющимися элементами name. Проблема в том, что одна форма получает значение пароля, а другая форма получает значение входа. (Я могу увидеть это, распечатав curl_exec($ ch);) Я включу свой код для целевого URL и formdata. Как мне это исправить?

 // my target url and form data
$target = "http://www.example.com/login";
$formdata = "id=$loginamp;password=$passwordamp;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>
  

Комментарии:

1. Есть ли способ сказать, что я хочу отправить значение второй формы? Like amp;name[1]=UserNameHere

Ответ №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. возможно, вам захочется исправить номера в вашей 2-й форме. 🙂

2. правильно. Спасибо. Мне действительно нужно проснуться … в 11: 30 утра, и я все еще без сознания, находясь на работе. нехорошо.

3. Попробуйте 9:30 утра и без кофе. 😉

Ответ №2:

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

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

 $formdata = "id=$loginamp;password=$password