Como mostrar o país, nome da cidade no cpanel?

0

Estou usando o Cpanel, gostaria de mostrar o nome do país e o nome da cidade na página de login, algo assim: Por exemplo:

 Your IP address is :  xxx.xxx.xxx.xxx
 Your Country name is: USA 
 Your City name is:  Seattle

Para informações acima, eu só posso mostrar o endereço IP seguindo o código php:

<?php echo $_SERVER['REMOTE_ADDR']; ?>

Como mostrar outras informações do usuário, como nome do país e nome da cidade?

Por favor, guie-me passo a passo como fazê-lo.

    
por Amin 10.10.2015 / 20:21

1 resposta

0

Você provavelmente desejará usar uma API de geolocalização .

O

ipinfo.io fornece uma interface simples de retorno de texto simples, mas, como muitas APIs de localização geográfica, requer versões pagas do serviço se você exceder certos limitações (ou seja, no caso de ipinfo.io , você precisa de mais de 1000 solicitações / dia ou SSL).

Usando a versão não-JSON do ipinfo.io como exemplo, seu código PHP pode parecer com:

<?php 

    // This turns on error display without messing with php.ini
    // Delete the following two lines in production

    ini_set('display_errors',1); 
    error_reporting(E_ALL);

    // We avoid using $_SERVER['REMOTE_ADDR'] directly with a custom variable
    $ip = $_SERVER['REMOTE_ADDR'];

    // Otherwise, using the $_SERVER['REMOTE_ADDR'] directly
    //$city = file_get_contents('http://ipinfo.io/'. $_SERVER['REMOTE_ADDR']. '/city');

    // Using our custom $ip variable

    $city = file_get_contents('http://ipinfo.io/'. $ip. '/city');
    $country = file_get_contents('http://ipinfo.io/'. $ip. '/country');

    //$region = file_get_contents('http://ipinfo.io/'. $ip. '/region');


    // An alternate formatting of City State, Country
    //echo $city.' '.$region.', ' .$country;

    // Print our variables. <br> is a standard HTML line break.
    echo 'Your IP address is:   '.$ip;
    echo '<br>';
    echo 'Your Country name is: '.$country;
    echo '<br>'; 
    echo 'Your City name is:    '.$city;
?>

Você pode omitir todas as linhas com //, pois são apenas comentários / exemplos. Da mesma forma, as linhas de exibição de erro (ini_set / error_reporting) são apenas para depuração. Os períodos antes e depois das variáveis são necessários para a concatenação. As URLs são concatenadas para

 Ex. http://ipinfo.io/123.123.123.123/city

e retorne texto simples neste formulário. Confira a página dos desenvolvedores do ipinfo.io para mais algumas idéias sobre o que pode ser retornado. O código acima retorna:

Ex.
    Your IP address is :  xxx.xxx.xxx.xxx
    Your Country name is: US
    Your City name is:  Las Vegas

Como alternativa, se você deseja "Estados Unidos" e "EUA", tente também tentar algo como Detalhes da cidade de Geobytes API legada. Para retornar "Estados Unidos":

<?php

    function getIP() {
      foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key) {
         if (array_key_exists($key, $_SERVER) === true) {
           foreach (explode(',', $_SERVER[$key]) as $ip) {
             if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
                   return $ip;
                }
             } 
          }
       }
    }

    $tags=json_decode(file_get_contents('http://getcitydetails.geobytes.com/GetCityDetails?fqcn='. getIP()), true);

    // Prints all available members of the $tags array, in case we forget our options
    //print_r($tags);

    // $tags[geobytesipaddress]) creates a non-fatal error so we use '' quotes around the array elements.
    print_r('Your IP address is: ' .$tags['geobytesipaddress']);
    echo '<br>';
    print_r('Your Country name is: ' .$tags['geobytescountry']);
    echo '<br>'; 
    print_r('Your City name is:    ' .$tags['geobytescity']);

    ?>

Este é apenas um exemplo de código ligeiramente modificado da página Geobytes. Conforme escrito, ele duplica a saída do primeiro exemplo de código, mas com o nome completo do país:

Ex.
    Your IP address is :  xxx.xxx.xxx.xxx
    Your Country name is: United States
    Your City name is:  Las Vegas

Como observação, a Geobytes API parece oferecer mais algumas opções do que o ipinfo.io e permite uma muito maior taxa de solicitações não pagas (se isso for importante).

    
por 11.10.2015 / 01:26

Tags