1

サーバーの同じディレクトリ ( http://www.xxxx.com/php/ ) に2 つの php ファイルがあります。

1) write_json.php


    $address['http_client'] = $_SERVER['HTTP_CLIENT_IP'];
    $address['http_x_forwarded_for'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
    $address['http_x_forwarded'] = $_SERVER['HTTP_X_FORWARDED'];
    $address['http_forwarded_for'] = $_SERVER['HTTP_FORWARDED_FOR'];
    $address['http_forwarded'] = $_SERVER['HTTP_FORWARDED'];
    $address['remote_addr'] = $_SERVER['REMOTE_ADDR'];

    header('Content-Type: アプリケーション/json');
    echo json_encode($アドレス);

2) get_ip.php

    $json_url = $_SERVER['SERVER_NAME'] . '/php/write_json.php';

    $json_string = '';
    $ch = curl_init($json_url);


    $options = array(CURLOPT_RETURNTRANSFER => true,
                         CURLOPT_HTTPHEADER => array('Content-type: application/json'),
                         CURLOPT_POSTFIELDS => $json_string);

    curl_setopt_array($ch, $options);

    $json_string = curl_exec($ch);
    echo $json_string;

get_ip.phpはwrite_json.php    を呼び出し   ます

クライアント IP が76.2.35.46 で、サーバー IP が80.59.3.23であると仮定すると 、クライアント ブラウザでhttp://www.xxxx.com/php/get_ip.php
を呼び出すと、

次のように、クライアント IP ではなくサーバー IP が表示されます。

{
    http_client: ヌル、
    http_x_forwarded_for: null,
    http_x_forwarded: ヌル、
    http_forwarded_for: null,
    http_forwarded: null,
    remote_addr: "80.59.3.23"
}

サーバー IP の代わりにクライアント IP を取得するにはどうすればよいですか?

4

3 に答える 3

2

サーバーからcurlを介してwrite_jsonを呼び出しています...つまり、サーバーは実際にwrite_jsonファイルを要求しているため、write_jsonはサーバーからの要求を認識しています。curl 呼び出しではなくインクルードを使用しないのはなぜですか?

于 2013-07-09T22:52:00.660 に答える
0

このままでは無理。最初にクライアント IP を取得してから、投稿されたデータとして curl 経由でサーバーに送信する必要があります。

于 2016-09-23T06:06:21.020 に答える
0

クライアント IP を返す次の関数を使用して、クライアント IP を取得しようとしています

// 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;
}

変数にIPを取得した後、送信します

于 2018-03-12T15:59:39.320 に答える