php - अपने आईपी से आगंतुकों को देश प्राप्त करना




geolocation ip (14)

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

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

मैं अपने आईपी के माध्यम से आगंतुकों को देश प्राप्त करना चाहता हूं ... अभी मैं इसका उपयोग कर रहा हूं ( 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 के लिए यह कोई अच्छा विकल्प है?

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

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


असल में, आप XML प्राप्त करने वाली जानकारी प्राप्त करने के लिए http://api.hostip.info/?ip=123.125.114.144 पर कॉल कर सकते हैं।


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

<?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',
)

आप 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

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

धन्यवाद

:)


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

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

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

समाधान # 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)
{
    [email protected]_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


मेरी सेवा https://ipdata.co 5 भाषाओं में देश का नाम प्रदान करती है! साथ ही किसी भी आईपीवी 4 या आईपीवी 6 पते से संगठन, मुद्रा, टाइमज़ोन, कॉलिंग कोड, ध्वज और टोर निकास नोड स्थिति डेटा।

यह दुनिया भर के 10 क्षेत्रों के साथ भी बेहद स्केलेबल है जो हर रोज 800 एम कॉल करने में सक्षम है!

विकल्पों में शामिल हैं; अंग्रेजी (एन), जर्मन (डी), जापानी (जेए), फ्रेंच (एफआर) और सरलीकृत चीनी (ज़ा-सीएच)

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

मैं ipinfodb.com एपीआई का उपयोग कर रहा हूं और जो भी आप ढूंढ रहे हैं उसे प्राप्त कर रहा हूं।

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

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

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

$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'];

बस।


मैंने चंद्र के जवाब की कोशिश की लेकिन मेरा सर्वर कॉन्फ़िगरेशन file_get_contents () को अनुमति नहीं देता है

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

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

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 .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

?>

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


हम उपयोगकर्ता आईपी पते का उपयोग कर स्थान प्राप्त करने के लिए 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
)

उपयोगकर्ता आईपी पाने के लिए समारोह

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;
}


उपयोगकर्ता कंट्री एपीआई में आपको वही चाहिए जो आपको चाहिए। फ़ाइल_get_contents () का उपयोग करके नमूना कोड यहां दिया गया है जैसा कि आप मूल रूप से करते हैं:

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

इस सरल 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: किसी भी आईपी पते का विवरण प्राप्त करें। [समर्थन आईपीवी 4 और आईपीवी 6]

<?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 )

?>




country-codes