दिलचस्प पोस्ट
डीजेगो टेम्प्लेट में वैरिएबल घटाव जावा में प्रिंट करने योग्य चार क्या मैं NSLayoutConstraint के लिए गुणक संपत्ति बदल सकता हूँ? एंड्रॉइड में एसओएफ फाइल लोड करने में समस्या कैसे जाओ में कई आदेश पाइप? स्क्रिप्ट से पृष्ठभूमि में शैल कमांड निष्पादित सरणी सूची की क्षमता और एक सरणी के आकार के बीच भेद क्या उत्पाद समीक्षाओं को प्राप्त करने के लिए एक Amazon.com API है? मैं एक पायथन प्रोग्राम कैसे चलाऊँ? 'सुडो मणि इंस्टॉलेशन' या 'मणि इंस्टॉलेशन' और रत्न रत्न मैं अपने CodeIgniter मॉडल में डुप्लिकेट कुंजी अद्यतन का उपयोग कैसे करेंगे? पायथन में एकाधिक पिंग स्क्रिप्ट PHP में EXIF ​​डेटा लिखना कक्षा के साथ चयनित फ़ील्ड के लिए रेल फॉर्म पर रूबी एंड्रॉइड पर फेस स्क्रीन बंद होने पर स्क्रीन को प्रोग्रामेटिक रूप से बंद करें

PHP के साथ आईपी पता देश प्राप्त करें

आदर्श रूप से मैं एक PHP स्क्रिप्ट को एक साथ रखने की कोशिश कर रहा हूं जिसे मैं किसी भी वेब ब्राउजर से पूछ सकता हूं और यह उस आईपी पते के देश को देता है जो PHP स्क्रिप्ट तक पहुंचा था।

क्या यह संभव है या बेहतर समाधान है?

Solutions Collecting From Web of "PHP के साथ आईपी पता देश प्राप्त करें"

ऐसे मुफ़्त, आसान एपीआई हैं जो आप उपयोग कर सकते हैं, जैसे:

कौन सा सबसे विश्वसनीय लग रहा है आप पर निर्भर है 🙂

अन्यथा, ऐसी स्क्रिप्ट्स हैं जो आपके सर्वर पर स्थानीय डाटाबेस पर आधारित हैं। डेटाबेस डेटा को नियमित रूप से अपडेट करने की आवश्यकता है, हालांकि। यह एक देखें:

HTH!

संपादित करें: और जाहिर है, आपकी परियोजना के आधार पर आप एचटीएमएल 5 स्थान की विशेषताओं को देखना चाहते हैं। आप उन्हें अभी तक इंटरनेट एक्सप्लोरर (आईई 9 का समर्थन नहीं कर सकते हैं, अभी तक जाने का लंबा रास्ता तय करेंगे) का उपयोग नहीं कर सकते हैं, लेकिन यदि आपका दर्शक मुख्य रूप से मोबाइल डिवाइस पर है या सफ़ारी / फ़ायरफ़ॉक्स का इस्तेमाल करता है तो इसे देखने के लिए निश्चित रूप से मूल्यवान है!

आपके पास निर्देशांक होने के बाद, आप उन्हें एक देश कोड पर जियोकोड रिवर्स कर सकते हैं। फिर से इस तरह एपीआई हैं:

अपडेट, अप्रैल 2013
आज मैं जीओओकोडर , एक PHP पुस्तकालय का उपयोग करने की सिफारिश करता हूं जो कि जीओकेड आईपी पते के साथ-साथ डाक पता डेटा के लिए बहुत आसान बनाता है।

*** अपडेट, सितंबर 2016
चूंकि Google की गोपनीयता राजनीति बदल गई है, यदि आप एचटीएमएल 5 जियोलोकेशन एपीआई का उपयोग नहीं कर सकते हैं, यदि आपके सर्वर में एचटीपीपीएस प्रमाणपत्र नहीं है या उपयोगकर्ता आपको अपना स्थान जांचने की अनुमति नहीं देता है। तो अब आप उपयोगकर्ता के आईपी का उपयोग कर सकते हैं और PHP में जांच कर सकते हैं या HTTPS प्रमाणपत्र प्राप्त कर सकते हैं।

ऐसे कई वेब एपीआई हैं जो आपके लिए ऐसा करेंगे। यहां मेरी सेवा का उपयोग करते हुए एक उदाहरण है, http://ipinfo.io :

 $ip = $_SERVER['REMOTE_ADDR']; $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); echo $details->country; // -> "US" 

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

आप MaxMind से आईपी-टेबल डाउनलोड कर सकते हैं:

http://www.maxmind.com/app/geolite

अपने डेटाबेस में सीएसवी आयात करें (ip_long_from + ip_long_to के लिए एक अनुक्रमणिका बनाना सुनिश्चित करें) तो आप बस कर सकते हैं:

 $iplong = ip2long($_SERVER['REMOTE_ADDR']); // should use mysqli with prepared statements etc, but just an example mysql_query(" SELECT country FROM ip_table WHERE $iplong BETWEEN ip_long_from AND ip_long_to LIMIT 1 "); 

यहां http://www.geoplugin.net/json.gp का उपयोग करते हुए एक उदाहरण है

 $ip = $_SERVER['REMOTE_ADDR']; $details = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$ip}")); echo $details; 

यह इस एपीआई के साथ 1 लाइनर है

कोड

  echo file_get_contents('https://ipapi.co/8.8.8.8/country/'); 

प्रतिक्रिया

  US 

यहाँ एक बेला है रिस्पांस text जब आप एक विशिष्ट फ़ील्ड जैसे country यहां पूछें। कोई डिकोडिंग की आवश्यकता नहीं है, बस इसे अपने कोड में प्लग करें

पीएस यदि आप सभी क्षेत्रों जैसे https://ipapi.co/8.8.8.8/json/ , तो प्रतिक्रिया JSON

 $country_code = trim(file_get_contents("http://ipinfo.io/{$ip_address}/country")) 

आपको देश कोड मिलेगा

"अन्य मूल एक्सटेंशन" के अंतर्गत GeoIP फ़ंक्शंस को देखें। http://php.net/manual/en/book.geoip.php

मुझे लगता है कि बहुत सारे जवाब हैं, लेकिन उनमें से कोई भी https://freegeoip.net/ का उल्लेख नहीं करता है

आपको 15,000 queries per hour की अनुमति है मुझे लगता है कि ज्यादातर मामलों में पर्याप्त है अन्यथा, आपको MaxMind GeoIP से स्थानीय डेटाबेस का उपयोग करने के बारे में सोचना चाहिए।

फ्रीजियोप ओपन सोर्स है और आप गिटूब पर स्रोत ढूंढ सकते हैं, इसे स्थानीय स्तर पर व्यवस्थित कर सकते हैं और क्वेरी सीमाओं से छुटकारा पा सकते हैं।

इसके अलावा, सेवा अक्षांश / देशांतर / समयक्षेत्र और अन्य उपयोगी सामान प्रदान करती है।

मैंने इस ब्लॉग पोस्ट को बहुत उपयोगी पाया यह मेरा दिन बचाया http://www.techsirius.com/2014/05/simple-geo-tracking-system.html

असल में आपको आईपी डेटाबेस तालिका स्थापित करने की आवश्यकता है और फिर स्थान के लिए आईपी के लिए mysql क्वेरी करें।

 <?php include 'config.php'; mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) OR die(mysql_error()); mysql_select_db(DB_NAME) OR die(mysql_error()); $ip = $_SERVER['REMOTE_ADDR']; $long = sprintf('%u', ip2long($ip)); $sql = "SELECT * FROM `geo_ips` WHERE '$long' BETWEEN `ip_start` AND `ip_end`"; $result = mysql_query($sql) OR die(mysql_error()); $ip_detail = mysql_fetch_assoc($result); if($ip_detail){ echo $ip_detail['country']."', '".$ip_detail['state']."', '".$ip_detail['city']; } else{ //Something wrong with IP } 

जियोलोकेशन अनुरोधों के लिए यहां एक और मुक्त एपीआई है: http://geoip.nekudo.com

उत्तर JSON प्रारूप में हैं। इसके अतिरिक्त एपीआई स्रोत कोड गिटूब पर उपलब्ध है, अगर आपको अपनी स्वयं की एपीआई सेटअप करने की आवश्यकता है।

यदि आप कर सकते हैं तो PHP के GeoIP एक्सटेंशन को स्थापित और उपयोग करें डेबियन लेन पर:

 sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz sudo gunzip GeoLiteCity.dat.gz sudo mkdir -v /usr/share/GeoIP sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat sudo apt-get install php5-geoip # or sudo apt-get install php-geoip for PHP7 

और फिर इसे PHP में आज़माएं:

 $ip = $_SERVER['REMOTE_ADDR']; $country = geoip_country_name_by_name($ip); echo 'The current user is located in: ' . $country; 

रिटर्न:

 The current user is located in: Cameroon 

आप देश का नाम, शहर का नाम, अक्षांश और देशांतर प्राप्त करने के लिए https://ip-api.io/ का उपयोग कर सकते हैं। यह आईपीवी 6 का समर्थन करता है।

एक बोनस के रूप में यह बताएगा कि आईपी एड एक टॉर नोड, पब्लिक प्रॉक्सी या स्पैमर है।

पीपी कोड:

 $result = json_decode(file_get_contents('http://ip-api.io/json/64.30.228.118')); var_dump($result); 

आउटपुट:

 { "ip": "64.30.228.118", "country_code": "US", "country_name": "United States", "region_code": "FL", "region_name": "Florida", "city": "Fort Lauderdale", "zip_code": "33309", "time_zone": "America/New_York", "latitude": 26.1882, "longitude": -80.1711, "metro_code": 528, "suspicious_factors": { "is_proxy": false, "is_tor_node": false, "is_spam": false, "is_suspicious": false } 

देश सूचनाओं और अंतिम पृष्ठ की जानकारी प्राप्त करने के लिए विजेट http://www.feedsalive.com का उपयोग करें।

आप https://www.geoip-db.com की सेवाओं का प्रयास कर सकते हैं वे एक JSON या JSON-callback समाधान प्रदान करते हैं।

 <?php $json = file_get_contents("https://www.geoip-db.com/json"); $data = json_decode($json); print $data->country_code . "<br>"; print $data->country_name . "<br>"; print $data->state . "<br>"; print $data->city . "<br>"; print $data->postal . "<br>"; print $data->latitude . "<br>"; print $data->longitude . "<br>"; print $data->IPv4 . "<br>"; ?> 

मैं IPLocate.io पर सेवा चलाता हूं , जिसे आप एक आसान कॉल के साथ मुफ्त में हुक कर सकते हैं:

 <?php $res = file_get_contents('https://www.iplocate.io/api/lookup/8.8.8.8'); $res = json_decode($res); echo $res->country; // United States echo $res->continent; // North America echo $res->latitude; // 37.751 echo $res->longitude; // -97.822 var_dump($res); 

$res ऑब्जेक्ट में आपके जियोलोकेशन फ़ील्ड जैसे country , city , आदि होंगे।

अधिक जानकारी के लिए दस्तावेज़ देखें।

यदि आपको बेहतर और अद्यतित डाटाबेस की आवश्यकता है, तो अधिक प्रदर्शन के लिए और अपनी वेबसाइट से बाहरी सेवाओं का अनुरोध न करने के लिए, यहां अद्यतन और सटीक डेटाबेस डाउनलोड करने के लिए एक अच्छी जगह है।

मैं इसकी सिफारिश कर रहा हूं क्योंकि मेरे अनुभव में यह मेरे आईपी के लिए शहर और देश के स्थान सहित उत्कृष्ट काम कर रहा था, जो अन्य डेटाबेस / एपीआईएस को इस स्थान के अलावा मेरी जगह की रिपोर्ट / रिपोर्ट करने में विफल रहा, जो मुझे इस डाटाबेस के लिए निर्देशित करता था।
(मेरा आईपी स्थान "राशट" शहर से "ईरान" में था जब मैं परीक्षण कर रहा था और आईपी थी: 2.187.21.235 बराबर 45815275 )

इसलिए मैं इन सेवाओं का उपयोग करने की सलाह देता हूं यदि आप इस बारे में अनिश्चित हैं कि कौन से सेवा अधिक सटीक है:

डेटाबेस: http://lite.ip2location.com/databases

एपीआई सेवा: http://ipinfodb.com/ip_location_api.php