Witam,
Potrzebny mi jest skrypt, który automatycznie zczytuje API key dla google map. Nie da się jednak tego zrobić nie logując się do systemu google, więc samo fread, czy get_file_contents nie wystarczy. Postanowiłem poduczyć się biblioteki CURL, aby zalogować się do google. Oto funkcje, które miały się logować i ściągać dowolną stronę po zalogowaniu:
<?php
function curl_login($url,$data){
$fp = fopen("cookie.txt", "w"); $login = curl_init();
curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt($login, CURLOPT_TIMEOUT, 40);
curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($login, CURLOPT_URL, $url);
curl_setopt($login, CURLOPT_HEADER, TRUE);
curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($login, CURLOPT_POST, TRUE);
curl_setopt($login, CURLOPT_POSTFIELDS, $data);
return curl_exec ($login); // execute the curl command
curl_close ($login);
}
function curl_grab_page($site){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
return curl_exec ($ch); // execute the curl command
curl_close ($ch);
}
?>
Wywołanie tych funkcji
<?php
$string ='continue=http://maps.google.com/maps/api_signup%3Furl%3Dhttp%253A%252F%252Fantyczne.com.pl%252F&followup=http://maps.google.com/maps/api_signup%3Furl%3Dhttp%253A%252F%252Fantyczne.com.pl%252F&Email=besstt@gmail.com&Passwd=haslo&PersistentCookie=yes&rmShown=1&null=Logga+In';
curl_login('https://www.google.com/accounts/Login',$string);
echo curl_grab_page
('http://maps.google.com/maps/api_signup?url=http%3A%2F%2Fantyczne.com.pl%2F'); ?>
Okazuje się jednak, że to niedziała :/ Wiecie może jaka jest tego przyczyna? Może ktoś już pisał funkcję logującą do google i mógłby się nią podzielić?
Ten post edytował best 18.09.2007, 18:53:31