Oct
02
Transacciones HTTP usando PHP
Una modalidad muy de moda en estos días es el establecimiento de servidores de transacciones HTTP o HTTPS (Usando SSL), muchas veces el propósito de estos servidores es hacer de gateway para solicitar servicios a una determinada red de servidores, o dicho de otra forma centralizar todo en una máquina (o como yo en un archivo jeje).
Para generar transacciones HTTP muchas veces es necesario que un script simule postear datos a un script como si los datos vinieran de un formulario HTML (por ejemplo mis horripilantes implementaciones utilizando sockets, gracias a un comentario de Pedro Santana por el messenger)
Bueno, y como ya es costumbre, los fines de semana me la paso encerrado en mi cuarto, ¡sin conexión a internet! así que pues me tengo que poner a leer, estudiar o hacer otra tontería y bueno por ahí en mis viejos libros de PHP me encuentro con estas dos modalidades para implementar Transacciones HTTP con PHP.
) para conectarse al servidor indicado y enviar usando método post los datos que se desean.
- Método 1: Usando CURL.
- Método 2: Usando la clase http_post (Que sinceramente no le encontré por ninguna parte en la Web, pero el libro dice que la diseño ¿Alan van den Bosch? :-S).
Curl es una pequeña utilidad que corre en Unix o Windows y permite generar paquetes HTTP de todo tipo, desde PHP podemos llamar a CURL como un programa externo para generar la transacción de la forma:
< ?
$data="var1=uno&var2=dos&var3=tres";
$URL="http://www.mis-algoritmos.com/getme_by_POST.php";
exec("/usr/local/bin/curl -m 120 -d \"$data 0" http://$URL -L",$return_msg_array,$return_number);
for($i=0;$i
Como vemos curl es llamado usando la función exec al ser un programa externo, $data tiene los datos a enviar en formato var1=uno&var2=dos&var3=tres (Igual que en mi script).
Si no se quiere usar un programa externo podemos usar la clase http_post, que permite postear datos en un servidor, un ejemplo de uso de esta clase es:
< ?
include('class_post.php');
$a=new http_post;
$a->set_action("http://www.mis-algoritmos.com/getme_by_POST.php");
$a->set_element("hola","mundo")
$res=$a->send(0);
print("Resultado: $res");
?>
Como vemos en este script hacemos lo mismo que en el anterior, la diferencia principal radica en que esta clase devuelve como resultado toda la salida del web server (incluyendo header) (Como también en mi ejemplo jeje)
La clase utiliza las funciones de networking de php (Igual que mi script 12 Comments
Make A CommentComments RSS Feed TrackBack URL




October 2nd, 2006 at 1:48 pm
y ahora que hice?
October 2nd, 2006 at 2:19 pm
Pues me dijiste que utilizára Sockets para enviar por POST sin formulario, aunque.. Nunca me dijiste como.. por eso se llama Horrible implementación.
Si no huviera sido por el comentario que me diste, no huviera hecho nada jeje.
¿ahora si ya sabes que hiciste?
October 2nd, 2006 at 4:19 pm
entonces hice algo bueno… creo…
October 2nd, 2006 at 4:37 pm
yes!
November 19th, 2006 at 1:37 pm
ola muxo gusto miren yo estoy estudiando la preparatoria kon la especialidad en computacion kmo programador y estoy viendo codificaciones y pa ser verdad se me dificultan mucho alguien de ustedes ke sepan y las dominen ke me pudieran ayudar se los agradeseria mandenme un correo o agregenme
jars.rammstein@gmail.co x favor bueno bye
April 25th, 2007 at 6:21 pm
Intenté hacer una implementación de la clase http_post, pero, cómo bien dice el autor, no hay mucha información, así que les planteo mi situación haber si me pueden ayudar:
Quiero extraer el resultado de darle seguimiento a un # de guia dentro de estafeta.com.mx, para esto se necesita enviar en número de guia (idGuia) a la página http://rastreo.estafeta.com:7001/ConsultaEnvios/rastreoInternetEsp.jsp
No sé que estoy haciendo mal, ya que no me está regersando nada la conección. Les comparto el código haber si mi error es evidente:
include(’http_post.php’);
$a = new http_post;
$a->set_action("http://rastreo.estafeta.com:7001/ConsultaEnvios/rastreoInternetEsp.jsp");
$a->set_element("VerHist","no");
$a->set_element("idGuia", $_GET['guia']);
$result = $a->send(0);
print("Resultado: $result ");
June 30th, 2007 at 5:18 am
Por fin lo he hecho funcionar! pero me queda una duda: la propiedad “set elements” ¿cómo defino el nombre de las variables get que quiero enviar?
por ahora para que me funcione tengo que usar este formato (ejemplo):
$a->set_action(”http://www.mis-algoritmos.com/getme_by_POST.php?variable=valor&var2=valor2″);
un saludo, gracias por este script
June 30th, 2007 at 5:30 am
Ok solucionado, no lo había entendido bien. Los parámetros se ván declarando con el método set_element en pares, es decir:
$a->set_element(”varabile”,”valor”);
$a->set_element(”var2″,”valor2″);
es un script extremadamente útil
gracias!
June 30th, 2007 at 11:40 am
Así es waremovil, disculpa que no te haya contestado,… no me llegó email de tu comentario :S
July 9th, 2007 at 2:21 pm
saludos amigos espero esten bien, quisiera saber si pueden como instalo el curl en php bajo plataforma windows porque tengo la libreria curl pero no puedo instalarla en php. saludos
July 9th, 2007 at 3:36 pm
http://www.tonyspencer.com/2003/10/22/curl-with-php-and-apache-on-windows/
August 10th, 2007 at 8:32 pm
Que bueno que existen este tipo de servicio para que la gente que los necesite los pueda utilisar, como en este caso necesitamos enviar un mensaje, hasta tapachula chiapas, nueva libertad