2016-11-18 3 views
1

TeamSpeakで何かのためにクライアントIPアドレスを取得するために作成した関数の形式を整える方法がありますか?この機能をより効率的に実行する方法はありますか?

function getClientIp() { 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) 
     return $_SERVER['HTTP_CLIENT_IP']; 
    else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) 
     return $_SERVER['HTTP_X_FORWARDED_FOR']; 
    else if(!empty($_SERVER['HTTP_X_FORWARDED'])) 
     return $_SERVER['HTTP_X_FORWARDED']; 
    else if(!empty($_SERVER['HTTP_FORWARDED_FOR'])) 
     return $_SERVER['HTTP_FORWARDED_FOR']; 
    else if(!empty($_SERVER['HTTP_FORWARDED'])) 
     return $_SERVER['HTTP_FORWARDED']; 
    else if(!empty($_SERVER['REMOTE_ADDR'])) 
     return $_SERVER['REMOTE_ADDR']; 
    else 
     return false; 
} 
初心者の

ビット

答えて

1

これはあなたのコードが行うのと同じことをしますが、それはより簡潔だとあなたはかなりの場合/他の拡張よりも、配列にヘッダを追加することができます。

function getClientIp() { 
    $headers = ['HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED',' 
HTTP_FORWARDED_FOR','HTTP_FORWARDED','REMOTE_ADDR']; 
    foreach ($headers as $h) { 
     if (!empty($_SERVER[$h])) { 
      return $_SERVER[$h]; 
     } 
    } 
    return false; 
} 
+0

非常によく見えますが、私はそれをやります。ありがとう! – RachMcrae

0

? :より効率的な表現。

function getClientIp() { 
    return !empty($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : 
      !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : 
      !empty($_SERVER['HTTP_X_FORWARDED']) ? $_SERVER['HTTP_X_FORWARDED']: 
      !empty($_SERVER['HTTP_FORWARDED_FOR']) ? $_SERVER['HTTP_FORWARDED_FOR']: 
      !empty($_SERVER['HTTP_FORWARDED']) ? $_SERVER['HTTP_FORWARDED']: 
      !empty($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : false; 
} 
関連する問題