php - myipaddress - trace ip address exact location
PHP के साथ आईपी पता देश प्राप्त करें (12)
"अन्य मूल एक्सटेंशन" के अंतर्गत जियोआईपी कार्यों को देखें। http://php.net/manual/en/book.geoip.php
आदर्श रूप में मैं एक PHP स्क्रिप्ट को एक साथ रखने की कोशिश कर रहा हूं जिसे मैं किसी भी वेब ब्राउज़र से पूछताछ कर सकता हूं और यह आईपी पते का देश लौटाता है जो PHP स्क्रिप्ट तक पहुंचता है।
क्या यह संभव है या क्या कोई बेहतर समाधान है?
आप https://www.geoip-db.com की सेवाओं का प्रयास कर सकते हैं वे एक JSON या JSONP-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>";
?>
आप देश का नाम, शहर का नाम, अक्षांश और देशांतर प्राप्त करने के लिए 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.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://ipinfodb.com/ip_location_api.php
- http://www.ipgeo.com/api/
- http://ip2.cc/
- http://www.geobytes.com/IpLocator.htm
- https://iplocate.io/
- और बहुत सारे लोग।
कौन सा सबसे भरोसेमंद दिखता है आप पर निर्भर है :)
अन्यथा, ऐसी स्क्रिप्ट हैं जो आपके सर्वर पर स्थानीय डेटाबेस पर आधारित होती हैं। डेटाबेस डेटा को नियमित रूप से अद्यतन करने की आवश्यकता है, यद्यपि। इसे देखें:
HTH!
संपादित करें: और निश्चित रूप से, आपके प्रोजेक्ट के आधार पर आप HTML5 स्थान सुविधाओं को देखना चाहेंगे। आप अभी तक इंटरनेट एक्सप्लोरर (आईई 9 इसका समर्थन करेंगे, अभी तक जाने का लंबा रास्ता) पर इसका उपयोग नहीं कर सकते हैं, लेकिन यदि आपके दर्शक मुख्य रूप से मोबाइल डिवाइस पर हैं या सफारी / फ़ायरफ़ॉक्स का उपयोग कर रहे हैं तो यह निश्चित रूप से देखने के लायक है!
एक बार आपके पास निर्देशांक हो जाने के बाद, आप उन्हें देश कोड में जियोकोड कर सकते हैं। फिर इस तरह एपीआई हैं:
- उदाहरण: http://ws.geonames.org/countryCode?lat=47.03&lng=10.2
- अधिक एपीआई: http://www.geonames.org/export/ws-overview.html
अद्यतन, अप्रैल 2013
आज मैं Geocoder , एक PHP लाइब्रेरी का उपयोग करने की अनुशंसा करता हूं जो आईपी पते के साथ-साथ डाक पता डेटा को geocode करना बहुत आसान बनाता है।
*** अपडेट, सितंबर 2016
चूंकि Google की गोपनीयता राजनीति बदल गई है, इसलिए आप एचटीएमएल 5 जिओलोकेशन एपीआई का उपयोग नहीं कर सकते हैं यदि आपके सर्वर में एचटीपीपीएस प्रमाणपत्र नहीं है या उपयोगकर्ता आपको अपना स्थान चेक करने की अनुमति नहीं देता है। तो अब आप उपयोगकर्ता के आईपी का उपयोग कर सकते हैं और PHP में चेक इन कर सकते हैं या एचटीटीपीएस प्रमाणपत्र प्राप्त कर सकते हैं।
देश की जानकारी और अंतिम पृष्ठ की जानकारी प्राप्त करने के लिए विजेट www.feedsalive.com का भी उपयोग करें।
मुझे यह ब्लॉग पोस्ट बहुत उपयोगी पाया। यह मेरा दिन बचाया। 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
}
मुझे लगता है कि बहुत सारे जवाब हैं, लेकिन उनमें से कोई भी https://freegeoip.net/ का उल्लेख नहीं करता है
आपको 15,000 queries per hour
की अनुमति है। मुझे लगता है कि ज्यादातर मामलों में पर्याप्त है। अन्यथा, आपको मैक्समिंड जियोआईपी से स्थानीय डेटाबेस का उपयोग करने के बारे में सोचना चाहिए।
फ्रीजॉयप ओपन-सोर्स है और आप github पर स्रोत पा सकते हैं, इसे स्थानीय रूप से तैनात कर सकते हैं और क्वेरी सीमा से छुटकारा पा सकते हैं।
इसके अलावा, सेवा अक्षांश / देशांतर / टाइमज़ोन और अन्य उपयोगी सामान प्रदान करती है।
यदि आप कर सकते हैं तो http://php.net/manual/en/book.geoip.php इंस्टॉल और उपयोग करें। डेबियन लेनी पर:
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
यदि आपको अधिक प्रदर्शन करने और अपनी वेबसाइट से बाहरी सेवाओं का अनुरोध नहीं करने के लिए, एक अच्छा और अद्यतन डेटाबेस होना आवश्यक है, तो here अपडेट किए गए और सटीक डेटाबेस डाउनलोड करने के लिए एक अच्छी जगह है।
मैं इसकी सिफारिश कर रहा हूं क्योंकि मेरे अनुभव में यह मेरे आईपी के लिए शहर और देश के स्थान सहित उत्कृष्ट काम कर रहा था, जो कि अन्य डेटाबेस / एपीआई http://ipinfodb.com/ip_location_api.php को छोड़कर मेरे स्थान को शामिल / रिपोर्ट करने में असफल रहा, जिसने मुझे इस डेटाबेस में निर्देशित किया।
(मेरा आईपी स्थान "ईरान" में " 2.187.21.235
" शहर से था जब मैं परीक्षण कर रहा था और आईपी था: 2.187.21.235
बराबर)
इसलिए यदि आप इस बारे में अनिश्चित हैं कि कौन सी सेवा अधिक सटीक है, तो मैं इन सेवाओं का उपयोग करने की अनुशंसा करता हूं:
डेटाबेस: here डेटाबेस
एपीआई सेवा: http://ipinfodb.com/ip_location_api.php
Ipdata.co ऐसा करने के लिए एक स्केलेबल एपीआई प्रदान करता है। 10 ग्लोबल एंडपॉइंट्स के साथ प्रत्येक 80000 अनुरोधों को संभालने में सक्षम है!
यह आपको किसी भी आईपीवी 4 या आईपीवी 6 पते से संगठन, मुद्रा, टाइमज़ोन, कॉलिंग कोड, ध्वज और टोर निकास नोड स्थिति डेटा भी देता है।
PHP में
php > $ip = '8.8.8.8';
php > $details = json_decode(file_get_contents("https://api.ipdata.co/{$ip}"));
php > echo $details->region;
California
php > echo $details->city;
Mountain View
php > echo $details->country_name;
United States
php > echo $details->location;
37.405991,-122.078514
अस्वीकरण
मैंने यह सेवा बनाई
$country_code = trim(file_get_contents("http://ipinfo.io/{$ip_address}/country"))
आपको देश कोड मिलेगा।