반응형
국내 아이피 대역을 확인 하실려면
https://ip.nida.kr/ip_cate_stat/stat_05_04.act
에서 확인 가능하며 엑셀 파일로도 다운 가능 합니다.
https://ip.nida.kr/ip_cate_stat/stat_05_04_toexcel.act
다운 받은 엑셀 파일내용 중 시작IP 와 마지막 IP 값을
각 자리수가 3자리가 되도록 수정후 . 점을 제거 합니다.
202.6.95.0 인경우 202006095000 처럼 바뀌겠군요.
이렇게 바뀐 값을 "시작IP_마지막IP" 처럼 변경해서 배열로 담습니다.
저의 경우 에디트 플러스를 활용 했습니다.
$ipgroup = array("2020060950000_202006095255","202014103000_202014103255");
처럼 배열로 담습니다.
이후 추가되는 IP만 배열에 계속 추가 해주면 됩니다.
이와 같은 변경하는 작업을 어럽게 느끼시는 분을 위해 제가 오늘 날짜로 올라온것 까지 작업해서 첨부 해놨습니다.
첨부파일 다운받으실려면 회원가입후 이메일 인증 받으시고 등업요청후 제가 승인하면 다운 가능 해 집니다.
워낙 광고 도배하는 회원이 있어서 이와 같은 복잡한 절차를 거치도록 했으니 양해 바랍니다.
이제 저 배열을 활용하기만 하면 되겠군요.
접속자 IP를 받아서 비교를 한번 해보겠습니다.
$userip = getenv("REMOTE_ADDR");
//. 점으로 구분해서 변수로 담습니다.
$tmpuserip = explode(".",$userip);
//str_pad 함수를 이용해서 자리수를 "0"으로 채워 하나의 값으로 합칩니다.
$userip = str_pad((int)$tmpuserip[0],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[1],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[2],3,"0",STR_PAD_LEFT).str_pad((int)$tmpuserip[3],3,"0",STR_PAD_LEFT);
//배열 IP만큼 돌립니다.
for($i=0;$i<count($ipgroup);$i++) {
//변수값을 분리합니다.
$tmpip = split("_",$ipgroup[$i]);
//접속자 IP가 시작IP값보다 크거나 마지막 IP보다 작은 값이면 포함되는 값이므로 차단
if($tmpip[0]<=$ip || $tmpip[1]>=$ip) {
echo "국내 IP만 접속 허용합니다.";
exit;
}
}
배열 값은 "대역 시작 IP _ 대역 끝 IP" 로 저장 되어 있습니다.
따라서 접속한 사용자의 IP를 받아서 루프를 돌며 해당 대역에 포함되는지 체크하시면 됩니다.
참, IP6 IP에 대해서는 별도로 처리 하셔야함을 잊지 마세요! ^^
반응형
'웹프로그램' 카테고리의 다른 글
자바스크립트 마우스 따라 다니는 이미지 (0) | 2009.04.15 |
---|---|
php upload 용량 늘리기 (0) | 2009.04.13 |
PHP str_pad() 자릿수 맞혀 수정하기 (0) | 2009.04.10 |
[PHP] IP4 대역 . 제거 및 자릿수 변경하기 (0) | 2009.04.10 |
ASP 메일 발송시 다음 이유 때문에 원격 도메인 'naver.com'에 메시지를 배달하지 못했습니다. (0) | 2009.04.07 |
ASP 메일발송시 오류 Microsoft VBScript 런타임 오류 error '800a0046' 사용 권환이 없습니다. (0) | 2009.04.07 |
PHP 접속자 OS가 vista 인지 XP 인지 확인 하기 (0) | 2009.04.03 |
addslashes() stripslashes() DB 저정시 '홀따옴표에 \백슬러시 붙였다 빼주는 함수 (0) | 2009.03.23 |