0

私は Yii+extjs で作業しています。私は天気モジュールを作成しています。ユーザーのIPアドレスから気象情報を取得したい。website="http://www.geoplugin.com/examples" から参照コードを取得しました。そこに記載されているように、getweather関数を=として作成しました

                  public function actionGetWeather()
        {
            $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));
        }

プロジェクトにも ParseXml クラスを含めました。しかし、上記のコードは Fatal error: Call to undefined function get_data() 行 " $raw_geocode = json_decode( get_data( $url . $user_ip) );" としてエラーを出しています。getweather 関数の。それで、私が必要とした変更は何ですか?私を助けてください

4

1 に答える 1

0

curl を使用している場合は、get_data() の定義を as..

function get_data($url)
{
     $ch = curl_init();
     $timeout = 5;
     curl_setopt($ch,CURLOPT_URL,$url);
     curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
     curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
     $data = curl_exec($ch);
     curl_close($ch);
     return $data;
}

または、単に置き換える

     $raw_geocode = json_decode( get_data( $url . $user_ip) );

と...

     $raw_geocode = json_decode(file_get_contents( $url . $user_ip) );
于 2012-12-26T06:39:52.213 に答える