0

ユーザーの IP アドレスを取得して、地理に関連するコンテンツを表示しようとしています。PHP コード $ip = getenv('REMOTE_ADDR'); を使用しました。IP アドレスを取得します。これは私のコンピューターでは問題なく動作しますが、共同開発者が試してみたところ、サイトにまったく接続できず、「ホストにアクセスできません」というエラーが表示されました。彼は、FTP を介して、または彼の家の別のコンピューターからも私たちのサイトに接続できません。

私はこのコードを取り出しましたが、彼はまだ接続できませんでした (ただし、プロキシを使用することはできました)。なぜこのコードにこれらの副作用があるのか​​ 疑問に思っています。$_SERVER('REMOTE_ADDR') です。PHPでユーザーのIPアドレスを取得する最良の方法は何ですか?

ありがとう

ラス

4

3 に答える 3

8
  1. そのコードには副作用がありません。同僚が見ている問題は、ファイアウォール/接続/サーバー構成の問題である可能性が高いです。
  2. $_SERVER を使用することは、これらの変数の値を取得するための適切な方法です。
于 2009-09-05T22:36:24.487 に答える
7

http://thephpcode.blogspot.com/2009/01/php-getting-secondary-internet-protocol.html

function getIP() {
  $IP = '';
  if (getenv('HTTP_CLIENT_IP')) {
    $IP =getenv('HTTP_CLIENT_IP');
  } elseif (getenv('HTTP_X_FORWARDED_FOR')) {
    $IP =getenv('HTTP_X_FORWARDED_FOR');
  } elseif (getenv('HTTP_X_FORWARDED')) {
    $IP =getenv('HTTP_X_FORWARDED');
  } elseif (getenv('HTTP_FORWARDED_FOR')) {
    $IP =getenv('HTTP_FORWARDED_FOR');
  } elseif (getenv('HTTP_FORWARDED')) {
    $IP = getenv('HTTP_FORWARDED');
  } else {
    $IP = $_SERVER['REMOTE_ADDR'];
  }
return $IP;
}

少なくともこのコードは、ISP プロキシなどの背後にいるユーザーからでも実際の IP アドレスを取得します。

于 2009-09-06T06:28:17.730 に答える
0

あなたの共同開発者の DNS または /etc/hosts の設定が原因だと思います。

于 2009-09-05T22:46:24.863 に答える