Triby ya te ha dado la solución pero no le crees por eso es que no lo quieres implementar como el te dice.
Vamos a repasar unos puntos, voy a entrar en detalles mínimos tal vez ahora si nos creas.
* urlencode()
Cita:
Iniciado por PHP.NET/urlencode Devuelve una cadena en la que todos los caracteres no-alfanuméricos excepto -_. han sido reemplazados con un signo de porcentaje (%) seguido por dos dígitos hexadecimales y los espacios son codificados como signos de suma (+). Esta es la misma codificación usada en los datos publicados desde un formulario WWW, es decir, el mismo mecanismo usado para el tipo de medios application/x-www-form-urlencoded.
Lo que significa que si vas a usar urlencode de ésta forma:
Código PHP:
Ver originalforeach ($datos as $key => $value) {
$post_str .= $key. '=' .urldecode($value).'&';
}
tendras que especificar un
content-type: application/x-www-form-urlencoded.
para que sea enviado con tu solicitud http.
es decir:
Si no haces eso no te funcionará. (
TU PROBLEMA)
Ahora una mejor solución es sin duda la que te propone Triby ya que no tienes que gastar memoria del disco en crear un arreglo (array), llenarlo para después recorrerlo y asignar el valor actual concatenando una cadena, etc... (Es un número tan pequeño que se dice "despreciable" pero de todas formas....)
Y si por alguna razón eso no te funciona intenta agregar el content-type adecuado a esa solicitud. Como es POST y no necesitas ningún tipo de codificación especial utiliza:
multipart/form-data Código PHP:
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));
EJEMPLO TERMINADO:[*] Usando un array asociativo en CURLOPT_POSTFIELDS
Código PHP:
Ver original//Inicio el recurso
$curl = curl_init("http://servidor.com/recurso.php");
//seto las opciones más básicas
curl_setopt($curl, CURLOPT_HTTPHEADER
, array("Content-type: multipart/form-data"));
//Le meto los valores que recibo del formulario.....
//Ejecuto el recurso
//Lo cierro
//Dentro de $data tengo el código fuente que genera el recurso.
Si no te funciona prueba verificando que tengas compilado curl.
Windows:
http://www.desarrolloweb.com/faq/ins...php-xampp.html (LEE LA RESPUESTA DE Miguel Angel.....)
UNIX:
http://energy.sdsu.edu/testhome/phpinstall.html (SALTA AL PASO 12)
Saludos
_____________________
EDITO: Acabo de ver que usas urldecode(), no entiendo. ¿Que es lo que estás recibiendo por POST o por que la decodificas??. De cualquier forma los 2 ejemplos te sirven :D
--> Y si no ve a la segunda solución y listo.