Otro día más volvemos para hablar de PHP, y como en el volumen anterior, esta vez toca hablar sobre la librería cURL. Podéis visitar el índice por si os habéis perdido alguna sesión.
En este volumen hablaremos más en profundidad sobre cURL y aprenderemos a usarlo un poco más utilizando el protocolo HTTP.
Como bien dijimos hace tiempo, cURL sirve para comunicarnos fácilmente con diversos protocolos, en este caso estamos usando HTTP, por ello vamos a aprender a hacer peticiones POST (en las que tengamos que enviar algunos datos) con cURL, ya que las peticiones GET , sabiendo un mínimo sobre HTTP, serían bastante fáciles de hacer con cURL.
Como bien sabemos, las peticiones GET entre otras cosas, no aparecen directamente en la URL cuando realizamos una petición desde nuestro navegador, en esto reside la “complicación de hacerlo por cURL”.
Para realizar una petición POST por cURL deberemos realizarla de esta manera o similar (ya sabéis que en programación no suele haber estándares en muchas cosas, y cada uno escribe el código como más le gusta)
[php]
"usuarioalazar", "contraseña" => "contraseñaalazar");
$_url = "http://www.ejemplo.com/autentificacion";
#####
foreach ($_datos as $_name=>$_value)
{
$_datosEnvio[] = "{$_name}=".urlencode($_value);
}
#Este bloque de código se usa para transformar los datos a un formato valido
#####
$_handler = curl_init();
curl_setopt($_handler, CURLOPT_URL, $_url);
curl_setopt($_handler, CURLOPT_POST,true);
curl_setopt($_handler, CURLOPT_POSTFIELDS, $_datosEnvio);
$_respuesta = curl_exec($_handler);
echo $_respuesta
curl_close($_handler);
?>
[/php]
Vamos ahora a ver la explicación del código por fragmentos del mismo:
[php]
$_datosEnvio = array();
$_datos = array("usuario" =>"usuarioalazar", "contraseña" => "contraseñaalazar");
$_url = "http://www.ejemplo.com/autentificacion";
[/php]
En esta parte del código se define un array que más tarde se utilizará para almacenar los datos, y también se define la url a la que se va a conectar cURL.
Pero la parte importante de este fragmento es la siguiente:
[php]
$_datos = array("usuario" =>"usuarioalazar", "contraseña" => "contraseñaalazar");
[/php]
Es un array que contendrá los datos que tenemos que enviar, siendo el nombre del campo el nombre del valor a enviar y el valor, el valor que se enviará.
Es importante que el nombre del campo en nuestro script coincida con el de la URL a la que nos estamos conectando, de lo contrario, no funcionará, ya que le estaremos enviando un dato al servidor que no sabrá cómo interpretar.
[php]
#####
foreach ($_datos as $_name=>$_value)
{
$_datosEnvio[] = "{$_name}=".urlencode($_value);
}
#Este bloque de código se usa para transformar los datos a un formato válido
[/php]
En este bloque de código se recorre el array y se almacena en el array declarado en la primera línea, pero antes de esto se transforman los datos en un formato válido para cURL.
Podéis imprimir el array para ver el formato válido con este código :
[php]
echo var_dump($_datosEnvio);
[/php]
El siguiente fragmento:
[php]
$_handler = curl_init();
curl_setopt($_handler, CURLOPT_URL, $_url);
curl_setopt($_handler, CURLOPT_POST,true);
curl_setopt($_handler, CURLOPT_POSTFIELDS, $_datosEnvio);
$_respuesta = curl_exec($_handler);
echo $_respuesta
curl_close($_handler);
?>
[/php]
De esta última porción de código lo único que realmente desconocemos hasta ahora son las siguientes líneas:
[php]
curl_setopt($_handler, CURLOPT_POST,true);
curl_setopt($_handler, CURLOPT_POSTFIELDS, $_datosEnvio);
[/php]
Cada una de esas líneas tiene como cometido una tarea relacionada con el envío de datos POST, la primera activa la opción para poder enviar por POST y la segunda como os estaréis imaginado por el argumento, establece que datos van a enviarse en nuestro caso la array ($_datosEnvio).
Pues hemos acabado con cURL, no sin antes comentaros aunque sin entrar en ello, que existen muchas otras funciones soportadas en cURL y muchas de ellas muy útiles, sin ir más lejos el uso de cookies por ejemplo entre otras.
Lo aprendido hasta ahora de cURL es lo básico, no obstante ya con sólo esto podríamos hacer cosas interesantes como loguearnos en determinadas webs y extraer información de ellas por ejemplo.
Esto es todo en el volumen de hoy, volveremos a vernos aquí en RedesZone, ya sabéis que al estar llegando a la parte final del curso, y al tener que planificar mejor el contenido los plazos de salida de los volúmenes ahora son variables.