묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
특정IP블럭을 지정하여 특정 페이지가 열리게 할수 있는 방법 문의....
2007.12.20 00:46
특정 사이트에 접속하면 접속자 IP를 자동으로 판단하여 지정된 특정페이지가 열리도록 하고싶습니다.
예를들어 www.xxx.kr이라는 사이트를 만들고
100.10.1.1~30 까지의 IP가 접속하면 www.xxx.kr/a.html 로 자동 이동하게 하고
100.10.1.31~60 까지의 IP가 접속하면 www.xxx.kr/b.html 로 자동 이동하게 하고
100.10.1.61~90 까지의 IP가 접속하면 www.xxx.kr/c.html 로 자동 이동하게 하길 원합니다.
위에서 지정하지 않은 IP접속은 디폴트페이지(www.xxx.kr/index.html)로 접속했으면 합니다.
제로보드에서 구현이 가능할지요?
혹 안된다면 다른방법은 없는지 조언 부탁드립니다.
여기저기 찾아봐도 특정IP차단하는 방법만 나와있네요.
고수님들의 많은 조언 부탁드립니다.
감사합니다.
댓글 6
-
지연아빠
2007.12.20 12:11
-
IFOSYSTEM
2007.12.20 13:51
제가 왕초보라 php 사용을 못합니다.
수고스럽지만 소스를 하나 만들어 주시면 안될까요?
부탁드립니다~ ^_^ -
지연아빠
2007.12.20 15:01
<? $ip = explode('.', $_SERVER['REMOTE_ADDR']); //IP를 .을 기준으로 쪼개어 배열로 만들어 줍니다. $data= settype($ip[3], "integer"); //IP의 마지막 자리를 정수형으로 변환합니다. if ($data<31 ) //만일 IP의 마지막 자리가 30이하이면 아래로 이동 echo "<script>location.href('http://www.zinagan.com/zero_qna');</script>"; elseif ($data<61) //만일 IP의 마지막 자리가 60이하이면 아래로 이동 echo "<script>location.href('http://www.zinagan.com/bbs_notice');</script>"; elseif ($data<91) //만일 IP의 마지막 자리가 90이하이면 아래로 이동 echo "<script>location.href('http://www.zinagan.com/bbs_free');</script>"; else //해당사항이 없으면 아래로 이동 echo "<script>location.href('http://www.zinagan.com');</script>"; ?>
간단하게 만들어보았습니다.
테스트 하시려면 www.zinagan.com/test2.html 을 클릭하시면 아이피 뒷자리에 맞게 이동합니다. -
IFOSYSTEM
2007.12.20 17:23
답변 너무너무 감사드립니다.
몇일동안 찾아 해매었는데 이제야 해결이 되었네요.
그런데 한가지 질문 더 드리겠습니다.
30이하는..zero_qna로 이런식으로 주면 제가 원하는 IP대역외에
다른 ip대역의 30이하 IP에서도 zero_qna 페이지로 이동하는거 아닌가요?
제가 잘못이해한건지 모르겠지만
저는 100.20.10.1~30을 원했는데 200.20.10.1~30도 같은 페이지로 접속이 되지 않을까요?
121.157.233.1~32는 A페이지로..
220.42.55.1~50은 B페이지로.....
이런식으로 완전히 다른 ip대역의 IP도 지정하였으면 합니다.
위에 주신 답변을 응용하면 가능할거 같은데
아직 Php 명령어를 이해하지 못해 응용이 안되네요.. ^^; -
지연아빠
2007.12.20 17:55
맞습니다...위에 있는 코드는 단지 맨 뒷자리만 체크하도록 설정된 것입니다.
따라서 100.20.10.1~30와 200.20.10.1~30 사용자는 같은 페이지를 보게 됩니다.
원하시는 아이피 대역을 제가 정확하게 모르니 아래 코드를 보시고 응용하시면 될것 같습니다.
121.157.233.1~30은 zero_qna페이지로 220.42.55.1~50은 bbs_notice페이지로 이동하게 하였으며 더 원하시는 아이피 대역은 추가하시면 됩니다.
<? $ip = explode('.', $_SERVER['REMOTE_ADDR']); //IP를 .을 기준으로 쪼개어 배열로 만들어 줍니다. $data1= settype($ip[0], "integer"); //IP의 첫번째 자리를 정수형으로 변환합니다. $data2= settype($ip[1], "integer"); //IP의 두번째 자리를 정수형으로 변환합니다. $data3= settype($ip[2], "integer"); //IP의 세번째 자리를 정수형으로 변환합니다. $data4= settype($ip[3], "integer"); //IP의 네번째 자리를 정수형으로 변환합니다. if ($data1==121 and $data2==157 and $data3==233 and $data4<31 ) //만일 IP의 첫번째 자리가 121이고 두번째가 157이고 세번째가 233이고 마지막 자리가 30이하이면 아래로 이동 echo "<script>location.href('http://www.zinagan.com/zero_qna');</script>"; elseif ($data1==220 and $data2==42 and $data3==55 and $data4<51 ) //만일 IP의 첫번째 자리가 220이고 두번째가 42이고 세번째가 55이고 마지막 자리가 50이하이면 아래로 이동 echo "<script>location.href('http://www.zinagan.com/bbs_notice');</script>"; else //해당사항이 없으면 아래로 이동 echo "<script>location.href('http://www.zinagan.com');</script>"; ?>
이런식으로 elseif를 만들어 나가면 될것 같습니다.
그런데 제가 질문을 하나 드리겠습니다.
이렇게 하시는 용도는 무엇인지요?
만일 특정 아이피그룹만이라면 문제가 없겠지만 광범위하게 사용하기에는 어려울것 같아서요...^^ -
IFOSYSTEM
2007.12.21 21:26
지연아빠님 덕분에 해결했습니다.
진심으로 감사드립니다.
항상 행운과 행복한 시간이 함께 하시길 기원드립니다~
php를 사용하실줄 아신다면 REMOTE_ADDR 와 스크립트를 이용하여 가능할것으로 보입니다.