¿Para que usar CURL si se puede usar la API de Facebook? sencillo, porque la API no te permite obtener todos los datos que se pueden leer cuando navegas por Facebook. Por ello, en alguna ocasión, nos podemos encontrar con la necesidad de loguearnos en Facebook y “navegar” usando CURL:
echo 'loading
';
$login_email = 'my@sexy.mail';
$login_pass = 'my_sexy_password';
$fp = fopen("fb_cookies.txt", w);
fclose($fp);
echo 'still loading
';
if (fb_login($login_email,$login_pass)){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?login_attempt=1');
curl_setopt($ch, CURLOPT_POSTFIELDS,'charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&locale=en_US&email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&pass_placeholder=&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace('\\','/',dirname(__FILE__)).'/fb_cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace('\\','/',dirname(__FILE__)).'/fb_cookies.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)");
$html = curl_exec($ch);
curl_close($ch);
echo $html;
}
function fb_login($login_email, $login_pass){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.facebook.com/login.php?login_attempt=1');
curl_setopt($ch, CURLOPT_POSTFIELDS,'charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84&locale=en_US&email='.urlencode($login_email).'&pass='.urlencode($login_pass).'&pass_placeholder=&charset_test=%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, str_replace('\\','/',dirname(__FILE__)).'/fb_cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, str_replace('\\','/',dirname(__FILE__)).'/fb_cookies.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)");
$html = curl_exec($ch);
$err = 0;
$err = curl_errno($ch);
curl_close($ch);
if ($err != 0){
echo 'error='.$err."\n";
return(false);
} else {
echo 'fetching..';
return(true);
}
}
Código fuente en Pastie
Vía / Stack Overflow
Yo uso otro funcion como reemplazo de var_dump (extraida de CakePHP) que aunque no tiene colores presenta la informacion bastante ordenada:
[code]
function debug($var = false, $showFrom = true) {
if ($showFrom) {
$calledFrom = debug_backtrace();
$file = str_replace(‘\\’, ‘/’, $calledFrom[0][‘file’]);
echo ‘‘ . $file . ‘‘;
echo ‘ (line ‘ . $calledFrom[0][‘line’] . ‘)’;
}
echo “\n\n”;
$var = print_r($var, true);
echo $var . “\n\n”;
}
[/code]
Bueno la clase esta interesante y muy practica, gracias por publicar un post con la info.
Saludos.
Gracias Gabriel por el script.
Domingo, espero que te sea de utilidad
Yo suelo utilizar la función fb de FirePHP, un complemento de Firebug:
http://www.firephp.org/