2016-11-18 6 views
1

Есть ли более аккуратный способ форматирования функции, которую я создал, чтобы получить IP-адреса клиента для чего-то на моем TeamSpeak, что это?Есть ли более эффективный способ запуска этой функции?

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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^