Это позволит получить почтовый индекс пользователя с его IP-адреса с помощью службы IP2Coordinates с открытым исходным кодом из Data Science Toolkit.
Существуют более точные API-интерфейсы геолокации, но этот абсолютно бесплатный и чрезвычайно прост в использовании. Если бы я разрабатывал это на рабочем сайте, я бы использовал в качестве основного с возможностью перехода к лучшему геолокационному IP-адресу, например Max Mind.
Обратите внимание, что это будет работать только для пользователей вашего сайта из США. Вероятно, вам следует передать более подробные данные одному из других API-интерфейсов Yahoo Place, чтобы использовать один из их WOEID (или выбрать другой API погоды).
Вот вам код. Поместите это сразу после тега <?php
в вашем примере кода. Убедившись, что он работает, закомментируйте все строки, начинающиеся с print
.
//Get the user's IP address
$user_ip = $_SERVER['REMOTE_ADDR'];
//The Data Science Toolkit URL
$url = 'http://www.datasciencetoolkit.org/ip2coordinates/';
//Find the user's location from their IP.
//*** You need the get_data function from the sample code
$raw_geocode = json_decode( get_data( $url . $user_ip) );
//Check if the user is in the US
if ('US' === $raw_geocode->$user_ip->country_code) {
//If yes, store their zip code in a variable, and print it
$zip_code = $raw_geocode->$user_ip->postal_code;
printf('<p>Your zip code is: %s</p>', $raw_geocode->$user_ip->postal_code);
} else {
//If the user isn't in the US, set a sip code that will work.
$zip_code = '97211';
//and print an error
printf('<p>Sorry, this app does not work in %s.</p>', $raw_geocode->$user_ip->country_name);
}
//Print the raw data for debugging.
printf('<pre>%s</pre>', print_r($raw_geocode, true));
Теперь измените строку в примере кода, начинающуюся с $data =
, на следующую:
$data = get_data("http://weather.yahooapis.com/forecastrss?p={$zip_code}&u=f");
person
cpilko
schedule
26.08.2012