如何在cpanel中显示国家,城市名称?

如何在cpanel中显示国家,城市名称?

我正在使用 Cpanel,我想在登录页面显示国家名称和城市名称,如下所示:例如:

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

对于以上信息,我只能通过以下 php 代码显示 IP 地址:

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

如何显示其他用户信息,如国家名称和城市名称?

请一步一步指导我如何操作。

答案1

您可能希望使用地理位置 API

ipinfo.io提供了一个简单的纯文本返回接口,但是,与许多地理位置 API 一样,如果超出某些限制,则需要付费版本的服务(例如,在 ipinfo.io 的情况下,您需要每天超过 1000 个请求或 SSL)。

以非 JSON 版本的 ipinfo.io 为例,您的 PHP 代码可能如下所示:

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

您可以省略所有带有 // 的行,因为这些只是注释/示例。同样,错误显示行(ini_set/error_reporting)仅用于调试。变量前后的句点是连接所必需的。URL 连接到

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

并以此形式返回纯文本。查看ipinfo.io 开发者页面了解有关可以返回什么的更多想法。上面的代码返回:

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

或者,如果你想要“United States”而不是“US”,你也可以尝试类似Geobytes 城市详情旧版 API。要返回“美国”:

<?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']);

?>

这只是 Geobytes 页面上的示例代码,经过了轻微修改。正如所写,它复制了第一个代码示例的输出,但带有完整的国家名称:

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

顺便提一下,Geobytes API 似乎比 ipinfo.io 支持更多选项,并且允许很多更高的未付费请求率(如果重要的话)。

相关内容