-1

モバイル Web サイトを作成していて、ユーザーが特定の国からサイトにアクセスした場合に特定のスクリプトを読み込みたい

例えば:

A 国のユーザー --> スクリプトをロード

他の国のユーザー --> B スクリプトをロード

インターネットで検索した後、最も簡単な方法は Hostip サービスを使用することです

http://api.hostip.info/country.php

したがって、ユーザーの現在の場所が返されます。

しかし、戻り値を抽出して IF ステートメントで使用するにはどうすればよいでしょうか?

ちょうどこのような:

if (return value of http://api.hostip.info/country.php = US){
load script for US user;
} else {
load script for users from other countries
};

どうもありがとう :)

4

4 に答える 4

2

file_get_contents(' http://api.hostip.info/country.php )) を実行すると、訪問者の国ではなく、Webサーバーの国が確実に返されますか?

以前は IP2Nation を使用していましたが、最近不正確であることが判明したため、これに切り替えました。

http://dev.maxmind.com/geoip/legacy/geolite/

この例では、国のデータを CSV 形式でダウンロードしました: http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip

次に、このデータを次のように mysql テーブルに入れます

CREATE TABLE `geoip` (`ipstart` int(10) unsigned NOT NULL, `ipend` int(10) unsigned NOT NULL, `code` char(2) NOT NULL, PRIMARY KEY  (`ipstart`,`ipend`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `geoip` (`ipstart`, `ipend`, `code`) VALUES (16777216, 16777471, 'au'),
(16777472, 16778239, 'cn'),
(16778240, 16779263, 'au'), 
etc...

$_SERVER["REMOTE_ADDR"] は、たとえば誰かがプロキシの背後にいる場合、常に正しい IP アドレスを返すとは限りません。この関数を使用して、訪問者の実際の IP アドレスを (可能な限り) 決定できます。

function get_real_ip () {
  if (!empty ($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    return $_SERVER['HTTP_X_FORWARDED_FOR'];
  } elseif (!empty ($_SERVER['HTTP_CLIENT_IP'])) {
    return $_SERVER['HTTP_CLIENT_IP'];
  }
  return !empty ($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
}

次に、次のような PHP 関数を使用して顧客の国を取得できます。

function get_country_by_ip ($ip) {
  $ip = ip2long ($ip);
  $sql = 'SELECT code FROM geoip WHERE ipstart <= ' . $ip . ' AND ipend >= ' . $ip . ' LIMIT 1';
  // Get result of mysql query and return it here
}

したがって、最終的なコードは次のようになります。

define ('COUNTRY_CODE_US', 'us');
if (get_country_by_ip (get_real_ip () == COUNTRY_CODE_US) {
  // load script for US user;
} else {
  // load script for users from other countries
};

このソリューションには、米国だけでなく、さまざまな国のユーザーに対してさまざまなことを実行できるという利点があり、失敗する可能性のあるサードパーティの Web サイト/API への呼び出しに依存していません。

于 2013-08-29T15:23:00.660 に答える
0

郡のユーザーを識別するには、IP を知ってから、IP を API の
例に送信する必要があります

<?php
$ip= $_SERVER["REMOTE_ADDR"]; //gives ip
$json=file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip); // return json ,
//example {"country_name":"UNITED STATES","country_code":"US","city":"Aurora, TX","ip":"12.215.42.19"}
// you need remember country_code

$arrayCounty=json_decode($json,TRUE); //json in array

//and then your if
if ($arrayCounty["country_code"]=="US"){
    echo("people from US");
}
else{

}

?>
于 2013-08-29T15:22:04.853 に答える
0

これを試してみてください。

$country = file_get_contents('http://api.hostip.info/country.php');

if($country == 'US') {
  echo "You're in the US";
} else if ($country == 'Mexico') {
  echo "Yeah, you're in Mexico.";
}
于 2013-08-29T15:16:33.203 に答える
0

これに使用できますfile_get_contents()

if ('US' == $loc = file_get_contents('http://api.hostip.info/country.php')) {
    echo 'From US...';
} else {
    echo 'From ', $loc;
}

基本的なスタートとして。

于 2013-08-29T15:19:26.880 に答える