2017-07-18 16 views
-1

私は数週間使っているPHPスクリプトを持っています。それは私のウェブサイトを訪れる人のIPを捕捉することができますが、数日から(私は私のホストサーバーOVHのオプション "CDN + HTTP/2")私のスクリプトが私のウェブホストOVHの複数のパブリックIPアドレスのうちの1つを返すことを確認します。 訪問者のIP

function get_ip() { 
     if (getenv('HTTP_X_FORWARDED_FOR')) { 
      $ip = getenv('HTTP_X_FORWARDED_FOR'); 
     } 
     elseif (getenv('HTTP_CLIENT_IP')) { 
      $ip = getenv('HTTP_CLIENT_IP'); 
     } 
     elseif (getenv('HTTP_X_COMING_FROM')) { 
      $ip = getenv('HTTP_X_COMING_FROM'); 
     } 
     elseif (getenv('HTTP_VIA')) { 
      $ip = getenv('HTTP_VIA'); 
     } 
     elseif (getenv('HTTP_XROXY_CONNECTION')) { 
      $ip = getenv('HTTP_XROXY_CONNECTION'); 
     } 
     else { 
      $ip = getenv('REMOTE_ADDR'); 
     } 
     return $ip; 
    } 

    $ip = get_ip(); 

はあなたの助け

+0

これをすべてダンプして何が間違っているかを確認できます。 –

+0

私は最後にgetenv( 'HTTP_X_FORWARDED_FOR')を置くと動作します...ありがとう;) – Chrys

答えて

1

[OK]を、ソリューションをありがとう:

はここでスクリプトです。

function get_ip() { 
    if (getenv('HTTP_CLIENT_IP')) { 
     $ip = getenv('HTTP_CLIENT_IP'); 
    } 
    elseif (getenv('HTTP_X_COMING_FROM')) { 
     $ip = getenv('HTTP_X_COMING_FROM'); 
    } 
    elseif (getenv('HTTP_VIA')) { 
     $ip = getenv('HTTP_VIA'); 
    } 
    elseif (getenv('HTTP_XROXY_CONNECTION')) { 
     $ip = getenv('HTTP_XROXY_CONNECTION'); 
    } 
    elseif (getenv('REMOTE_ADDR')) { 
     $ip = getenv('REMOTE_ADDR'); 
    } 
    else { 
     $ip = getenv('HTTP_X_FORWARDED_FOR'); 
    } 
    return $ip; 
} 

$ip = get_ip(); 
+1

はいそれは解決策です^^ – Chrys

関連する問題