IP

2016-03-30 24 views
1
iki harfli kıta kodunu Algılama

Bağlam:

bana şartlı bir Amerikan veya daha genel telefon numarasını görüntülemek için izin vermek benim kullanıcı (lar) ın iki harfli kıta kodunu algılamak istiyorum

.IP

E.g. Kıta Avrupası Kuzey Amerika veya Güney Amerika ise, Kuzey Amerika telefon numarasını görüntüleyin. Diğer, uluslararası genel telefon numarasını görüntüler.

denedim Ne:

  1. A similar question on Stack Overflow benim durumumda ancak hafif fonksiyonu kullanılarak çözüldü, fonksiyon çıkışı herhangi bir şey (yani boş) yoktu.
  2. PHP kılavuzu GEOIP uzantısının geoip_continent_code_by_name işlevini listeler, ancak bu uzantının yüklenmesi fazlaca görünüyor ve ayrıca WHM/cPanel için komut satırı yüklemelerini bilmiyorum.

Sorum:

IP tarafından iki harfli kıta kodu tespit daha kolay ve daha hafif bir yöntem var mı?

Bu işlevi kullanabilirsiniz
+0

Bu işleve göz atabilirsiniz: http://php.net/manual/f r/function.geoip kıta-kod ile-name.php. PECL Geoip'i kurmanız gerekiyor. –

+1

1. girişimde hata günlüğünü kontrol ettiniz mi? Boş çıktı bir hatadan kaynaklanabilir ... veya IP üzerinde bir 'whois 'çalıştırmayı deneyebilirsiniz. – chris85

+0

@ chris85 Tek hata, 2 girişimi ile ilgilidir (ölümcül hata, tanımlanmamış işlev çağrısı). –

cevap

0

:

+0

Önceki denemelere göre, sonuç boş. Hata kaydedilmedi. –

+0

Belki de ipiniz algılanmadı. Fonksiyonu google.com'un IP adresi ile test edebilirsiniz: 'get_continent_by_ip ('8.8.8.8');' –

+0

Web sayfamda boş ve yerel olarak: http://pastebin.com/bzVcBT38 I.e. İki ayrı ortam. –

2

Sen MaxMind tarafından kod https://maxmind.github.io/GeoIP2-php/

örnek resmi API kullanabilirsiniz

function get_continent_by_ip($ip = false) { 
    $code = false; 

    if (!$ip) { 
     $client = @$_SERVER['HTTP_CLIENT_IP']; 
     $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; 
     $remote = @$_SERVER['REMOTE_ADDR']; 

     if (filter_var($client, FILTER_VALIDATE_IP)) { 
      $ip = $client; 
     } elseif (filter_var($forward, FILTER_VALIDATE_IP)) { 
      $ip = $forward; 
     } else { 
      $ip = $remote; 
     } 
    } 

    $response = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$ip}"));  

    if ($response && isset($response->geoplugin_continentCode)) { 
     $code = $response->geoplugin_continentCode; 
    } 

    return $code; 
} 

Bu kıtanın kullanıcı ve döner kod IP algılar

<?php 

require_once 'vendor/autoload.php'; 
use GeoIp2\Database\Reader; 

// This creates the Reader object, which should be reused across 
// lookups. 
$reader = new Reader('GeoLite2-Country.mmdb'); 

// Replace "city" with the appropriate method for your database, e.g., 
// "country". 
$record = $reader->country('128.101.101.101'); 

echo ($record->continent->code); 
+0

Zaten pişmiş çeşitli MaxMind veri kaynaklarına sahip olan WordPress eklentisini seçtim: https://wordpress.org/plugins/geoip-detect/ –