Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   POST indirecto (https://www.clubdelphi.com/foros/showthread.php?t=38487)

roman 15-12-2006 20:52:54

POST indirecto
 
Hola, tengo esta situación:

Un usuario entra a una página y manda cierta información que recibo en un script, la proceso haciendo unas consultas y con ello obtengo unos datos que debo enviar a un sitio externo para su verificación. Estos datos deben enviarse forzosamente via POST.

¿Cómo lo hago?

Hasta ahora se me ocurre que en el formulario donde el usuario mete su información, en lugar de mandarlo como siempre, use ajax para hacer las consultas, obtener los datos y colocarlos en un segundo formulario con campos ocultos y hacer el submit de ese formulario con javascript.

Pero me gustaría saber si hay alguna manera de hacer un POST directamente con PHP para no depender de ajax ni javascript o si se les ocurre otra forma de hacer esto.

// Saludos

dec 15-12-2006 21:09:16

Hola,

Tal vez una posible solución pasara por utilizar un cliente HTTP. Existen varios, como sabrás. Uno muy utilizado (WordPress hace uso de él) es Snoopy. Personalmente hago uso del HttpClient de Incutio. Seguro que hay más, pero, para empezar ya está bien.

Cita:

Empezado por HttpClient de Incutio
HttpClient is a client class for the HTTP protocol. It can be used to interact with another web server from within a PHP script. As well as retrieving information from a server, HttpClient can interact with a server via POST or GET. It can therefore be used as part of any script that needs to communicate with an application running on another site.


roman 15-12-2006 21:17:11

Gracias. Pensé que sería una de esas clases gigantezcas pero ya veo que esta bastante decente el código. Voy a ver si puedo hacerme uso de él.

// Saludos

dec 15-12-2006 21:19:21

Hola,

Sí; ciertamente, son relativamente sencillas de utilizar ambas clases que te he propuesto. No sé en qué se diferenciarán una de otra, esa es la verdad. De hecho uso la clase de Incutio porque también hago uso de otra de sus clases con buenos resultados. En ambos casos, la verdad, obtengo buenos resultados. De todos modos, al tratarse de código abierto... ya sabes que siempre puedes echarle un vistazo y adaptarlo a tus necesidades. :)

Mick 15-12-2006 21:30:27

Realmente no es necesario usar clases externas para hacer posts y cosas de ese estilo, php ya incluye una libreria "de serie" para ello bastate facil de usar:

Ejemplo que aparece en la ayuda de php sobre la libreria curl:

Código:

TO POST TO A PAGE USING values and fields:
$url="http://anything";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "fieldname=fieldvalue&fieldname=fieldvalue&");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec ($ch); # This returns HTML
curl_close ($ch);

Saludos

dec 15-12-2006 21:38:10

Hola,

Lo que dices está muy bien Mick, empero, la librería a que te refieres no parece estar disponible "de serie". Yo, por ejemplo, en mi servidor local de pruebas no cuento con dicha librería. Más información en el manual de PHP: XVIII. Funciones CURL (Client URL Library).

PD. Acabo de probar en el Servidor que alberga cierta página Web que me traigo entre manos y tampoco parece estar disponible la librería que nos ocupa.

roman 15-12-2006 21:49:35

Cierto, había olvidado que existía curl hasta que lo mencionó Mick. Pero tiene el "problema" que menciona dec. La clase de incutio usa sockets que son intrínsecos a PHP. Por el momento usaré esta, que es para algo muy sencillo y es bastante decente.

Gracias a ambos

// Saludos

halizia 21-12-2006 09:29:32

Para variar estoy bastante perdida, Mick ha dicho cómo se usa la librería pero ¿cual es el archivo que tengo que incluir en mi código? me he bajado el paquete pero sólo hay archivos .h y .c, no se si es que me he bajado el paquete erróneo.


mmm, me he bajado ahora otro paquete, en este caso es un instalador, no sé si con eso ya basta :S

Saludos.

dec 21-12-2006 09:34:32

Hola,

En mi opinión acaso te conviniera centrarte más en las clases que se han mencionado en este Hilo y que permiten hacer peticiones "HTTP POST" que no en cómo utilizar la librería CURL. Ojo, que siempre puedes echar un vistazo a lo que dice el manual de PHP sobre la librería CURL.

Pero, ya digo, no olvides que cuentas con Incutio HttpClient y que en su página Web encuentras ejemplos de uso, "demos", su manual, etc.

halizia 21-12-2006 10:07:30

^^ No habia visto lo de Incutio:p por lo visto sólo tengo que copiar esta librería (http://scripts.incutio.com/httpclien...ient.class.php), añadirla en mis includes y ya ta, no?
Bueno pues me da el siguiente error:
Notice: Undefined index: host in C:\Archivos de programa....\incutio.php on line 314

tengo que darle yo el valor a $host?? he puesto $host='localhost' al principio de la clase, pero me da error en la linea en la que pone: $host = $bits['host'];

Muchas Gracias!!!


La franja horaria es GMT +2. Ahora son las 08:15:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi