Foros del Web » Programando para Internet » PHP »

POST caracteres especiales con cURL

Estas en el tema de POST caracteres especiales con cURL en el foro de PHP en Foros del Web. Hola amigos, fíjense que tengo un problema que en varios días no he podido solucionar. Estoy usando cURL de PHP para automatizar procesos en paginas ...
  #1 (permalink)  
Antiguo 06/01/2016, 21:02
 
Fecha de Ingreso: diciembre-2015
Mensajes: 4
Antigüedad: 8 años, 4 meses
Puntos: 0
POST caracteres especiales con cURL

Hola amigos, fíjense que tengo un problema que en varios días no he podido solucionar. Estoy usando cURL de PHP para automatizar procesos en paginas externas, pero el problema radica en que necesito hacer POST de strings que incluyan el signo de mas +. Al momento de hacer el POST, de manera misteriosa se convierte el + en un espacio ¿Saben a qué se puede deber? Pongo el código de ejemplo a continuación
curl.php:
Código PHP:
<?php
$ch 
curl_init();
$textPrueba "123456+789456";
curl_setopt($chCURLOPT_URL,"http://................./postTest.php");
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS"prueba=".$textPrueba);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
$remote_server_output curl_exec ($ch);
curl_close ($ch);
print_r($remote_server_output);
?>
postTest.php:
Código PHP:
<?php
echo "<h1>".$_POST["prueba"]."</h1>";
?>
Esto me regresa
Código HTML:
<h1>123456 789456</h1> 
me quita el + y lo convierte en espacio. Tambien me di cuenta que si coloca el signo & en el string $textPrueba, al momento de hacer el POST, se corta la cadena.
De antemano se los agradezco, ojala me puedan ayudar.
  #2 (permalink)  
Antiguo 06/01/2016, 21:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: POST caracteres especiales con cURL

Cita:
de manera misteriosa se convierte el + en un espacio ¿Saben a qué se puede deber?
No hay misterio ni de lejos.

Así funciona el carácter + y así está especificado en el estándar HTTP.

Ahora, para que funcione dicho carácter como esperas debes codificar apropiadamente dicho valor.

Consulta la función http_build_query() en el manual: http://php.net/manual/es/function.http-build-query.php

Cita:
Tambien me di cuenta que si coloca el signo & en el string $textPrueba, al momento de hacer el POST, se corta la cadena.
Exactamente lo mismo que antes, una cadena codificada se debe comportar igual usando cualquier método HTTP (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS), porque es el mismo protocolo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/01/2016, 06:16
 
Fecha de Ingreso: enero-2016
Ubicación: Madrid
Mensajes: 4
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: POST caracteres especiales con cURL

Como comenta mi compañero anterior si codificas la información y luego antes de imprimirla la descodificas podría funcionar, me pasó algo similar, al escribir datos y pasarlos por CUrl me convertía los espacios en %20, lo solucioné codificando los datos con las funciones urlencode y urldecode, no se si se tratará del mismo caso pero espero te sirva de ayuda al menos para descartar posibilidades.

Etiquetas: caracteres, curl, especiales, post, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:03.