Пробелы в postFields в PHP Curl

У меня есть следующий код:

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://www.mydomain.com/test.php');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS,"First Name=Jhon&Last Name=bt");
curl_exec ($c);
curl_close ($c);

Моя проблема с пробелами в этом коде:

"First Name=Jhon&Last Name=bt"

Я попробовал следующий код:

$test=rawurlencode("Имя=Джон&Фамилия=БТ");

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://www.mydomain.com/test.php');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS,$test);
curl_exec ($c);
curl_close ($c);

Также я пытался

$first_name=rawurlencode("Имя");

$last_name=rawurlencode("Фамилия");

$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://www.mydomain.com/test.php');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS,"$first_name=Jhon&$last_name=bt");
curl_exec ($c);
curl_close ($c);

В чем моя ошибка? не работает. Мне нужно отправить с именем переменных «Имя» и «Фамилия». Спасибо за вашу помощь.


person cabita    schedule 20.04.2012    source источник
comment
Смотрите мой обновленный ответ ниже. Ваше решение может работать, если вы удалите кавычки из имени вашей переменной и правильно объедините.   -  person Eddie    schedule 25.04.2012


Ответы (1)


автономный curl ENcoding.

http://curl.haxx.se/docs/manpage.html#--data-urlencode

URL-кодирование PHP

Просто сначала закодируйте значения, а затем передайте curl как параметры поля публикации.

$encodedValue = urlEncode("this has spaces - oh no!");
$c = curl_init();
curl_setopt($c, CURLOPT_URL, 'http://www.mydomain.com/test.php');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS , "value=" . $encodedValue);
curl_exec ($c);
curl_close ($c);

ИЛИ, если в вашем ключе есть пробелы:

 $encodedKey = urlEncode("first name");
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, 'http://www.mydomain.com/test.php');
    curl_setopt($c, CURLOPT_POST, true);
    curl_setopt($c, CURLOPT_POSTFIELDS , $encodedKey . "=Bobby");
    curl_exec ($c);
    curl_close ($c)
person Eddie    schedule 20.04.2012
comment
Спасибо за Ваш ответ. Я просмотрел ссылку, но я не понимаю, как это сделать с моим примером. Я пробовал с urlenconde (Имя=Джон&Фамилия=bt) и не работает. Спасибо за вашу помощь. - person cabita; 20.04.2012
comment
Плохо, я вижу, вы используете библиотеки PHP cURL:, а не автономную утилиту curl. Просто используйте команду PHP urlencode. - person Eddie; 25.04.2012
comment
вы не можете использовать пробел в именах переменных, если вы используете пробел в ‹input name=First Name на стороне php, вы должны перехватить его с помощью $_REQUEST[First_Name] - person Wasim A.; 28.07.2015