ip대역 (ip범위) 확인하려면?

ip대역 (ip범위) 확인하려면?

QA

ip대역 (ip범위) 확인하려면?

본문

예를 들어 ip 대역이 85.208.0.0 - 85.209.255.255 사이인 경우

saudi 라고 표시하려는데

 

$bw = array("85.208.0.0","85.209.255.255");
$ip = "85.208.96.4";

if($ip > $bw[0] && $ip < $bw[1]) echo "saudi"

이렇게 하면 숫자가 아니다보니 판별을 못 하더라구요.

이런 경우엔 어떤 식으로 대역폭을 확인할 수 있을까요?

이 질문에 댓글 쓰기 :

답변 3

방법이야 여러가지있겠지만 지금 당장 제가 생각하는것은

따로 때서 비교하는 방법이 생각이 나네요

 

$ip = explode('.', $_SERVER['REMOTE_ADDR']);

if($ip[0] == 85 && ($ip[1] == 208 || $ip[1] == 209) && $ip[2] <= 255 && $ip[3] <= 255){

  echo 'saudi';

}

 

생각난대로 적은거라 if문이 살짝 지저분하네요

 

$bw = array("85.208.0.0","85.209.255.255");
$ip = str_replace(".", "", "85.208.96.4");

$s = str_replace(".", "", $bw[0]);

$e = str_replace(".", "", $bw[1]);

if($ip > $s && $ip < $e) echo "saudi"

.을 다 제거해서 숫자인 것처럼 변환해서 하면 되지 않을까요?

다른 분들 댓글에 답변 댓글 달고 채택하는 사이에
어마무시한 함수를 소개시켜 주셨네요. ^^
감사합니다. 이거 봤으면 요거 채택하는  건데..ㅎ
( ^ _______ ^ ) ===b

$ip = ip2long("85.208.96.4");
$s = ip2long($bw[0]);
$e = ip2long($bw[1]);
위에 수정을 안 했네요.

반대 함수는 long2ip입니다.
아이피를 문자열로 저장하는 경우도 있고 저런 식으로 int 형식으로 저장하는 경우도 있습니다.

ip 에는 대역폭이 있습니다

 

※ 0은 0~255 범위

1. A class   255.0.0.0  

2. B class   255.255.0.0

3. C class   255.255.255.0

 

A class 는 국가범위로 할당

B class 는 국가(작은)나 기관 범위로 할당

C class 는 기관 범위로할당

D class는 기관/개인

 

보통 이렇게 범주를 정하고

 

127.0.0.0  

의 범위는 localhost

 

168.192.0.0 은 내부망

172.0.0.0 도 내부망

 

형태로 할당하는것으로 알고있습니다.

 

따라서 국가로 할당/찾으려면 IP값을  explode를 통해서 잘라서

해당 범위에 해당되는 내용을 찾으시면됩니다.

https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/infoboard/stats/ipCurrent.jsp

 

여기에 엑셀을 다운받아 db화 시켜서 범위 매핑가능하겠죠

답변을 작성하시기 전에 로그인 해주세요.
전체 879
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT