1

奇妙な問題があります。私が何をしても、IPはサーバーのIPであり、クライアント/訪問者ではありません。何をすべきか?

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARTDED_FOR'] != '') {
    $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip_address = $_SERVER['REMOTE_ADDR'];
}
return $ip_address;
}    
4

3 に答える 3

2

別のサーバー ソフトウェアに切り替える必要がある場合があります (現在使用しているものによって異なります)。

PHPドキュメントから:

$_SERVER は、ヘッダー、パス、スクリプトの場所などの情報を含む配列です。この配列のエントリは、Web サーバーによって作成されます。すべての Web サーバーがこれらのいずれかを提供するという保証はありません。サーバーは、一部を省略したり、ここにリストされていないものを提供したりする場合があります。とはいえ、これらの変数の多くは » CGI/1.1 仕様で考慮されているため、それらを期待できるはずです。

REMOTE_ADDRただし、CGI/1.1 仕様にあるため、使用しているサーバーがそれを返さないのは奇妙です。

于 2013-07-18T19:32:17.360 に答える
0

Web サーバーが正しく構成されていません (Web ホスト プロバイダーでエイリアス ドメインを購入する際にこの問題が発生したことがあります)。ただし、この問題を解決できない場合は、有効な IP アドレスかどうかを確認してから、単純に使用するためにそれを割り当てることを強くお勧めします。偽造して独自の値をそこに投げるのは簡単だからです(私はこの問題を抱えていました) )。$_SERVER['HTTP_X_FORWARDED_FOR']$_SERVER['REMOTE_ADDR']$_SERVER['HTTP_X_FORWARDED_FOR']

于 2013-07-18T19:59:31.557 に答える