1

PHP を使用した Web ページがあり、クライアント IP を取得しようとしていますが、サーバー GATEWAY の IP アドレス (192.168.0.1) が取得されます。

これは私がオフィスに持っているものです:

ISP ---> ISP ルーター ---> 私のルーター(192.168.0.1) ----> (192.168.0.2) 私のサーバー。

このすべての行を試しましたが、実際の IP を取得できず、SERVER GATEWAY の IP のみを取得できました。

$_SERVER['HTTP_X_FORWARDED_FOR']
$_SERVER['HTTP_CLIENT_IP']
$_SERVER['HTTP_X_REAL_IP']
$_SERVER['GATEWAY_INTERFACE']
$_SERVER['SERVER_ADDR']
$_SERVER['SERVER_NAME']
$_SERVER['SERVER_SOFTWARE']
$_SERVER['SERVER_PROTOCOL']
$_SERVER['REQUEST_METHOD']
$_SERVER['REQUEST_TIME']
$_SERVER['QUERY_STRING']
$_SERVER['DOCUMENT_ROOT']
$_SERVER['HTTP_ACCEPT']
$_SERVER['HTTP_ACCEPT_CHARSET']
$_SERVER['HTTP_ACCEPT_ENCODING']
$_SERVER['HTTP_ACCEPT_LANGUAGE']
$_SERVER['HTTP_CONNECTION']
$_SERVER['HTTP_HOST']
$_SERVER['HTTP_REFERER']
$_SERVER['HTTP_USER_AGENT']
$_SERVER['HTTPS']
$_SERVER['REMOTE_ADDR']
$_SERVER['REMOTE_HOST']
$_SERVER['REMOTE_PORT']
$_SERVER['SCRIPT_FILENAME']
$_SERVER['SERVER_ADMIN']
$_SERVER['SERVER_PORT'] 
$_SERVER['SERVER_SIGNATURE']
$_SERVER['PATH_TRANSLATED']
$_SERVER['SCRIPT_NAME']
$_SERVER['REQUEST_URI']
$_SERVER['PHP_AUTH_DIGEST']
$_SERVER['PHP_AUTH_USER'] 
$_SERVER['PHP_AUTH_PW']
$_SERVER['AUTH_TYPE']

次の変数は「未定義」です。

-HTTP_X_FORWARDED_FOR
-HTTP_CLIENT_IP
-HTTP_X_REAL_IP
-HTTPS
-REMOTE_HOST
-PATH_TRANSLATED
-PHP_AUTH_DIGEST
-PHP_AUTH_USER
-PHP_AUTH_PW
-AUTH_TYPE





編集:「 var_dump ($_SERVER)」を試してみましたが、クライアントの IP アドレスが見つかりません:( ヘッダーが破壊されているため、サーバーが元の IP アドレスを読み取ることができません. 現時点では、サーバーを前面に移動しない限り、この問題を解決する方法がわかりません.

4

2 に答える 2

3

同様の質問

試す

echo $_SERVER['REMOTE_ADDR'];

続きを読む

function getUserIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) //if from shared
    {
        return $_SERVER['HTTP_CLIENT_IP'];
    }
    else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //if from a proxy
    {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        return $_SERVER['REMOTE_ADDR'];
    }
}

続きを読むリンクと質問リンクを確認してください

于 2013-05-15T11:44:45.150 に答える
2

サーバーが実行されているマシンからリクエストを作成している場合、$_SERVER['REMOTE_ADDR']明らかに独自の IP アドレス (192.168.0.1) が含まれます。

于 2013-05-15T11:48:16.963 に答える