2013-10-11 4 views
3

$ _SERVER ['REMOTE_ADDR'] возвращает 127.0.0.1.

заключается в том, что, поскольку я установил кэш лака, и данные идут на лак, тогда apache и запрос на сервер поступают от лака, а не от клиента?

+0

Я не знаю, о Лаке, но это может быть Случай. У меня была эта проблема при использовании nginx в качестве балансировки нагрузки .. просто print_r $ _SERVER superglobal .. вы найдете IP в другом поле ... например X_FORWARDED_FOR – mishu

ответ

12

Получить удаленный адрес IP, как это:

public function getRemoteIPAddress() { 
    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']; 
    } 
    return $_SERVER['REMOTE_ADDR']; 
} 
+0

Извините за downvote, но это плохой совет. См. Ответ [@ Ka.] (Http://stackoverflow.com/a/37254156/2032498). Кроме того, «HTTP_CLIENT_IP» может поступать от клиента и поэтому ненадежен. В общем, сначала убедитесь, что 'REMOTE_ADDR' является доверенным хостом. И только тогда вы можете полагаться на дальнейшие HTTP-заголовки, такие как 'X_FORWARDED_FOR'. – Kontrollfreak

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