Я отправляю список имен и писем.
Я пытаюсь создать с curl те же функции, что и в этой форме
<form method="post" action='http://url'> name: <input type="text" name="name" value='name1'> email:<input type="text" name="email" value='email1'> name: <input type="text" name="name" value='name2'> email: <input type="text" name="email" value='email2'> <input type="submit" value="Submit"> </form>
Я хочу использовать один и тот же ключ, поэтому я могу использовать django
names = request.POST.getlist('name')
чтобы получить все имена в списке.
Теперь я пытаюсь сделать то же самое, что и в форме с php curl
$ch = curl_init(); $curlConfig = array( CURLOPT_URL => "http://url", CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => array( 'name' => 'name1', 'email' => 'name1@email', 'name' => 'name2', 'email' => 'name2@email', ), ); curl_setopt_array($ch, $curlConfig); $result = curl_exec($ch); print $result; curl_close($ch);
и он не работает, он получает только последние 2 значения. это потому, что массив ассоциативен, поэтому последние значения переопределяют предыдущие.
В PHP ключи массива должны быть уникальными. Второе «имя» перезаписывает данные в первом «имени», поэтому вам потребуется немного другая схема.
Возможно, вы сможете использовать что-то вроде этого. У вас есть способ сделать дамп данных в сценарии Django?
CURLOPT_POSTFIELDS => array( array( 'name' => 'name1', 'email' => 'name1@email', ), array( 'name' => 'name2', 'email' => 'name2@email', ) )
То, что я, наконец, сделал, это использовать строку вместо асинхронного массива php
$ch = curl_init(); $curlConfig = array( CURLOPT_URL => "http://url", CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => "name=name1&emailname1@email&name=name2&email=name2@email" ); curl_setopt_array($ch, $curlConfig); $result = curl_exec($ch); print $result; curl_close($ch);