ホームページ  >  記事  >  バックエンド開発  >  PHP IP アドレスの位置情報の取得プログラム_PHP チュートリアル

PHP IP アドレスの位置情報の取得プログラム_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:56:121413ブラウズ

文章利用了第三方接口来实现ip地址查询,这里根据用户提交的IP地址就可以方便的查出IP地址真实所在地。

 代码如下 复制代码

0){$urlip=array_keys($_GET);$urlip=str_replace("_",".",$urlip[0]);}?>




$ip=$_POST['ip']?$_POST['ip']:$urlip;if(!$ip)$ip=get_real_ip();
$ip=preg_match('/((w|-)+.)+[a-z]{2,4}/i',$ip)?gethostbyname($ip) : $ip;
$ipdata=ipdata($ip,'all');
?>


 


 

IP查询



 

 


IP地址或域名:




  if(is_ip($ip)){
$ipaddress=$ipdata->country;
  if($ipdata->region==$ipdata->city){$ipaddress.=$ipdata->city;}else{$ipaddress.=$ipdata->region.$ipdata->city;}
  $ipaddress.=$ipdata->isp;
  echo "您查询的IP: [".$ip."]IP详细地址: [".$ipaddress."]
";
 }else{echo "?澹?闶淙氲?P,居然不能查询到!不是输入错误?";}
 $ipdaili=$_SERVER['REMOTE_ADDR'];
 if(!in_array($ipdaili,array('127.0.0.1',$ip,$_SERVER['SERVER_ADDR'],get_real_ip()))){
  echo "您的代理IP是[".$ipdaili."] 来自".ipdata($ipdaili)."";
 }
$whiosip=$_POST['ip']?$_POST['ip']:$urlip;
if($whiosip){preg_match('/((w|-)+.)+[a-z]{2,4}/i',$whiosip) ? $whois=str_replace("www.","",$whiosip):"";}
if($whois){echo "

点击查看域名 ".$whois." 的WhoIs信息";}
?>











関数curl_file_get_contents($durl){
  $f = 新しい SaeFetchurl();
   $content = $f->fetch($durl);
   if($f->errno() == 0) $r=$content;
   else $r=$f->errmsg();
   $r を返します;
}
関数 get_real_ip(){
 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))
 {$ip = getenv('HTTP_CLIENT_IP');}
 elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))
 {$ip = getenv('HTTP_X_FORWARDED_FOR');}
 elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))
 {$ip = getenv('REMOTE_ADDR');}
 elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
 {$ip = $_SERVER['REMOTE_ADDR'];}
 return preg_match("/[d.]{7,15}/", $ip, $matches) ? $matches[0] : false;
}
関数 is_ip($str) {
    $ip =explode(".", $str);if (count($ip)<4 || count($ip)>4) return 0;
    foreach($ip as $ip_addr) {if ( !is_numeric($ip_addr) ) return 0;if ( $ip_addr<0 || $ip_addr>255 ) return 0;
    } 1 を返します;
}
関数 ipdata($ip,$name="0")
{
 $url="http://ip.taobao.com/service/getIpInfo.php?ip=";
 $data=json_decode(curl_file_get_contents($url.$ip)); $ipdata=$data->データ;
 if($name=="all") {return $ipdata;}
 else if($name=="0"){return $ipdata->country.$ipdata->region.$ipdata->city.$ipdata->isp;}
 else if($name=="1"){return $ipdata->country;}
 else if($name=="2"){return $ipdata->area;}
 else if($name=="3"){return $ipdata->region;}
 else if($name=="4"){return $ipdata->city;}
 else if($name=="5"){return $ipdata->county;}
 else if($name=="6"){return $ipdata->isp;}
}
?>
IP 国家/地区 省份 城市 ;th>县 运营商
国.$ipdata->エリア?>地域? >city?>county?>isp?>

淘宝網 IP アドレス ライブラリ インターフェイスの説明
1. リクエストインターフェイス (GET):

http://ip.taabao.com/service/getIpInfo.php?ip=[IPアドレス文字列]

2. 応答情報:

(json形式)国、省(自治区または市区町村)、市(郡)、事業者

3. 戻りデータ形式:

コードは次のとおりです コードをコピー
{"コード":0,"データ":{"ip":"210.75.225.254","国":"u4e2du56fd","エリア":"u534eu5317",
"地域":"u5317u4eacu5e02","都市":"u5317u4eacu5e02","郡":"","isp":"u7535u4fe1",
"country_id":"86","area_id":"100000","re​​gion_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}

コードの値の意味は、0:成功、1:失敗です。

.htaccess ユニバーサル版の疑似静的ルール その他のルールについては、以下を参照して修正してください

コードは次のとおりです コードをコピー
リライトエンジンオン
RewriteRule ^(.*)$index.php?id=$1[L]

sina SAE 特別版の擬似静的構成ルール

コードは次のとおりです コードをコピー
- 書き換え: if (!is_dir() && !is_file() && path ~ "/(.*)" ) goto "index.php?$1"

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631621.html技術記事この記事では、サードパーティのインターフェイスを使用して IP アドレス クエリを実装しています。ここでは、ユーザーが送信した IP アドレスに基づいて、IP アドレスの実際の場所を簡単に見つけることができます。 コードは次のとおりです。 コードをコピーします ?php header(c...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。