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

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

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 as informações acima, 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, me guie passo a passo como fazer isso.

Responder1

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

ipinfo.iofornece uma interface simples de retorno de texto simples, mas, como muitas APIs de geolocalização, requer versões pagas do serviço se você exceder certas limitações (ou seja, no caso do 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 ser semelhante a:

<?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 erros (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. Os URLs concatenam para

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

e retorne texto simples neste formato. Confira apágina de desenvolvedores ipinfo.iopara mais algumas ideias sobre o que pode ser devolvido. 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

Alternativamente, se você quiser "Estados Unidos" versus "EUA", você pode tentar também algo como oDetalhes da cidade de GeobytesAPI 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 está 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 lateral, a API Geobytes parece suportar mais algumas opções do que ipinfo.io e permite ummuitotaxa de solicitação não paga mais alta (se isso for importante).

informação relacionada