1

GeoIP データベースを使用するために構築されたモジュールがあります。私はそれを使用して、Web サイトにアクセスしているユーザーの場所を取得し、YQL 天気から取得した都市 (米国のみ) の現在の天気を提供できます。私はこれを見つけましたhttps://stackoverflow.com/questions/12365078/best-way-to-get-location-weather-details-accurately読み取りは、ユーザーが自分の場所を入力しないとあまり正確ではありません。

これまでのところ、正しい場所が 90% 正常に表示されています。正しい場所を取得するために DHCP リースを更新する必要がある場合もありますが、クライアントはまだオフィスで正しい都市を取得できません。彼らのネットワーク接続についてはよくわかりませんが、転送されているのでしょうか...

モジュールでユーザーのIPを取得する方法は次のとおりです。

function getIpAddresses() {
   $ipAddresses = array();
   if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {

  $ipAddresses['proxy'] = isset($_SERVER["HTTP_CLIENT_IP"]) ? $_SERVER["HTTP_CLIENT_IP"] : $_SERVER["REMOTE_ADDR"];
  $ipAddresses['user'] = $_SERVER["HTTP_X_FORWARDED_FOR"];

  } else {
  $ipAddresses['user'] = isset($_SERVER["HTTP_CLIENT_IP"]) ? $_SERVER["HTTP_CLIENT_IP"] : $_SERVER["REMOTE_ADDR"];
  }
   return $ipAddresses;
  }

ユーザーの位置情報の入力を要求せずに IP を取得/精度を向上させるより良い方法はありますか? ありがとう!

4

1 に答える 1

1

いくつかのオプションがあります。

  • より優れた GeoIP データ プロバイダーを探します。無料のデータ プロバイダーはいくつかありますが、私の経験では、国レベルのようなものはかなり得意です。
  • IP を更新している場合でも、特定のサブネットに固執している可能性があるため、現在の IP を記録します。そのサブネットを正しい場所にハードコーディングします。
  • JavaScript ロケーション API を組み込み、そのデータをサーバーに送信します。クライアント コンピューターがラップトップの場合、単純な GeoIP よりも優れた位置情報が提供される場合があります。
于 2013-01-24T23:48:36.253 に答える