अपने आईपी से आगंतुकों देश हो रही है


220

मैं अपने आईपी के माध्यम से आगंतुकों को देश प्राप्त करना चाहता हूं ... अभी मैं इसका उपयोग कर रहा हूं ( http://api.hostip.info/country.php?ip= ......)

यहाँ मेरा कोड है:

<?php

if (isset($_SERVER['HTTP_CLIENT_IP']))
{
    $real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
}

if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
    $real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
    $real_ip_adress = $_SERVER['REMOTE_ADDR'];
}

$cip = $real_ip_adress;
$iptolocation = 'http://api.hostip.info/country.php?ip=' . $cip;
$creatorlocation = file_get_contents($iptolocation);

?>

ठीक है, यह ठीक से काम कर रहा है, लेकिन बात यह है, यह यूएस या सीए जैसे देश कोड लौटाता है, न कि पूरे देश का नाम जैसे संयुक्त राज्य अमेरिका या कनाडा।

तो, क्या hostip.info के पास इसका कोई अच्छा विकल्प है?

मुझे पता है कि मैं बस कुछ कोड लिख सकता हूं जो अंततः इस दो अक्षरों को पूरे देश के नाम में बदल देगा, लेकिन मैं एक कोड लिखने के लिए बहुत आलसी हूं जिसमें सभी देश शामिल हैं ...

पुनश्च: किसी कारण से मैं किसी भी तैयार किए गए CSV फ़ाइल या किसी भी कोड का उपयोग नहीं करना चाहता, जो मेरे लिए यह जानकारी हड़प ले, ip2country तैयार कोड और CSV जैसी कोई चीज़।


20
आलसी मत बनो, कई देश नहीं हैं, और देश के नामों के लिए 2 पत्र कोड के लिए अनुवाद तालिका प्राप्त करना बहुत मुश्किल नहीं है।
क्रिस हेनरी

मैक्समाइंड जियोइप फीचर का इस्तेमाल करें। इसमें परिणामों में देश का नाम शामिल होगा। maxmind.com/app/php
Tchoupi

आपके पहले असाइनमेंट को $real_ip_addressहमेशा अनदेखा किया जाता है। वैसे भी, याद रखें कि X-Forwarded-ForHTTP हेडर को बहुत आसानी से नकली किया जा सकता है, और www.hidemyass.com जैसे प्रॉक्सी हैं
वाल्टर ट्रॉस

5
IPLocate.io एक मुफ्त एपीआई प्रदान करता है: https://www.iplocate.io/api/lookup/8.8.8.8- अस्वीकरण: मैं इस सेवा को चलाता हूं।
तारिक

मेरा सुझाव है कि Ipregistry को एक कोशिश देना : api.ipregistry.co/… (अस्वीकरण: मैं सेवा चलाता हूं)।
लॉरेंट

जवाबों:


495

इस सरल PHP फ़ंक्शन का प्रयास करें।

<?php

function ip_info($ip = NULL, $purpose = "location", $deep_detect = TRUE) {
    $output = NULL;
    if (filter_var($ip, FILTER_VALIDATE_IP) === FALSE) {
        $ip = $_SERVER["REMOTE_ADDR"];
        if ($deep_detect) {
            if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP))
                $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
            if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP))
                $ip = $_SERVER['HTTP_CLIENT_IP'];
        }
    }
    $purpose    = str_replace(array("name", "\n", "\t", " ", "-", "_"), NULL, strtolower(trim($purpose)));
    $support    = array("country", "countrycode", "state", "region", "city", "location", "address");
    $continents = array(
        "AF" => "Africa",
        "AN" => "Antarctica",
        "AS" => "Asia",
        "EU" => "Europe",
        "OC" => "Australia (Oceania)",
        "NA" => "North America",
        "SA" => "South America"
    );
    if (filter_var($ip, FILTER_VALIDATE_IP) && in_array($purpose, $support)) {
        $ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip));
        if (@strlen(trim($ipdat->geoplugin_countryCode)) == 2) {
            switch ($purpose) {
                case "location":
                    $output = array(
                        "city"           => @$ipdat->geoplugin_city,
                        "state"          => @$ipdat->geoplugin_regionName,
                        "country"        => @$ipdat->geoplugin_countryName,
                        "country_code"   => @$ipdat->geoplugin_countryCode,
                        "continent"      => @$continents[strtoupper($ipdat->geoplugin_continentCode)],
                        "continent_code" => @$ipdat->geoplugin_continentCode
                    );
                    break;
                case "address":
                    $address = array($ipdat->geoplugin_countryName);
                    if (@strlen($ipdat->geoplugin_regionName) >= 1)
                        $address[] = $ipdat->geoplugin_regionName;
                    if (@strlen($ipdat->geoplugin_city) >= 1)
                        $address[] = $ipdat->geoplugin_city;
                    $output = implode(", ", array_reverse($address));
                    break;
                case "city":
                    $output = @$ipdat->geoplugin_city;
                    break;
                case "state":
                    $output = @$ipdat->geoplugin_regionName;
                    break;
                case "region":
                    $output = @$ipdat->geoplugin_regionName;
                    break;
                case "country":
                    $output = @$ipdat->geoplugin_countryName;
                    break;
                case "countrycode":
                    $output = @$ipdat->geoplugin_countryCode;
                    break;
            }
        }
    }
    return $output;
}

?>

कैसे इस्तेमाल करे:

उदाहरण 1: आगंतुक आईपी पते का विवरण प्राप्त करें

<?php

echo ip_info("Visitor", "Country"); // India
echo ip_info("Visitor", "Country Code"); // IN
echo ip_info("Visitor", "State"); // Andhra Pradesh
echo ip_info("Visitor", "City"); // Proddatur
echo ip_info("Visitor", "Address"); // Proddatur, Andhra Pradesh, India

print_r(ip_info("Visitor", "Location")); // Array ( [city] => Proddatur [state] => Andhra Pradesh [country] => India [country_code] => IN [continent] => Asia [continent_code] => AS )

?>

उदाहरण 2: किसी भी आईपी पते का विवरण प्राप्त करें। [समर्थन IPV4 और IPV6]

<?php

echo ip_info("173.252.110.27", "Country"); // United States
echo ip_info("173.252.110.27", "Country Code"); // US
echo ip_info("173.252.110.27", "State"); // California
echo ip_info("173.252.110.27", "City"); // Menlo Park
echo ip_info("173.252.110.27", "Address"); // Menlo Park, California, United States

print_r(ip_info("173.252.110.27", "Location")); // Array ( [city] => Menlo Park [state] => California [country] => United States [country_code] => US [continent] => North America [continent_code] => NA )

?>

1
क्यों हर आईपी के साथ हर समय अनजाना हो रहा है? , एक ही कोड का इस्तेमाल किया।
echo_Me

1
आपको "अज्ञात" शायद इसलिए मिलता है क्योंकि आपका सर्वर अनुमति नहीं देता है file_get_contents()। बस अपनी error_log फ़ाइल जांचें। समाधान: मेरा उत्तर देखें।
काई नैक

3
यह भी हो सकता है क्योंकि आप इसे
स्थानीय रूप से जांचते हैं

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

1
पालन ​​करें: यह स्थानीयहोस्ट पर साइट का परीक्षण करते समय एक समस्या है। परीक्षण प्रयोजनों के लिए तय करने का कोई तरीका? मानक 127.0.0.1 लोकलहोस्ट आईपी का उपयोग करता है
निक

54

आप http://www.geoplugin.net/ से एक साधारण एपीआई का उपयोग कर सकते हैं

$xml = simplexml_load_file("http://www.geoplugin.net/xml.gp?ip=".getRealIpAddr());
echo $xml->geoplugin_countryName ;


echo "<pre>";
foreach ($xml as $key => $value)
{
    echo $key , "= " , $value ,  " \n" ;
}
echo "</pre>";

उपयोग किया जाता है

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

उत्पादन

United States
geoplugin_city= San Antonio
geoplugin_region= TX
geoplugin_areaCode= 210
geoplugin_dmaCode= 641
geoplugin_countryCode= US
geoplugin_countryName= United States
geoplugin_continentCode= NA
geoplugin_latitude= 29.488899230957
geoplugin_longitude= -98.398696899414
geoplugin_regionCode= TX
geoplugin_regionName= Texas
geoplugin_currencyCode= USD
geoplugin_currencySymbol= $
geoplugin_currencyConverter= 1

यह आपके पास बहुत सारे विकल्प हैं जिनके साथ आप खेल सकते हैं

धन्यवाद

:)


1
यह वास्तव में अच्छा है। लेकिन यहाँ परीक्षण करते समय निम्नलिखित क्षेत्रों में कोई मान नहीं है "geoplugin_city, geoplugin_region, geoplugin_regionCode, geoplugin_regionName" .. क्या कारण है? क्या कोई उपाय है? अग्रिम धन्यवाद
WebDevRon

31

मैंने चंद्रा के उत्तर की कोशिश की, लेकिन मेरा सर्वर विन्यास file_get_contents () की अनुमति नहीं देता है

PHP Warning: file_get_contents() URL file-access is disabled in the server configuration

मैंने चंद्रा के कोड को संशोधित किया ताकि वह सर्वर के लिए भी काम करे जैसे कि cURL का उपयोग करना:

function ip_visitor_country()
{

    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];
    $country  = "Unknown";

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://www.geoplugin.net/json.gp?ip=".$ip);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $ip_data_in = curl_exec($ch); // string
    curl_close($ch);

    $ip_data = json_decode($ip_data_in,true);
    $ip_data = str_replace('&quot;', '"', $ip_data); // for PHP 5.2 see stackoverflow.com/questions/3110487/

    if($ip_data && $ip_data['geoplugin_countryName'] != null) {
        $country = $ip_data['geoplugin_countryName'];
    }

    return 'IP: '.$ip.' # Country: '.$country;
}

echo ip_visitor_country(); // output Coutry name

?>

उम्मीद है की वो मदद करदे ;-)


2
डॉक्स के अनुसार उनकी साइट पर: "यदि geoplugin.net पूरी तरह से जवाब दे रहा था, तो बंद हो गया, तो आप प्रति मिनट 120 अनुरोधों की मुफ्त लुकअप सीमा से अधिक हो गए हैं।"
रिक हेल्लेवेल

खूबसूरती से काम किया। धन्यवाद!
नजीब


11

यदि आप भुगतान करने के लिए तैयार नहीं हैं तो MaxMind GeoIP (या GeoIPLite) का उपयोग करें।

$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);

@ जॉइस: मैंने मैक्समाइंड एपीआई और डीबी का उपयोग करने की कोशिश की, लेकिन मुझे नहीं पता कि यह मेरे लिए काम क्यों नहीं करता है, वास्तव में यह सामान्य रूप से काम करता है, लेकिन उदाहरण के लिए जब मैं यह $ _SERVER ['REMOTE_ADDR'] चलाता हूं; तो यह मुझे दिखाता है यह आईपी: 10.48.44.43, लेकिन जब मैं इसे जियोइप_काऊंट्री_कोड_बाइ_ड्रेड ($ gi, $ ip) में उपयोग करता हूं, तो यह कुछ भी नहीं देता है, कोई विचार नहीं है?
mOna

यह एक आरक्षित आईपी पता (आपके स्थानीय नेटवर्क से आंतरिक आईपी पता) है। रिमोट सर्वर पर कोड चलाने का प्रयास करें।
जायसी बाबू


10

Code.google से php-ip-2-country देखें । जो डेटाबेस वे प्रदान करते हैं वह दैनिक रूप से अपडेट किया जाता है, इसलिए यदि आप अपने स्वयं के SQL सर्वर को होस्ट करते हैं तो चेक के लिए किसी बाहरी सर्वर से कनेक्ट करना आवश्यक नहीं है। इसलिए कोड का उपयोग करके आपको केवल टाइप करना होगा:

<?php
$ip = $_SERVER['REMOTE_ADDR'];

if(!empty($ip)){
        require('./phpip2country.class.php');

        /**
         * Newest data (SQL) avaliable on project website
         * @link http://code.google.com/p/php-ip-2-country/
         */
        $dbConfigArray = array(
                'host' => 'localhost', //example host name
                'port' => 3306, //3306 -default mysql port number
                'dbName' => 'ip_to_country', //example db name
                'dbUserName' => 'ip_to_country', //example user name
                'dbUserPassword' => 'QrDB9Y8CKMdLDH8Q', //example user password
                'tableName' => 'ip_to_country', //example table name
        );

        $phpIp2Country = new phpIp2Country($ip,$dbConfigArray);
        $country = $phpIp2Country->getInfo(IP_COUNTRY_NAME);
        echo $country;
?>

उदाहरण कोड (संसाधन से)

<?
require('phpip2country.class.php');

$dbConfigArray = array(
        'host' => 'localhost', //example host name
        'port' => 3306, //3306 -default mysql port number
        'dbName' => 'ip_to_country', //example db name
        'dbUserName' => 'ip_to_country', //example user name
        'dbUserPassword' => 'QrDB9Y8CKMdLDH8Q', //example user password
        'tableName' => 'ip_to_country', //example table name
);

$phpIp2Country = new phpIp2Country('213.180.138.148',$dbConfigArray);

print_r($phpIp2Country->getInfo(IP_INFO));
?>

उत्पादन

Array
(
    [IP_FROM] => 3585376256
    [IP_TO] => 3585384447
    [REGISTRY] => RIPE
    [ASSIGNED] => 948758400
    [CTRY] => PL
    [CNTRY] => POL
    [COUNTRY] => POLAND
    [IP_STR] => 213.180.138.148
    [IP_VALUE] => 3585378964
    [IP_FROM_STR] => 127.255.255.255
    [IP_TO_STR] => 127.255.255.255
)

4
हमें काम करने के लिए डेटाबेस की जानकारी प्रदान करनी चाहिए? अच्छा नहीं लगता।
echo_Me

10

हम उपयोगकर्ता के आईपी पते का उपयोग करके स्थान प्राप्त करने के लिए geobytes.com का उपयोग कर सकते हैं

$user_ip = getIP();
$meta_tags = get_meta_tags('http://www.geobytes.com/IPLocator.htm?GetLocation&template=php3.txt&IPAddress=' . $user_ip);
echo '<pre>';
print_r($meta_tags);

यह इस तरह से डेटा लौटाएगा

Array(
    [known] => true
    [locationcode] => USCALANG
    [fips104] => US
    [iso2] => US
    [iso3] => USA
    [ison] => 840
    [internet] => US
    [countryid] => 254
    [country] => United States
    [regionid] => 126
    [region] => California
    [regioncode] => CA
    [adm1code] =>     
    [cityid] => 7275
    [city] => Los Angeles
    [latitude] => 34.0452
    [longitude] => -118.2840
    [timezone] => -08:00
    [certainty] => 53
    [mapbytesremaining] => Free
)

उपयोगकर्ता IP प्राप्त करने का कार्य

function getIP(){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
    $pattern = "/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/";
    if(preg_match($pattern, $_SERVER["HTTP_X_FORWARDED_FOR"])){
            $userIP = $_SERVER["HTTP_X_FORWARDED_FOR"];
    }else{
            $userIP = $_SERVER["REMOTE_ADDR"];
    }
}
else{
  $userIP = $_SERVER["REMOTE_ADDR"];
}
return $userIP;
}

मैंने आपके कोड की कोशिश की, यह मेरे लिए यह लौटाता है: ऐरे ([ज्ञात] => असत्य)
mOna

जब मैं यह कोशिश करता हूं: $ ip = $ _SERVER ["REMOTE_ADDR"]; गूंज $ आईपी; यह इसे लौटाता है: 10.48.44.43, क्या आप जानते हैं कि समस्या क्या है ?? मैंने alspo maxmind geoip का उपयोग किया, और जब मैंने geoip_country_name_by_addr ($ gi, $ ip) का उपयोग किया तो फिर से मुझे कुछ भी नहीं दिया ...
mOna

@ ओम, यह आपके आईपी पते को वापस करता है। अधिक जानकारी के लिए pls, अपना कोड साझा करें।
राम शर्मा

मैंने पाया कि निजी नेटवर्क के लिए यह समस्या मेरे आईपी से जुड़ी है। तब मैं ifconfig में अपने असली आईपी को बढ़ाता हूं और अपने कार्यक्रम में इसका इस्तेमाल करता हूं। तब इसने काम किया :) अब, मेरा सवाल यह है कि मेरे जैसे उपयोगकर्ताओं के मामले में वास्तविक आईपी कैसे प्राप्त करें? (यदि वे स्थानीय आईपी का उपयोग करते हैं) .. मैंने अपना कोड यहाँ लिखा: stackoverflow.com/questions/25958564/…
mOna

9

इस सरल एक लाइन कोड को आज़माएं, आपको अपने आईपी रिमोट पते से देश और आगंतुकों का शहर मिलेगा।

$tags = get_meta_tags('http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=' . $_SERVER['REMOTE_ADDR']);
echo $tags['country'];
echo $tags['city'];

9

आप अपने php कोड में http://ip-api.com से एक वेब-सेवा का उपयोग कर सकते हैं
, निम्नानुसार करें:

<?php
$ip = $_REQUEST['REMOTE_ADDR']; // the IP address to query
$query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip));
if($query && $query['status'] == 'success') {
  echo 'Hello visitor from '.$query['country'].', '.$query['city'].'!';
} else {
  echo 'Unable to get location';
}
?>

क्वेरी में कई अन्य सुझाव हैं:

array (
  'status'      => 'success',
  'country'     => 'COUNTRY',
  'countryCode' => 'COUNTRY CODE',
  'region'      => 'REGION CODE',
  'regionName'  => 'REGION NAME',
  'city'        => 'CITY',
  'zip'         => ZIP CODE,
  'lat'         => LATITUDE,
  'lon'         => LONGITUDE,
  'timezone'    => 'TIME ZONE',
  'isp'         => 'ISP NAME',
  'org'         => 'ORGANIZATION NAME',
  'as'          => 'AS NUMBER / NAME',
  'query'       => 'IP ADDRESS USED FOR QUERY',
)

इस्तेमाल किया ip-api.com क्योंकि वे भी आईएसपी नाम की आपूर्ति करते हैं!
रिचर्ड टिंकलर

1
मैंने इस्तेमाल किया क्योंकि वे
रॉय शोए

8

CPAN में पर्ल समुदाय द्वारा बनाए गए आईपी-> देश डेटाबेस का एक सुव्यवस्थित फ्लैट-फ़ाइल संस्करण है

उन फ़ाइलों तक पहुंच के लिए एक डेटास्वर की आवश्यकता नहीं होती है, और डेटा स्वयं लगभग 515k है

उस डेटा से बात करने के लिए Higemaru ने एक PHP आवरण लिखा है: php-ip-country-fast


6

इसे करने के कई अलग-अलग तरीके ...

समाधान # 1:

एक तृतीय पक्ष सेवा जिसका आप उपयोग कर सकते हैं वह है http://ipinfodb.com । वे होस्टनाम, जियोलोकेशन और अतिरिक्त जानकारी प्रदान करते हैं।

यहां एपीआई कुंजी के लिए पंजीकरण करें: http://ipinfodb.com/register.php । यह आपको उनके सर्वर से परिणाम प्राप्त करने की अनुमति देगा, इसके बिना यह काम नहीं करेगा।

निम्नलिखित PHP कोड कॉपी और पेस्ट करें:

$ipaddress = $_SERVER['REMOTE_ADDR'];
$api_key = 'YOUR_API_KEY_HERE';

$data = file_get_contents("http://api.ipinfodb.com/v3/ip-city/?key=$api_key&ip=$ipaddress&format=json");
$data = json_decode($data);
$country = $data['Country'];

नकारात्मक पहलू:

उनकी वेबसाइट से उद्धरण:

हमारा मुफ्त एपीआई IP2Location लाइट संस्करण का उपयोग कर रहा है जो कम सटीकता प्रदान करता है।

समाधान # 2:

यह फ़ंक्शन http://www.netip.de/ सेवा का उपयोग करके देश का नाम लौटाएगा ।

$ipaddress = $_SERVER['REMOTE_ADDR'];
function geoCheckIP($ip)
{
    $response=@file_get_contents('http://www.netip.de/search?query='.$ip);

    $patterns=array();
    $patterns["country"] = '#Country: (.*?)&nbsp;#i';

    $ipInfo=array();

    foreach ($patterns as $key => $pattern)
    {
        $ipInfo[$key] = preg_match($pattern,$response,$value) && !empty($value[1]) ? $value[1] : 'not found';
    }

        return $ipInfo;
}

print_r(geoCheckIP($ipaddress));

आउटपुट:

Array ( [country] => DE - Germany )  // Full Country Name

3
उनकी वेबसाइट से उद्धृत करते हुए: "आप प्रति दिन 1,000 एपीआई अनुरोधों तक सीमित हैं। यदि आपको अधिक अनुरोध करने या एसएसएल समर्थन की आवश्यकता है, तो हमारे भुगतान किए गए प्लान देखें।"
वाल्टर ट्रॉस

मैंने इसे अपनी निजी वेबसाइट पर उपयोग किया है, इसीलिए मैंने इसे पोस्ट किया है। जानकारी के लिए धन्यवाद ... इसका एहसास नहीं हुआ। मैंने पोस्ट पर बहुत अधिक प्रयास किया है, इसलिए कृपया अद्यतन पोस्ट देखें :)
imbondbaby

@imbondbaby: हाय, मैंने आपका कोड आज़मा लिया है, लेकिन मेरे लिए यह इस प्रकार लौटता है: ऐरे ([देश] => -), जब से मैं इसे प्रिंट करने का प्रयास करता हूं, तब से समस्या समझ में नहीं आती: $ ipaddress = $ _SERVER '' REMOTE_ADDR ' ]; यह मुझे यह आईपी दिखाता है: 10.48.44.43, मुझे समझ नहीं आ रहा है कि यह आईपी क्यों काम नहीं करता है! मेरा मतलब है कि मैं जहाँ भी यह संख्या डालूँगा वह किसी भी देश में नहीं लौटेगी !!! मेरी मदद करो?
मन्ना

5

मेरी सेवा ipdata.co देश को 5 भाषाओं में नाम प्रदान करती है! साथ ही संगठन, मुद्रा, टाइमज़ोन, कॉलिंग कोड, फ़्लैग, मोबाइल कैरियर डेटा, प्रॉक्सी डेटा और किसी भी IPv4 या IPv6 पते से Tor Exit Node स्थिति डेटा।

यह उत्तर एक 'परीक्षण' एपीआई कुंजी का उपयोग करता है जो बहुत सीमित है और केवल कुछ कॉल के परीक्षण के लिए है। अपनी खुद की फ्री एपीआई कुंजी के लिए साइन अप करें और विकास के लिए प्रतिदिन 1500 अनुरोध प्राप्त करें।

यह भी दुनिया भर में 10 क्षेत्रों के साथ अत्यंत स्केलेबल है प्रत्येक को प्रति सेकंड 10,000 अनुरोधों को संभालने में सक्षम है!

विकल्पों में शामिल हैं; अंग्रेज़ी (en), जर्मन (de), जापानी (ja), फ्रेंच (fr) और सरलीकृत चीनी (za-CH)

$ip = '74.125.230.195';
$details = json_decode(file_get_contents("https://api.ipdata.co/{$ip}?api-key=test"));
echo $details->country_name;
//United States
echo $details->city;
//Mountain View
$details = json_decode(file_get_contents("https://api.ipdata.co/{$ip}?api-key=test/zh-CN"));
echo $details->country_name;
//美国

1
भगवान आपका भला करे, यार! मैंने जो मांगा उससे ज्यादा मुझे मिला! त्वरित प्रश्न: क्या मैं इसका उपयोग उत्पादों के लिए कर सकता हूं? मेरा मतलब है, आप इसे जल्द ही कभी भी नीचे नहीं डालने जा रहे हैं, क्या आप हैं?
सैयद

1
बिल्कुल नहीं :) मैं वास्तव में अधिक क्षेत्रों और अधिक पॉलिश जोड़ रहा हूं। खुशी है कि आपको यह मदद मिली :)
जोनाथन

बहुत उपयोगी, विशेष रूप से अतिरिक्त पैरामेट्स के साथ, मेरे लिए एक से अधिक समस्या का समाधान किया!
सैयद

3
सकारात्मक सुझावों के लिए धन्यवाद! मैंने इस तरह के एक उपकरण के लिए सबसे आम यूजेसिस का निर्माण किया था, लक्ष्य था कि जियोलोकेशन के बाद किसी भी अतिरिक्त प्रसंस्करण को समाप्त करना, उपयोगकर्ताओं के लिए इस भुगतान को देखकर खुश होना
जोनाथन

4

निश्चित नहीं है कि यह एक नई सेवा है, लेकिन अब (2016) php में सबसे आसान तरीका जियोप्लागिन की php वेब सेवा का उपयोग करना है: http://www.geoplugin.net/php.gp :

मूल उपयोग:

// GET IP ADDRESS
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if (!empty($_SERVER['REMOTE_ADDR'])) {
    $ip = $_SERVER['REMOTE_ADDR'];
} else {
    $ip = false;
}

// CALL THE WEBSERVICE
$ip_info = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$ip));

वे एक तैयार वर्ग भी प्रदान करते हैं: http://www.geoplugin.com/_media/webservices/geoplugin.class.php.tgz?id=webservices%3Aphp&cache=cache


आपने एक त्रुटि का कारण elseबनने के बाद उपयोग किया else। आपने क्या रोकने की कोशिश की? REMOTE_ADDR हर समय उपलब्ध होना चाहिए?
एलेक्सियोवे

@Vaia - शायद यह होना चाहिए लेकिन आप कभी नहीं जानते।
19

वहाँ एक मामला है जहाँ यह उपलब्ध नहीं है आप के बारे में पता है?
एलेक्सियोवे

2
@Vaia - PHP डॉक्स से $_SERVER: "इस बात की कोई गारंटी नहीं है कि प्रत्येक वेब सर्वर इनमें से कोई भी प्रदान करेगा; सर्वर कुछ को छोड़ सकते हैं, या दूसरों को यहां सूचीबद्ध नहीं होने पर प्रदान कर सकते हैं।"
बिलानोह

1
ध्यान दें कि अनुरोधों की एक सीमा है; उनकी साइट से: "अगर geoplugin.net पूरी तरह से जवाब दे रहा था, तो रुक गया, तो आप प्रति मिनट 120 अनुरोधों की मुफ्त
लुकिंग

2

मै इस्तेमाल कर रहा हूँ ipinfodb.com आपी और वास्तव में वही देख जो आप ढूंढ रहे हैं।

इसकी पूरी तरह से नि: शुल्क, आपको अपनी एपी कुंजी प्राप्त करने के लिए उनके साथ पंजीकरण करने की आवश्यकता है। आप उनकी वेबसाइट से डाउनलोड करके उनके php वर्ग को शामिल कर सकते हैं या जानकारी प्राप्त करने के लिए url प्रारूप का उपयोग कर सकते हैं।

यहाँ मैं क्या कर रहा हूँ:

मैंने अपनी स्क्रिप्ट में उनकी php क्लास को शामिल किया और नीचे दिए गए कोड का उपयोग किया:

$ipLite = new ip2location_lite;
$ipLite->setKey('your_api_key');
if(!$_COOKIE["visitorCity"]){ //I am using cookie to store information
  $visitorCity = $ipLite->getCity($_SERVER['REMOTE_ADDR']);
  if ($visitorCity['statusCode'] == 'OK') {
    $data = base64_encode(serialize($visitorCity));
    setcookie("visitorCity", $data, time()+3600*24*7); //set cookie for 1 week
  }
}
$visitorCity = unserialize(base64_decode($_COOKIE["visitorCity"]));
echo $visitorCity['countryName'].' Region'.$visitorCity['regionName'];

बस।


2

आप IP पते का विवरण प्राप्त करने के लिए http://ipinfo.io/ का उपयोग कर सकते हैं।

<?php
    function ip_details($ip)
    {
    $json = file_get_contents("http://ipinfo.io/{$ip}");
    $details = json_decode($json);
    return $details;
    }

    $details = ip_details(YoUR IP ADDRESS); 

    echo $details->city;
    echo "<br>".$details->country; 
    echo "<br>".$details->org; 
    echo "<br>".$details->hostname; /

    ?>

2

127.0.0.1आगंतुकों के साथ बदलें ।

$country = geoip_country_name_by_name('127.0.0.1');

स्थापना निर्देश यहां दिए गए हैं , और यह जानने के लिए पढ़ें कि शहर, राज्य, देश, देशांतर, अक्षांश, आदि कैसे प्राप्त करें ...


कृपया केवल हार्ड लिंक की तुलना में अधिक वास्तविक कोड प्रदान करें।
ब्रैम वनरॉय

लिंक से बाद की खबर: "2 जनवरी, 2019 तक मैक्समाइंड ने मूल जियोलाइट डेटाबेस को बंद कर दिया जिसका हम इन सभी उदाहरणों में उपयोग कर रहे हैं। आप पूरी घोषणा यहां पढ़ सकते हैं: support.maxmind.com/geolite-legacy-discontinuation-notice "
रिक हेल्लेवेल

2

देश एपीआई के लिए एक आईपी ​​पते के साथ एक लाइनर

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

> United States

उदाहरण :

https://ipapi.co/country_name/ - आपका देश

https://ipapi.co/8.8.8.8/country_name/ - आईपी 8.8.8.8 के लिए देश


यह एपीआई प्रति दिन 1000 (फ्री) एपीआई कॉल की अनुमति देता है।
सुधार किया

2

मेरे पास एक छोटा जवाब है जो मैंने एक परियोजना में उपयोग किया है। मेरे जवाब में, मैं समझता हूं कि आपके पास आगंतुक आईपी पता है।

$ip = "202.142.178.220";
$ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip));
//get ISO2 country code
if(property_exists($ipdat, 'geoplugin_countryCode')) {
    echo $ipdat->geoplugin_countryCode;
}
//get country full name
if(property_exists($ipdat, 'geoplugin_countryName')) {
    echo $ipdat->geoplugin_countryName;
}

1

मुझे पता है कि यह पुराना है, लेकिन मैंने यहां पर कुछ अन्य समाधानों की कोशिश की और वे पुराने लग रहे हैं या बस अशक्त हैं। तो यह है कि मैं यह कैसे किया।

http://www.geoplugin.net/json.gp?ip=जिसके उपयोग से किसी भी प्रकार के साइन अप या सेवा के लिए भुगतान करने की आवश्यकता नहीं होती है।

function get_client_ip_server() {
  $ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
  $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
  $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
  $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
  $ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
  $ipaddress = $_SERVER['REMOTE_ADDR'];
else
  $ipaddress = 'UNKNOWN';

  return $ipaddress;
}

$ipaddress = get_client_ip_server();

function getCountry($ip){
    $curlSession = curl_init();
    curl_setopt($curlSession, CURLOPT_URL, 'http://www.geoplugin.net/json.gp?ip='.$ip);
    curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);

    $jsonData = json_decode(curl_exec($curlSession));
    curl_close($curlSession);

    return $jsonData->geoplugin_countryCode;
}

echo "County: " .getCountry($ipaddress);

और यदि आप इसके बारे में अतिरिक्त जानकारी चाहते हैं, तो यह Json की पूर्ण वापसी है:

{
  "geoplugin_request":"IP_ADDRESS",
  "geoplugin_status":200,
  "geoplugin_delay":"2ms",
  "geoplugin_credit":"Some of the returned data includes GeoLite data created by MaxMind, available from <a href='http:\/\/www.maxmind.com'>http:\/\/www.maxmind.com<\/a>.",
  "geoplugin_city":"Current City",
  "geoplugin_region":"Region",
  "geoplugin_regionCode":"Region Code",
  "geoplugin_regionName":"Region Name",
  "geoplugin_areaCode":"",
  "geoplugin_dmaCode":"650",
  "geoplugin_countryCode":"US",
  "geoplugin_countryName":"United States",
  "geoplugin_inEU":0,
  "geoplugin_euVATrate":false,
  "geoplugin_continentCode":"NA",
  "geoplugin_continentName":"North America",
  "geoplugin_latitude":"37.5563",
  "geoplugin_longitude":"-99.9413",
  "geoplugin_locationAccuracyRadius":"5",
  "geoplugin_timezone":"America\/Chicago",
  "geoplugin_currencyCode":"USD",
  "geoplugin_currencySymbol":"$",
  "geoplugin_currencySymbol_UTF8":"$",
  "geoplugin_currencyConverter":1
}

1

मैंने "चंद्र नक्का" उत्तर पर आधारित एक कक्षा लिखी है। उम्मीद है कि यह लोगों की मदद कर सकता है यह एक सत्र के लिए जियोलुगिन से जानकारी बचाता है इसलिए जानकारी को याद करते समय लोड बहुत तेज होता है। यह एक निजी सरणी में मानों को सहेजता है इसलिए उसी कोड में याद रखना सबसे तेज़ है क्योंकि यह हो सकता है।

class Geo {
private $_ip = null;
private $_useSession = true;
private $_sessionNameData = 'GEO_SESSION_DATA';
private $_hasError = false;
private $_geoData = [];

const PURPOSE_SUPPORT = [
    "all", "*", "location",
    "request",
    "latitude", 
    "longitude",
    "accuracy",
    "timezonde",
    "currencycode",
    "currencysymbol",
    "currencysymbolutf8",
    "country", 
    "countrycode", 
    "state", "region", 
    "city", 
    "address",
    "continent", 
    "continentcode"
];
const CONTINENTS = [
    "AF" => "Africa",
    "AN" => "Antarctica",
    "AS" => "Asia",
    "EU" => "Europe",
    "OC" => "Australia (Oceania)",
    "NA" => "North America",
    "SA" => "South America"
];

function __construct($ip = null, $deepDetect = true, $useSession = true)
{
    // define the session useage within this class
    $this->_useSession = $useSession;
    $this->_startSession();

    // define a ip as far as possible
    $this->_ip = $this->_defineIP($ip, $deepDetect);

    // check if the ip was set
    if (!$this->_ip) {
        $this->_hasError = true;
        return $this;
    }

    // define the geoData
    $this->_geoData = $this->_fetchGeoData();

    return $this;
}

function get($purpose)
{
    // making sure its lowercase
    $purpose = strtolower($purpose);

    // makeing sure there are no error and the geodata is not empty
    if ($this->_hasError || !count($this->_geoData) && !in_array($purpose, self::PURPOSE_SUPPORT)) {
        return 'error';
    }

    if (in_array($purpose, ['*', 'all', 'location']))  {
        return $this->_geoData;
    }

    if ($purpose === 'state') $purpose = 'region';

    return (isset($this->_geoData[$purpose]) ? $this->_geoData[$purpose] : 'missing: '.$purpose);
}

private function _fetchGeoData()
{
    // check if geo data was set before
    if (count($this->_geoData)) {
        return $this->_geoData;
    }

    // check possible session
    if ($this->_useSession && ($sessionData = $this->_getSession($this->_sessionNameData))) {
        return $sessionData;
    }

    // making sure we have a valid ip
    if (!$this->_ip || $this->_ip === '127.0.0.1') {
        return [];
    }

    // fetch the information from geoplusing
    $ipdata = @json_decode($this->curl("http://www.geoplugin.net/json.gp?ip=" . $this->_ip));

    // check if the data was fetched
    if (!@strlen(trim($ipdata->geoplugin_countryCode)) === 2) {
        return [];
    }

    // make a address array
    $address = [$ipdata->geoplugin_countryName];
    if (@strlen($ipdata->geoplugin_regionName) >= 1)
        $address[] = $ipdata->geoplugin_regionName;
    if (@strlen($ipdata->geoplugin_city) >= 1)
        $address[] = $ipdata->geoplugin_city;

    // makeing sure the continentCode is upper case
    $continentCode = strtoupper(@$ipdata->geoplugin_continentCode);

    $geoData = [
        'request' => @$ipdata->geoplugin_request,
        'latitude' => @$ipdata->geoplugin_latitude,
        'longitude' => @$ipdata->geoplugin_longitude,
        'accuracy' => @$ipdata->geoplugin_locationAccuracyRadius,
        'timezonde' => @$ipdata->geoplugin_timezone,
        'currencycode' => @$ipdata->geoplugin_currencyCode,
        'currencysymbol' => @$ipdata->geoplugin_currencySymbol,
        'currencysymbolutf8' => @$ipdata->geoplugin_currencySymbol_UTF8,
        'city' => @$ipdata->geoplugin_city,
        'region' => @$ipdata->geoplugin_regionName,
        'country' => @$ipdata->geoplugin_countryName,
        'countrycode' => @$ipdata->geoplugin_countryCode,
        'continent' => self::CONTINENTS[$continentCode],
        'continentcode' => $continentCode,
        'address' => implode(", ", array_reverse($address))
    ];

    if ($this->_useSession) {
        $this->_setSession($this->_sessionNameData, $geoData);
    }

    return $geoData;
}

private function _startSession()
{
    // only start a new session when the status is 'none' and the class
    // requires a session
    if ($this->_useSession && session_status() === PHP_SESSION_NONE) {
        session_start();
    }
}

private function _defineIP($ip, $deepDetect)
{
    // check if the ip was set before
    if ($this->_ip) {
        return $this->_ip;
    }

    // check if the ip given is valid
    if (filter_var($ip, FILTER_VALIDATE_IP)) {
        return $ip;
    }

    // try to get the ip from the REMOTE_ADDR
    $ip = filter_input(INPUT_SERVER, 'REMOTE_ADDR', FILTER_VALIDATE_IP);

    // check if we need to end the search for a IP if the REMOTE_ADDR did not
    // return a valid and the deepDetect is false
    if (!$deepDetect) {
        return $ip;
    }

    // try to get the ip from HTTP_X_FORWARDED_FOR
    if (($ip = filter_input(INPUT_SERVER, 'HTTP_X_FORWARDED_FOR', FILTER_VALIDATE_IP))) {
        return $ip;
    }

    // try to get the ip from the HTTP_CLIENT_IP
    if (($ip = filter_input(INPUT_SERVER, 'HTTP_CLIENT_IP', FILTER_VALIDATE_IP))) {
        return $ip;
    }

    return $ip;
}

private function _hasSession($key, $filter = FILTER_DEFAULT) 
{
    return (isset($_SESSION[$key]) ? (bool)filter_var($_SESSION[$key], $filter) : false);
}

private function _getSession($key, $filter = FILTER_DEFAULT)
{
    if ($this->_hasSession($key, $filter)) {
        $value = filter_var($_SESSION[$key], $filter);

        if (@json_decode($value)) {
            return json_decode($value, true);
        }

        return filter_var($_SESSION[$key], $filter);
    } else {
        return false;
    }
}

private function _setSession($key, $value) 
{
    if (is_array($value)) {
        $value = json_encode($value);
    }

    $_SESSION[$key] = $value;
}

function emptySession($key) {
    if (!$this->_hasSession($key)) {
        return;
    }

    $_SESSION[$key] = null;
    unset($_SESSION[$key]);

}

function curl($url) 
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}
}

इस वर्ग के साथ 'ऑप' प्रश्न का उत्तर देकर आप कॉल कर सकते हैं

$country = (new \Geo())->get('country'); // United Kingdom

और उपलब्ध अन्य गुण हैं:

$geo = new \Geo('185.35.50.4');
var_dump($geo->get('*')); // allias all / location
var_dump($geo->get('country'));
var_dump($geo->get('countrycode'));
var_dump($geo->get('state')); // allias region
var_dump($geo->get('city')); 
var_dump($geo->get('address')); 
var_dump($geo->get('continent')); 
var_dump($geo->get('continentcode'));   
var_dump($geo->get('request'));
var_dump($geo->get('latitude'));
var_dump($geo->get('longitude'));
var_dump($geo->get('accuracy'));
var_dump($geo->get('timezonde'));
var_dump($geo->get('currencyCode'));
var_dump($geo->get('currencySymbol'));
var_dump($geo->get('currencySymbolUTF8'));

रिटर्निंग

array(15) {
  ["request"]=>
  string(11) "185.35.50.4"
  ["latitude"]=>
  string(7) "51.4439"
  ["longitude"]=>
  string(7) "-0.1854"
  ["accuracy"]=>
  string(2) "50"
  ["timezonde"]=>
  string(13) "Europe/London"
  ["currencycode"]=>
  string(3) "GBP"
  ["currencysymbol"]=>
  string(2) "£"
  ["currencysymbolutf8"]=>
  string(2) "£"
  ["city"]=>
  string(10) "Wandsworth"
  ["region"]=>
  string(10) "Wandsworth"
  ["country"]=>
  string(14) "United Kingdom"
  ["countrycode"]=>
  string(2) "GB"
  ["continent"]=>
  string(6) "Europe"
  ["continentcode"]=>
  string(2) "EU"
  ["address"]=>
  string(38) "Wandsworth, Wandsworth, United Kingdom"
}
string(14) "United Kingdom"
string(2) "GB"
string(10) "Wandsworth"
string(10) "Wandsworth"
string(38) "Wandsworth, Wandsworth, United Kingdom"
string(6) "Europe"
string(2) "EU"
string(11) "185.35.50.4"
string(7) "51.4439"
string(7) "-0.1854"
string(2) "50"
string(13) "Europe/London"
string(3) "GBP"
string(2) "£"
string(2) "£"

0

उपयोगकर्ता देश एपीआई वास्तव में आप क्या जरूरत है। यहाँ एक नमूना कोड file_get_contents () का उपयोग कर है जैसा कि आप मूल रूप से करते हैं:

$result = json_decode(file_get_contents('http://usercountry.com/v1.0/json/'.$cip), true);
$result['country']['name']; // this contains what you need

1
यह एपीआई प्रति दिन 100 (फ्री) एपीआई कॉल की अनुमति देता है।
सुधार किया

0

आप ipstack geo API का उपयोग करके आगंतुक देश और शहर पा सकते हैं। आपको अपना स्वयं का ipstack API प्राप्त करने की आवश्यकता है और फिर नीचे दिए गए कोड का उपयोग करें:

<?php
 $ip = $_SERVER['REMOTE_ADDR']; 
 $api_key = "YOUR_API_KEY";
 $freegeoipjson = file_get_contents("http://api.ipstack.com/".$ip."?access_key=".$api_key."");
 $jsondata = json_decode($freegeoipjson);
 $countryfromip = $jsondata->country_name;
 echo "Country: ". $countryfromip ."";
?>

स्रोत: ipstack API का उपयोग करके विज़िटर को PHP में देश और शहर प्राप्त करें


0

यह सिर्फ एक सुरक्षा नोट है get_client_ip()कि इसकी कार्यक्षमता यहां के अधिकांश उत्तरों को मुख्य कार्य के अंदर शामिल किया गया हैget_geo_info_for_this_ip()

की तरह अनुरोध शीर्षों में आईपी डेटा पर बहुत ज्यादा भरोसा नहीं है Client-IPया X-Forwarded-Forक्योंकि वे बहुत आसानी से जाली जा सकता है, लेकिन आप TCP कनेक्शन के स्रोत आईपी है कि वास्तव में हमारे सर्वर और ग्राहक के बीच स्थापित है पर भरोसा करना चाहिए $_SERVER['REMOTE_ADDR']के रूप में यह कर सकते हैं ' टी खराब हो सकती है

$_SERVER['HTTP_CLIENT_IP'] // can be spoofed 
$_SERVER['HTTP_X_FORWARDED_FOR'] // can be spoofed 
$_SERVER['REMOTE_ADDR']// can't be spoofed 

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


0

प्रयत्न

  <?php
  //gives you the IP address of the visitors
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
      $ip = $_SERVER['HTTP_CLIENT_IP'];}
  else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
      $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
      $ip = $_SERVER['REMOTE_ADDR'];
  }

  //return the country code
  $url = "http://api.wipmania.com/$ip";
  $country = file_get_contents($url);
  echo $country;

  ?>

अगर-और भाग आपको आगंतुक का आईपी पता देगा और अगला भाग देश का कोड लौटाएगा। Api.wipmania.com और उसके बाद api.wipmania.com/ [yy_IP_address] पर जाने की
दीपांशु महला

0

आप मेरी सेवा का उपयोग कर सकते हैं: https://SmartIP.io , जो किसी भी आईपी पते के पूर्ण देश के नाम और शहर के नाम प्रदान करता है। हम टाइमज़ोन, मुद्रा, प्रॉक्सी डिटेक्शन, टीओआर नोड्स डिटेक्शन और क्रिप्टो डिटेक्शन को भी उजागर करते हैं।

आपको बस साइनअप करने और मुफ्त एपीआई कुंजी प्राप्त करने की आवश्यकता है जो प्रति माह 250,000 अनुरोधों की अनुमति देती है।

आधिकारिक PHP लाइब्रेरी का उपयोग करते हुए, एपीआई कॉल बन जाती है:

$apiKey = "your API key";
$smartIp = new SmartIP($apiKey);
$response = $smartIp->requestIPData("8.8.8.8");

echo "\nstatus code: " . $response->{"status-code"};
echo "\ncountry name: " . $response->country->{"country-name"};

अधिक जानकारी के लिए एपीआई प्रलेखन की जाँच करें: https://smartip.io/docs


0

2019 तक, MaxMind कंट्री DB का उपयोग इस प्रकार किया जा सकता है:

<?php
require_once 'vendor/autoload.php';
use MaxMind\Db\Reader;
$databaseFile = 'GeoIP2-Country.mmdb';
$reader = new Reader($databaseFile);
$cc = $reader->get($_SERVER['REMOTE_ADDR'])['country']['iso_code'] # US/GB...
$reader->close();

स्रोत: https://github.com/maxmind/MaxMind-DB-Reader-php


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.