#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