Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/06/2013, 03:56
asabervgz
 
Fecha de Ingreso: febrero-2010
Mensajes: 25
Antigüedad: 14 años, 9 meses
Puntos: 0
Problema con curl y formularios post.

Estoy intentando apreder a utilizar curl pero me encuentro con un problema nada más empezar.
Tengo un formulario sencillo que envía un nombre, apellido y email mediante post y otro archivo php que muestra las variables enviadas.
Cuando envío el formulario, capturo las cabeceras con con el plugin http headers de firefox y me muestra esto:

Código:
http://localhost/a/formulario/usuarionuevo.php

POST /a/formulario/usuarionuevo.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost/a/formulario/index.php
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 58
nombre=Asaber&apellido=Garc%EDa&email=asaber%40hotmail.com

HTTP/1.1 200 OK
Date: Fri, 21 Jun 2013 09:27:20 GMT
Server: Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.1.6
X-Powered-By: PHP/5.1.6
Content-Length: 56
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

Después envío los datos mediante curl desde el siguiente código:

Código:
<?php
	$nom = "Asaber";
	$ape = "García";
	$ema = "[email protected]";

	$ch= curl_init("http://localhost/a/formulario/usuarionuevo.php");
	curl_setopt ($ch, CURLOPT_POST, 1);
	curl_setopt ($ch, CURLOPT_POSTFIELDS, "nombre=$nom&apellido=$ape&email=$ema");
        $res=curl_exec ($ch);
	curl_close($ch);

?>
El resultado final es el mismo en ambos casos, tanto con el formulario como con el envío curl se muestran los datos finales por lo que el código funciona correctamente (o al menos lo parece).
El problema es que al analizar el envío curl con http headers me muestra lo siguiente:

Código:
http://localhost/a/formulario/curl.php

GET /a/formulario/curl.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive

HTTP/1.1 200 OK
Date: Fri, 21 Jun 2013 09:30:40 GMT
Server: Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.1.6
X-Powered-By: PHP/5.1.6
Content-Length: 56
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
¡¡¡El envío no se realiza con post, si no mediante get!!!
O algo se me escapa o algo me falta.
¿Alguien me puede explicar por qué pasa esto?
¿Conocéis alguna forma mejor de analizar lo que el navegador envía con los formularios, cabeceras, etc?

Gracias por adelantado.