2011-01-04 3 views
1

$ _SERVER ['REMOTE_ADDR']を使用して、クライアントのIPアドレス(現在のページを表示しているIPアドレス)を返しますが、現在は(同じコード)ホストのIPアドレス(私はIPアドレスでIPアドレスを調べました)。問題はホストや何ですか? ありがとうございます。

+6

あなたは偶然にあなたのホストからそれを訪れることはありませんか? – TJHeuvel

+0

プロキシを使用していますか? – Gumbo

+0

番号。私は何度かチェックした。私はなぜプロキシを使用しないでください – imez

答えて

12

HTTP_X_FORWARDED_FORを最初に照会し、割り当てられていない場合はREMOTE_ADDRを使用してください。

+0

私は今、HTTP_X_FORWARDED_FORを使用し、正しいipを返します。なぜREMOTE_ADDRに問題がありますか? – imez

+0

あなたとサーバーの間にプロキシが存在するため、プロキシのアドレスをREMOTE_ADDRとして取得します。 HTTP_X_FORWARDED_FORは、プロキシを使用するクライアントのIPです。 –

+0

@imez:@Roshはすでにあなたとサーバーの間にプロキシが存在しなければならないと指摘しており、 'REMOTE_ADDR'をクエリするとプロキシサーバーのIPを取得します。最初に 'HTTP_X_FORWARDED_FOR'をチェックすると、プロキシはこれを'本当の 'IPアドレスで設定します。 – James

2

は、私は配列のキーは大文字と小文字が区別されることに言及する必要があり、大文字でなければなりません:

var_dump($_SERVER['remote_addr']); 
echo "\n"; 
var_dump($_SERVER['REMOTE_ADDR']); 

が出力:

Notice: Undefined index: remote_addr in /home/adam/public_html/2011/01/04/foo.php on line 3 
NULL 

string(15) "10.0.1.51" 

私はvar_dump($_SERVER)だけの状態を評価するだろうあなた世界、そしてそこから行く。

+0

私は過去のコードを変更しませんでした。 – imez

+0

$ _SERVERの全体をダンプするのは良い考えです。私はHTTP_CLIENT_IPで作業しているプロキシの背後にある実際のIPアドレスを発見しました。 – ChrisV

4

デフォルトで

@imez @James IPは$ _SERVER [ 'REMOTE_ADDR']であるクライアント。ユーザーがPROXYサーバー(HTTPゲートウェイ)を使用してサイトに入ると、プロキシサーバー(HTTP_X_FORWARDED_FOR)が表示され、$ _SERVER ['REMOTE_ADDR']に独自のプロキシIPが与えられます。

匿名プロキシはHTTP_X_FORWARDED_FORを省略するか、単にあなたに嘘をつきます。

実際のクライアントIPがあることを知ることはできません。

+0

私は自分の答えについてコメントしました。実際のIPアドレスが 'HTTP_X_FORWARDED_FOR'であることは決して*甘いことではありませんが、私が言ったように、ほとんどの時間はそうです。 – James

+0

@James:あなたは私より速いです;-) - –

+0

localhostで何が起こるのでしょうか?どのように私はプロキシを使用して知っている(確かに私は使用しない)? –

関連する問題