테스트 사이트 - 개발 중인 베타 버전입니다

ip대역 (ip범위) 확인하려면? 채택완료

sinbi 6년 전 조회 4,780

예를 들어 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개

채택된 답변
+20 포인트
Policia
6년 전

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

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

 

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

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

  echo 'saudi';

}

 

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

 
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sinbi
6년 전
단편적인 건 괜찮겠지만, DB 구축 작업하기엔 좀 ^^;;
답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

플래토
6년 전

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">https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/infoboard/stats/ipCurrent.jsp

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sinbi
6년 전
자세한 답변 감사합니다. 결국, 비교는 Policia 님 방법으로 해야 하는 거군요.

댓글을 작성하려면 로그인이 필요합니다.

$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"

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

s
sinbi
6년 전
이런식으로 처리하면, 잘못된 결과가 나올 수도 있을 것 같아요.
왕계란
6년 전
$bw = array("85.208.0.0","85.209.255.255");
$ip = ip2long(".", "", "85.208.96.4");
$s = ip2long(".", "", $bw[0]);
$e = ip2long(".", "", $bw[1]);
if($ip > $s && $ip < $e) echo "saudi";
s
sinbi
6년 전
다른 분들 댓글에 답변 댓글 달고 채택하는 사이에
어마무시한 함수를 소개시켜 주셨네요. ^^
감사합니다. 이거 봤으면 요거 채택하는 건데..ㅎ
( ^ _______ ^ ) ===b
왕계란
6년 전
$ip = ip2long("85.208.96.4");
$s = ip2long($bw[0]);
$e = ip2long($bw[1]);
위에 수정을 안 했네요.

반대 함수는 long2ip입니다.
아이피를 문자열로 저장하는 경우도 있고 저런 식으로 int 형식으로 저장하는 경우도 있습니다.
s
sinbi
6년 전
덕분에 오늘 좋은 함수 2개 득템했습니다.
감사해요. ^^

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인