cURL es una librería que permite realizar peticiones HTTP con el objetivo de transferir información con sintaxis de URL.
En el contexto de PHP, permite armar un script que literalmente se comporte como un navegador para así realizar una petición a otro servidor remoto.
Su utilidad es muy similar al objeto XMLHttpRequest de JavaScript en el sentido de comunicarse con un servidor distinto para la obtención de recursos, datos u otra información.
En PHP se implementa como un conjunto de funciones, cuyas principales que más se usan son:
Ejemplo:
<?php $cliente = curl_init(); curl_setopt($cliente, CURLOPT_URL, "http://educacionit.com"); curl_setopt($cliente, CURLOPT_HEADER, 0); curl_exec($cliente); curl_close($cliente); ?>
De este modo es que se obtiene via HTTP la página educacionit.com.
Pero si se quiere que el contenido que devuelve la página se almacene en una variable, se puede utilizar la opción CURLOPT_RETURNTRANSFER mediante la función curl_setopt:
<?php $cliente = curl_init(); curl_setopt($cliente, CURLOPT_URL, "http://educacionit.com"); curl_setopt($cliente, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $contenido = curl_exec($cliente); curl_close($cliente); ?>
La clave está con definir las configuraciones adecuadas según el objetivo de la petición.
Se puede encontrar la lista completa de opciones en: http://php.net/manual/es/function.curl-setopt.php
Adicionalmente se cuenta con la función curl_getinfo, la cual permite obtener información técnica de la petición que permita auditar el recurso solicitado y/o cualquier otro aspecto necesario.
Ejemplos:
<?php //Buscar en google: $cliente = curl_init(); curl_setopt($cliente, CURLOPT_URL, "https://www.google.com.ar/search?q=EducacionIT"); curl_exec($cliente); curl_close($cliente); ?>
<?php //Iniciar sesion en una pagina web: $cliente = curl_init(); curl_setopt($cliente, CURLOPT_URL, "http://www.miweb.com/login.php"); curl_setopt($cliente, CURLOPT_POST, 1); curl_setopt($cliente, CURLOPT_POSTFIELDS, "usuario=daniel&password=12345;"); curl_setopt($cliente, CURLOPT_COOKIEJAR, "cookies.txt"); curl_exec($cliente); curl_close($cliente); ?>
<?php //Incluir las cabeceras en el output: $cliente = curl_init(); curl_setopt($cliente, CURLOPT_URL, "http://www.miweb.com"); curl_setopt($cliente, CURLOPT_HEADER, true); curl_exec($cliente); curl_close($cliente); ?>
<?php //Mostrar las cabeceras del servidor HTTP junto al código HTML. $cliente = curl_init(); curl_setopt($cliente, CURLOPT_URL, "http://www.miweb.com"); curl_setopt($cliente, CURLOPT_HEADER, true); curl_setopt($cliente, CURLOPT_RETURNTRANSFER, 1); $respuesta = curl_exec($cliente); curl_close($cliente); $respuesta = explode("\n\r\n", $respuesta); $headers = $respuesta[0]; $body = $respuesta[1]; //En la variable headers se guardan los encabezados y en la variable body el código HTML. ?>
En definitiva, la librería cURL puede llegar a ser extremadamente útil en muchas ocasiones: crear scripts automáticos que entren en determinadas webs e interactúen por nosotros, recoger datos y guardarlos en una base de datos, indexar contenido de otras páginas estilo buscador, recoger todas las imágenes de una misma página... e infinitas utilidades para el envío/recepción de recursos distribuidos en Web Services.
Saber es hacer... Happy coding!
¿Buscas desarrollar tus capacidades, formándote en PHP? En EducaciónIT tenemos un curso para ti: Programación Web en PHP. Aquí dominarás la tecnología más utilizada para construir sitios y darás tus primeros pasos para convertirte en un Web Developer, aprendiendo las herramientas básicas necesarias para crear tu sitio en internet.
una pregunta como seria este ejemplo para un php 7 manejando el curl y direccionando a otro servidor por medio del metodo post