Written by admin on Feb 14th, 2008 | Filed under:
CURL,
PHP
Muchas veces necesitamos abrir alguna pagina remota y tomar algo de su contenido, para eso existen varias funciones como fopen(), file_get_contents(). Pero existe un problema, que pasa si la pagina/script que intentamos abrir necesita de algún parámetro que vaya por POST? (si fuera GET se coloca en la URL) para estos casos se puede abrir un socket con fsockopen() e enviar las cabeceras HTTP correspondientes (un poco difícil, no?) o simplemente hacer uso de una genial librería llamada CURL. Con esta librería estas cosas son muy fáciles, y no hay nada mejor para mostrar su potencial que con un ejemplo “real”. En el ejemplo se hacen uso de dos script para mostrar como funciona, el primero es el que abre la sesión CURL e envía los parámetros y la segunda la que los recibe.
Código del script curl.php:
<?php
$array_post = array(“Nombre” => “Dario”, “Apellido” => “Ocles”, “Edad” => 20);
$ch = curl_init(“http://localhost/parametros.php?titulo=”.urlencode(“Este es el titulo pasado por GET.”));
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[‘HTTP_USER_AGENT’]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $array_post);
curl_setopt($ch, CURLOPT_COOKIE, “cookie[0]=dario;cookie[1]=ocles;hola=mundo;”);
$postResult = curl_exec($ch);
if (curl_errno($ch)) {
print curl_error($ch);
}
curl_close($ch);
?>
Código del script parametros.php (el que recibe):
<?php
echo ‘$_POST:<br />’.nl2br(print_r($_POST,true)).‘<br /><br />’;
echo ‘$_GET:<br />’.nl2br(print_r($_GET,true)).‘<br /><br />’;
echo ‘$_COOKIE:<br />’.nl2br(print_r($_COOKIE,true));
?>
Y lo anterior imprime lo siguiente:
$_POST:
Array
(
[Nombre] => Dario
[Apellido] => Ocles
[Edad] => 20
)
$_GET:
Array
(
[titulo] => Este es el titulo pasado por GET.
)
$_COOKIE:
Array
(
[cookie] => Array
(
[0] => dario
[1] => ocles
)
[hola] => mundo
)
Como ven, nada difícil… pruebenlo y jueguen un rato. En la sección del manual de curl_setopt() se muestran todas las constantes que se pueden usar, vean un poco así saben que tienen a su disposición.