Cómo utilizar cURL en PHP
cURL se utiliza a diario en líneas de comando o scripts para transferir datos. cURL también se usa en automóviles, televisores, enrutadores, impresoras, equipos de audio, teléfonos móviles, tablets, decodificadores, reproductores multimedia y es el motor de transferencia de Internet para miles de aplicaciones de software en más de diez mil millones de instalaciones.
PHP soporta cURL gracias a libcurl, una biblioteca creada por Daniel Stenberg que permite conectarse y comunicarse con diferentes tipos de servidores y diferentes tipos de protocolos. Actualmente libcurl admite los protocolos http, https, ftp, gopher, telnet, dict, file y ldap. libcurl también admite certificados HTTPS, HTTP, POST, HTTP PUT, subidas mediante FTP (también se puede hacer con la extensión FTP de PHP), subidas basadas en formularios HTTP, proxies, cookies, y autenticación usuario + contraseña.
Como puedes ver, el uso de cURL en PHP está pensado para la transferencia de datos, y es realmente útil cuando pensamos en obtener o enviar datos en nuestras aplicaciones, una herramienta que debemos conocer para poder atender estos casos.
Ejemplos aplicables a proyectos reales
La mejor forma de entender cómo funciona cURL en PHP y de ver su potencial es a través de ejemplos que nos permitan aplicar diferentes casos que podamos necesitar en nuestro día a día.
Obtener datos con cURL utilizando GET
El primer caso es el más típico, obtener datos de una API REST:
curl_init: Inicia una nueva sesión y devuelve el manipulador cURL para el uso de las funciones curl_setopt(), curl_exec(), y curl_close().
curl_setop: Establece una opción en la sesión del recurso cURL, opcionalmente podemos utilizar curl_setopt_array para configurar múltiples opciones.
CURLOPT_URL: Nos permite definir la URL de la petición cURL a través de curl_setop.
CURLOPT_RETURNTRANSFER: Nos permite almacenar la respuesta en la variable $data en lugar de mostrar el resultado en pantalla.
curl_exec: Ejecuta la sesión cURL que se le pasa como parámetro. Esta función debe llamarse después de inicializar una sesión cURL y todas las opciones para la sesión están establecidas.
curl_close: Cierra una sesión cURL y libera todos sus recursos. El recurso cURL, $curl
, también es eliminado.
Con lo anterior nos hemos comunicado con un servidor a través de la URL http://127.0.0.1:3000/todos y hemos obtenido los datos para finalmente volcarlos con var_dump.
Enviar datos con cURL utilizando POST
Este caso es también muy típico, querer enviar datos a un servidor para dar de alta recursos, un post, una tarea o cualquier otra cosa, mira qué sencillo es:
CURLOPT_POST: Le decimos a cURL que queremos hacer una petición POST.
CURLOPT_POSTFIELDS: Los campos que deseamos enviar en la petición POST, al utilizar esta opción podemos obviar CURLOPT_POST ya que es implícito.
Actualizar datos con cURL utilizando PUT
Una vez hemos creado un recurso, posiblemente necesitaremos actualizarlo, para ello podemos hacer lo siguiente:
CURLOPT_CUSTOMREQUEST: Esta opción es muy importante, en este caso nos permite sobrescribir el verbo HTTP utilizado para enviar una petición PUT.
CURLOPT_HTTPHEADER: Con esta opción podemos definir las cabeceras de la petición haciendo uso de un array.
Eliminar datos con cURL utilizando DELETE
Una vez hemos creado, listado y actualizado, es el momento de eliminar, para ello, siguiendo el ejemplo con PUT, podemos hacer lo mismo, pero en este caso una petición DELETE.
En este último caso no tenemos nada que comentar, es lo mismo que en la petición PUT exceptuando las cabeceras, que no necesitamos definirlas aquí.
Subir archivos a un servidor con cURL
Subir archivos a un servidor es necesario hoy en día, todas las plataformas lo hacen, y es algo que debemos conocer bien. Por suerte para nosotros llevar a cabo esta funcionalidad con cURL en PHP es realmente sencillo.
Primero te adjunto la solicitud que necesitamos hacer para enviar archivos:
CURLFile: Debe emplearse para subir un fichero con CURLOPT_POSTFIELDS
, de esta forma definimos el archivo que deseamos enviar al servidor en la solicitud.
Ahora que hemos enviado el archivo con cURL, veamos cómo recibirlo y procesarlo.
En este script sólo procesamos la subida del archivo al servidor, es cierto que de forma bastante rudimentaria, pero es completamente funcional, además, retorna una respuesta JSON que será recuperada por cURL.
Basic Auth con cURL en PHP
En el contexto de una transacción HTTP, la autenticación de acceso básica es un método diseñado para permitir a un navegador web, u otro programa cliente, proveer credenciales en la forma de usuario y contraseña cuando se le solicita una página al servidor (Wikipedia).
Realizar una petición utilizando Basic Auth con cURL en PHP es realmente sencillo.
CURLOPT_USERPWD: Esta opción enviará en las cabeceras de la petición los datos de autenticación, datos que podremos comprobar como verás a continuación.
Hecha la petición, vamos a ver cómo podemos recibir la solicitud y de paso comprobar si la autenticación es correcta o no con los datos que nosotros podemos esperar.
El código anterior muestra una forma de comprobar si las cabeceras de la petición contienen la información necesaria de Basic Auth y podemos atender o no esa solicitud.
Conclusiones
Como has podido ver, el uso de cURL en PHP es una poderosa herramienta que no debemos obviar ya que nos ofrece una gran característica para la gestión de las peticiones HTTP entre otras de forma rápida y sencilla. Si deseas seguir aprendiendo más temas sobre PHP, no te pierdas nuestro curso gratuito de PHP 8.