Для тех, кто использует cURL, обратите внимание, что параметр CURLOPT_POST принимается как логическое значение, поэтому на самом деле нет необходимости устанавливать его в число полей, которые вы POSTing.
Установка CURLOPT_POST в TRUE (т. Е. Любое целое число, кроме нуля) просто скажет cURL кодировать данные как application / x-www-form-urlencoded, хотя я держу пари, что это не является строго обязательным, когда вы передаете строку с urlencoded как CURLOPT_POSTFIELDS, поскольку cURL уже должен указывать кодировку по типу значения (строка против массива), для которого установлена последняя опция.
Также обратите внимание, что, начиная с PHP 5, вы можете использовать функцию http_build_query, чтобы заставить PHP urlencode массив полей для вас, например так:
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));