2011-10-14 13 views
21

हम अपने आईपी पर आधारित आगंतुकों को स्थान प्राप्त करने के लिए एक तेज़ और सटीक तरीका ढूंढ रहे हैं।आईपी पते पर आधारित भौगोलिक स्थान - PHP

हमने ipinfodb.com की कोशिश की है लेकिन एपीआई कॉल करते समय उनकी एपीआई ने हमारी वेबसाइट को गंभीर रूप से अंतराल बना दिया है।

आप अन्य सेवाएं क्या सुझाते हैं?

+0

संभव डुप्लिकेट: [? क्या सेवाएं मौजूद हैं कि आईपी के आधार पर एक व्यक्ति को भू-स्थित] (http://stackoverflow.com/questions/464142/what-services-exist-that-geo-locates-a -person-based-on-ip) – hakre

+0

संभावित डुप्लिकेट [PHP के साथ आईपी पते का देश प्राप्त करें] (http://stackoverflow.com/questions/3650006/get-country-of-ip-address-with-php) –

+0

चेकआउट https://ipdata.co, एक सेवा जो मैंने बनाई है जिसमें 10 ग्लोबल एंडपॉइंट्स हैं जो प्रत्येक को संभालने में सक्षम हैं> 800 एम दैनिक कॉल करता है। यह बहुत तेज़ है और इसमें बहुत सारे प्रासंगिक डेटा हैं। – Jonathan

उत्तर

38

जाओ भू-आईपी सूचना

अनुरोध एक भू-आईपी सर्वर (netip.de) की जांच करने के रिटर्न जहां एक आईपी (मेजबान, राज्य, देश, शहर) स्थित है।

<?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 
       [email protected]_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; 
     } 

?> 

Nomsayn?

आप एक डेटाबेस इस अंतरिक्ष और एक एक उद्यम समाधान Digital Element है प्रदान करता है कि इस http://www.phpandstuff.com/articles/geoip-country-lookup-with-php

+1

यह अच्छा है, लेकिन मैं डेटाबेस पसंद करूंगा क्योंकि हमारी वेबसाइट हजारों अनुरोध प्राप्त करती है और प्रति पृष्ठ लोड के लिए भू आईपी अनुरोध किया जाएगा। – Latox

+2

@latox मैंने अभी अपना प्रश्न अपडेट किया है, उस लिंक पर नज़र डालें जो आप nomsayn के बाद हो? –

+0

@Latox - यदि आप अपने एपीआई कॉल के परिणामों के साथ स्थानीय कैश बनाए रखते हैं तो आपको केवल प्रत्येक नए आईपी पते के लिए एपीआई कॉल के ओवरहेड का भुगतान करना होगा। लेकिन उपर्युक्त लिंक में डीबी आपके आवेदन के लिए बिल्कुल सही लगता है, जब तक आपको मिनट-दर-मिनट सटीकता की आवश्यकता नहीं होती है। – Peter

2

बाजार के नेता का उपयोग करें। वे अपने सर्वर तक पहुंचने के लिए PHP सहित एपीआई की एक विस्तृत श्रृंखला प्रदान करते हैं, जिसे आप स्थानीय रूप से स्थापित कर सकते हैं या वेब सेवा के माध्यम से एक्सेस कर सकते हैं। उनका डेटा उच्च गुणवत्ता का है और उनके समाधान का प्रदर्शन काफी अच्छा है। मैक्समिंड एक और विकल्प है जो अच्छी समीक्षा प्राप्त करता है।

सर्वोत्तम सटीकता के लिए, आप एक सेवा या समाधान चुनना चाहेंगे जहां आपको साप्ताहिक अपडेट मिलते हैं क्योंकि यह सामग्री किसी दिए गए नेटवर्क में काफी कुछ बदल सकती है। लागत अद्यतन की आवृत्ति, भौगोलिक डेटा की ग्रैन्युलरिटी और आपके इच्छित अतिरिक्त फ़ील्ड या डेटाबेस की संख्या पर निर्भर करेगी। कुछ प्रदाता कुछ नाम देने के लिए भाषा, जनसांख्यिकी, कंपनी और डोमेन प्रदान करते हैं।

4

सबसे अच्छा और नवीनतम GeoplugginAPI अपने नि: शुल्क और कोई सीमा नहीं मैं स्थान आधारित डाउनलोड के लिए इसे मेरा वेबसाइट http://spidersoft.in के लिए इस्तेमाल कर रहा हूँ इस लिंक से अधिक पढ़ सकते हैं

http://geoplugin.com

3

यहाँ यह एक http://ip.codehelper.io/

प्रयास करें है PHP कोड है। कोड आपके अनुरोध को स्वचालित रूप से कैश करेगा, इसलिए आपका सर्वर एकाधिक अनुरोध नहीं भेजेगा। वापसी आईपी पता, देश, शहर और अधिक जानकारी।

<?php 
// Required Libraries 
require_once("ip.codehelper.io.php"); 
require_once("php_fast_cache.php"); 

// New Class 
$_ip = new ip_codehelper(); 

// Detect Real IP Address & Location 
$real_client_ip_address = $_ip->getRealIP(); 
$visitor_location  = $_ip->getLocation($real_client_ip_address); 

// Output result 
echo $visitor_location['Country'].""; 
echo "<pre>"; 
print_r($visitor_location); 
संबंधित मुद्दे