viernes, 18 de abril de 2014

[Parte 1] CURL en PHP

Instalacion

Lo primero que debemos hacer para comenzar a utilizar cURL es instarlo, para ello puedes descargarlo desde: http://curl.haxx.se/

La guia para la instalacion de cURL compilandolo esta aqui: http://curl.haxx.se/docs/install.html

En este caso no veremos en detalle esto ya que pues vienen los pasos muy detallados en la pagina de la documentacion de cURL, por lo cual veremos solamente como instarlo en la distribucion de ubuntu usando un solo comando:

Instalar cURL con un solo comando desde la terminal:


sudo apt-get install php5-curl

Reiniciar el servidor apache para que funcione cURL:

sudo /etc/init.d/apache2 restart

Como ves es demasiado facil, y de hecho ya existen muchos paquetes que te incluyen un servidor apache,mysql,php tal como puede ser XAMPP, AppServ... los cuales pueden descagar desde su web oficial y son faciles de instalar y casi siempre ya traen soporte para cURL:

XAMPP: https://www.apachefriends.org/es/index.html
AppServ: http://www.appservnetwork.com/?newlang=spanish

Para saber si nuestro servidor soporta cURL solamente creamos un archivo como el siguiente info.php:

 <?php phpinfo(); ?>

Entramos al archivo y veremos algo como lo siguiente:


¿Que es cURL?

cURL es una herramienta para usar en un interprete de comandos para transferir archivos con sintaxis URL, soporta FTP, FTPS, HTTP, HTTPS, TFTP, SCP, Telnet, DICT, FILE, y LDAP. cURL soporta certificados HTTPS,HTTP POST, HTTP PUT,Subidas FTP, Kerberos, Subidas mediante formulario HTTP, proxies, cookies, autenticacion mediante usuario+contraseña (Basic, Digest, NTLM y Negotiate para HTTP y Kerberos4 para FTP), continuacion de transferencia de archivos, tunneling de proxy http y muchas otras prestaciones. cURL es opensource/software libre distribuido bajo la licencia MIT. El proposito y uso para cURL es automatizar transferencia de archivos o secuencia de operaciones no supervisadas. Es por ejemplo una buena herramienta para simular las acciones de un usuario en un navegador web. Libcurl es la biblioteca/API correspondiente que los usuarios pueden incorporar en sus programas, cURL actua como un envoltorio (wrapper) aislado para la biblioteca libcurl. libcurl se usa para proveer capacidades de transferencia de URL a numerosas aplicaciones, tanto libres y open source como asi tambien privativas. La biblioteca "libcurl" se puede usar desde mas de 30 lenguajes distintos.


HTTP

Hypertext transfer protocol o http (en español protocolo de transferencia de hipertexto) es el protocolo usado en cada transaccion de la world wide web. Es un protocolo orientado a transacciones y sigue el esquema peticion-respuesta entre cliente y un servidor. Al cliente que efectua la peticion (un navegador o un spider) se conoce como "user-agent" (agente del usuario). A la informacion transmitida se le llama recurso y se la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden ser archivos, el resultado de la ejecucion de un programa, una consulta a una base de datos,la traduccion automatica de un documento, etc. HTTP es un protocolo sin estado, es decir, no guarda ninguna informacion sobre conexiones anteriores. El desarrollo de aplicaciones web necesita frecuentemente mantener el estado. Para eso se usan las cookies, que es informacion que un servidor puede almacenar en el sistema cliente. Esto permite a las aplicaciones web instruir la nocion de "sesion", y tambien permite rastrear usuarios ya que las cookies pueden guardarse en el cliente por tiempo indeterminado.


Uso simple de cURL

La operacion mas comun es obtener una URL. Podriamos hacer referencia a una pagina, imagen o archivo. El cliente hace una peticion GET y recibe el documento que pidio.

curl_init() - esta funcion inicializa una sesion cURL y retorna un manejador cURL.

curl_exec($ch) -  esta funcion deberia ser llamada despues de inicializar una sesion cURL y todas las opciones establecidas en la sesion. Su proposito es simple, ejecutar la sesion CURL predefinida, dada por $ch.

curl_setopt($ch, opcion, valor) - establece una opcion para la sesion de CURL identificada por el parametro $ch, opcion especifica la opcion que se desea establecer, y valor especifica el valor dada la opcion.

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1) - Retorna el contenido de la pagina. Si se establece en 0 no se retornara ninguna salida.


curl_setopt($ch,CURLOPT_URL, $url) - Pasa la url como parametro. Este el el sitio objetivo la direccion url. Esta es la url que vas a obtener desde internet.


curl_exec($ch) - Graba la url y la pasa para la variable a mostrar.

curl_close($ch) -  cierra un recurso curl, libera los recursos del sistema.


 <?php
 // Ejemplo 1
 // Obtener una pagina simple

 $url = "http://arthusu.com.mx/";
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // Retorna el contenido de la pagina
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // sigue las redirecciones
 curl_setopt($ch, CURLOPT_URL, $url); // Pasa la url como parametro
 $resultado = curl_exec($ch); // graba la url y la pasa para una variable
 curl_close($ch); // cierra el recurso y libera recursos para el sistema

 echo $resultado; // Imprime el contenido de la pagina
?>




2 comentarios:

  1. Hola probé el código con la página de google com y funciono a la perfección, pero he probado con otras páginas y no muestra nada.
    Mi pregunta: será configuración el servidor??

    ResponderEliminar
    Respuestas
    1. Hola bro, perdon por no haberte podido responder no habia tenido tiempo, lo que pasa es que muchos servidores tienen sus caceberas http de diferente manera por lo cual tienes que ver que es lo que piden en ellas, de todas maneras tambien puedes usar la funcion curl_error() te recomiendo que te pases por la parte 4 de curl que se encuentra en este mismo blog: http://arthusu.blogspot.mx/2014/04/parte-4-curl-en-php.html

      Eliminar