2013-10-11 2 views
3

$ _SERVER [ 'REMOTE_ADDR']이 (가) 127.0.0.1을 반환합니다.

은 내가 광택 캐시를 설치했기 때문에 데이터가 광택 처리 된 다음 아파치와 서버가 클라이언트가 아닌 광택에서 온 것으로 생각합니까?

+0

를 볼 수 있지만 그 수 있습니다, 다수의 IP를 포함 할 수 경우 ..로드 균형 조정기로 nginx 사용하면이 문제가 .. 그냥 print_r $ _SERVER superglobal .. 다른 필드에서 같은 찾을 수 있습니다 .. 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'이 신뢰할 수있는 호스트인지 먼저 확인하십시오. 그리고 나서야'X_FORWARDED_FOR'와 같은 추가 HTTP 헤더에 의존 할 수 있습니다. – Kontrollfreak

관련 문제