基于 IP 地址的地理位置 - PHP [已关闭]

2022-08-30 18:19:46

我们正在寻找一种快速准确的方法来根据访问者的IP获取访问者的位置。

我们尝试过 ipinfodb.com 但他们的API使我们的网站在进行API调用时严重滞后。

您还建议使用哪些其他服务?


答案 1

获取地理 IP 信息

请求异地 IP 服务器 (netip.de) 进行检查,返回 IP 所在的位置(主机、州、国家/地区、城镇)。

<?php
       $ip='94.219.40.96';
       print_r(geoCheckIP($ip));
       //Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen )

       //Get an array with geoip-infodata
       function geoCheckIP($ip)
       {
               //check, if the provided ip is valid
               if(!filter_var($ip, FILTER_VALIDATE_IP))
               {
                       throw new InvalidArgumentException("IP is not valid");
               }

               //contact ip-server
               $response=@file_get_contents('http://www.netip.de/search?query='.$ip);
               if (empty($response))
               {
                       throw new InvalidArgumentException("Error contacting Geo-IP-Server");
               }

               //Array containing all regex-patterns necessary to extract ip-geoinfo from page
               $patterns=array();
               $patterns["domain"] = '#Domain: (.*?)&nbsp;#i';
               $patterns["country"] = '#Country: (.*?)&nbsp;#i';
               $patterns["state"] = '#State/Region: (.*?)<br#i';
               $patterns["town"] = '#City: (.*?)<br#i';

               //Array where results will be stored
               $ipInfo=array();

               //check response from ipserver for above patterns
               foreach ($patterns as $key => $pattern)
               {
                       //store the result in array
                       $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found';
               }

               return $ipInfo;
       }

?>

答案 2

最好和最新的是GeopluginAPI它的免费和没有限制,我用于这个我的网站 http://spidersoft.in 基于位置的下载从这个链接阅读更多

http://geoplugin.com


推荐