2011-03-21 4 views
6

현재 사용자의 IPv4 주소를 감지하고 v4에서 IP 블록을 사용하고 있습니다. 그러나 나는 IPv6를 캡쳐하고 이것에 대한 차단 목록을 갖고 싶습니다. 질문은 다음과 같습니다. IPv6를 IPv4 또는 다른 PHP로 가져 오는 것과 같은 논리입니까? 나는 모든 장치가 IPv4와 IPv6를 가지고 있는지 확실하지 않거나 또는 이들 중 하나 일 뿐이며 시스템이 자동으로 어떤 형식인지 감지하고 저장한다.PHP에서 IPv6을 감지합니까?

답변

6

아파치는 PHP에 REMOTE_ADDR를보고합니다. 아파치가 v6 인터페이스에서 청취하면 v6 주소가됩니다.

쉽게 구별 할 수 있습니다. IPv4 주소는 항상 전체 길이가 .이고 IPv6 주소는 항상 콜론 :을 포함합니다.

차단 목록 (또는 허용 목록)을 만들 때 v6 주소를 처리 할 때주의해야합니다. 두 개의 연속 된 콜론 ::을 사용하여 단축 할 수 있습니다. 귀하의 OS가 더 짧거나 완전한 양식을 사용할 것이라는 보장이 없으므로 스크립트가이를 처리해야합니다. 자세한 내용은 Wikipedia's IPv6 페이지를 확인하십시오.

+0

['inet_pton'] (http://php.net/manual/en/function.inet-pton.php)는 두 패밀리를 바이너리 문자열로 구문 분석하고 문자열의 길이로 패밀리를 결정할 수 있습니다. – aaz

관련 문제