lunes, 21 de julio de 2014

Enviar Variables POST desde PHP con cURL sin usar formularios


Hoy veremos como enviar variables del tipo GET desde un sitio remoto, sin contar con un Formulario clásico de HTML <FORM>. Es decir, que emularemos el comportamiento de un formulario HTML y enviaremos variables del tipo POST a un servidor o dominio específico.

Hay múltiples razones por las que podemos necesitar hacer algo así, y contar con esta alternativa y saber de su existencia puede sernos útil a la hora de tomar decisiones para resolver problemas concretos. En principio, lo más común es que necesitemos enviar informarción desde un sitio alojado en un servidor a otro alojado en otro servidor y queremos evitar el uso de variables GET que nos obliguen a develar información o a tener que encriptarla para su envío.
En nuestro caso, teníamos un formulario de contacto clásico en un sitio web, y necesitábamos que esa misma información se impactara en un servicio alojado en un servidor diferente, en otro dominio, sobre una estructura completamente diferente, y de alguna forma requeríamos actualizar ambos sistemas de forma sincronizada. La razón por la que usamos este método es porque el sistema destino ofrece una forma estandarizada de añadir más información a su base de datos, que utiliza un formulario HTML propio de la aplicación, y es el mejor método y más seguro, que evita además entrometerse en la Base de Datos por detrás del sistema propiamente dicho y correr el riesgo de corromper su estructura.

Para alcanzar este objetivo, utilizamos una extensión de PHP denominada cURL. Esta extensión nos permite establecer sockets de conexión de varios de tipos: FTP, SFTP, HTTP, HTTPS, etc. De este modo, lo utilizaremos para enviar nuestras variables POST a un servicio alojado en un servidor externo.