0

こんにちは私はこの関数を使用してさまざまなシステムのIPアドレスを取得していますが、毎回同じ値を返します:117.239.82.182

function getRealIpAddr()
{
   if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
   {
     $ip=$_SERVER['HTTP_CLIENT_IP'];
   }
   elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
   {
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
   }
   else
   {
      $ip=$_SERVER['REMOTE_ADDR'];
   }
   return $ip;
}
4

2 に答える 2

1

117.239.82.182は外部IPアドレスです。PHPサーバーに接続するすべてのシステムが同じ外部IPアドレスの背後にある場合、それらはすべて同じIPアドレスとして通知されます。

スクリプトはローカルIPを取りません。それも可能だとは思わないでください。表示されているIPは、会社のファイアウォールのIPです。

于 2012-08-29T08:28:16.653 に答える
1

編集:(コメントでいくつかの説明をした後、答えは根本的に変わりました)

ユーザーのブラウザのUser-Agent設定を編集できます。さまざまなブラウザで設定を変更する方法については、このリンクをたどってください。次に、ブラウザのUser-Agentを読み取るようにPHPスクリプトを変更する必要があります。PHPでは$_SERVER['HTTP_USER_AGENT']、ブラウザのUser-Agent設定を返します。例えば。Company / System / 1.02 Blablablaのようなユーザーエージェントとして定義できます。次に、同じ文字列を受け取ったときに、それが既知のホストからのものであると想定できます。

User-Agentは簡単になりすまされる可能性があることに注意してください。したがって、この方法は安全ではありません。安全なソリューションは、VPNソリューションを実装することです。

于 2012-08-29T08:44:02.270 に答える