Transacciones HTTP usando PHP

Una modalidad muy en boga 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.

Por ejemplo supongamos que el site www.super.com tiene 56 servidores, para poder interactuar con empresas externas www.super.com muchas veces tiene el problema de que un agente externo debe desencadenar una acción en uno de sus web servers, setear “n” servers para permitir que algunas direcciones en particular tengan acceso a cierta funcionalidad es muy complejo por lo que www.super.com decide instalar un servidor de transacciones, cualquiera tiene acceso a este servidor para solicitar servicios usando el protocolo HTTP y este servidor tiene acceso a los servers de www.super.com, el unico cambio en los 56 servers es permitir que el servidor de transacciones opere sobre ellos.

Para generar transacciones HTTP muchas veces es necesario que un scrip “simule” postear datos a un script como si los datos vinieran de un formulario HTML, a continuación sugerimos 2 distintas formas de generar transacciones POST desde un script sin necesidad de que un usuario submitee los datos:

Método 1: Usando CURL.

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:
< ?php $data="hola=mundo"; $URL="luigi.arcadia.com.ar/pruebas/profo.php"; exec("/usr/local/bin/curl -m 120 -d \"$data\" 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 “nombre1=valor1&nombre2=valor2….”, curl devuelve un vector donde cada elemento del vector es una línea de la salida que devuelve el server al recibir el request en modo POST. En este script como vemos pegamos todas las líneas de salida y mostramos el resultado en pantalla.

Método 2: Usando la clase http_post.

Si no que quiere usar un programa externa podemos usar una clase que denominamos http_post y 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://luigi.arcadia.com.ar/pruebas/profo.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 headers) mientras que CURL en la forma en que fue llamado no devuelve los headers.

Fuente: Documento Generación de web sites dinámicos usando PHP