簡體   English   中英

在PHP中獲取不正確的IP地址

[英]getting ip address not accurate in php

那里我有一個應用程序可以獲取用戶IP地址所在位置的php中的經度和緯度,但是它不能准確顯示這是我的代碼

<form action="" method="POST">
<input type="submit" name="ipBtn" value="Get ip address">
    <?php 
     if(isset($_POST['ipBtn'])) {
        $user_ip = getenv('REMOTE_ADDR');
        $geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
        $country = $geo["geoplugin_countryName"];
        $region = $geo["geoplugin_region"];
        $longitude = $geo["geoplugin_longitude"];
        $latitude = $geo["geoplugin_latitude"];
        $first_name = $_GET[userName];
        $password = $_GET['last_name'];
    ?>

</form>

獲取訪問者/客戶端IP地址的最簡單方法是使用$_SERVER['REMOTE_ADDR']$_SERVER['REMOTE_HOST']變量。

但是,有時這不能返回訪問者的正確IP地址,因此我們可以使用其他一些服務器變量來獲取IP地址。

以下兩個函數等效,只是在如何以及從何處檢索值方面有所不同。

getenv()用於獲取PHP中環境變量的值。

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (getenv('HTTP_CLIENT_IP'))
        $ipaddress = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
       $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

$ _SERVER是一個數組,其中包含由Web服務器創建的服務器變量。

// Function to get the client IP address
function get_client_ip() {
    $ipaddress = '';
    if (isset($_SERVER['HTTP_CLIENT_IP']))
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_X_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    else if(isset($_SERVER['HTTP_FORWARDED']))
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    else if(isset($_SERVER['REMOTE_ADDR']))
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM