这将使用来自Data Science Toolkit的开源IP2Coordinates 服务从用户的 IP 地址获取用户的邮政编码。
那里有更准确的地理位置 API,但这个 API 是完全免费的,而且使用起来非常简单。如果我在生产站点上开发这个,我会使用HTML5 Geolocation作为我的主要方法,并回退到更好的 IP 地理定位器,比如Max Mind。
请注意,这仅适用于您网站的美国用户。您可能应该将更详细的数据传递给其他 Yahoo 地点 API 之一,以使用其 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");