특정 IP만 게시판에 접근이 가능하도록 하였습니다.
본문
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 접근 허용 IP 리스트
$ok_ip_addr=array(
"123.45.678.901",
"50.135.40.11"
);
// 해당 게시판 테이블에 접근 허용 IP가 아니라면 돌려보냄
if($bo_table =='spe') {
$key = in_array($_SERVER[REMOTE_ADDR],$ok_ip_addr);
if(!$key) {
echo "차단 됨";
include_once(G5_PATH.'/_tail.php');
exit;
}
}
?>
위 코드 처럼 리스트에 없는 아이피라면 접근이 불가능하도록 설정 하였습니다.
그런데 이렇게 하다보면 유동 아이피인 회원도 있어 문제가 있을 것 같아 질문 드립니다.
1. 유동아이피는 4자리 중 맨 마지막 뒷자리만 바뀌는 것으로 알고 있습니다. 맞나요?
2. 그렇다면 4번째 마지막 자리만 광대역(*)으로 설정하고 싶은데, 어떻게 하면 될까요?
접근 허용 IP를 123.45.678.* 이런 식으로 설정하고 싶습니다.
!-->답변 3
아래처럼 허용할 아이피를 . 기준으로 3번째 까지만 지정해두고,
접속자의 아이피에서 3번째 까지만 검사하는 방법도 있습니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// 접근 허용 IP 리스트
$ok_ip_addr=array(
"123.45.678",
"50.135.40"
);
// 해당 게시판 테이블에 접근 허용 IP가 아니라면 돌려보냄
if($bo_table =='spe') {
$remote_addr_arr = explode(".",$_SERVER[REMOTE_ADDR]);
unset($remote_addr_arr[3]);
$remote_addr = implode(".",$remote_addr_arr);
$key = in_array($remote_addr,$ok_ip_addr);
if(!$key) {
echo "차단 됨";
include_once(G5_PATH.'/_tail.php');
exit;
}
}
?>
// 접근 허용 IP 리스트
// 앞의 C class 영역만 배열로 초기화 값을 만듭니다.
$ok_ip_addr=array(
"123.45.678.",
"50.135.40."
);
// 해당 게시판 테이블에 접근 허용 IP가 아니라면 돌려보냄
if($bo_table =='spe') {
for ($i = 0; $i < count($ok_ip_addr); $i++) {
if (strrpos($_SERVER[REMOTE_ADDR],$ok_ip_addr[$i]) === false) {
echo "차단 됨";
include_once(G5_PATH.'/_tail.php');
exit;
}
}
}
와 같은 형태로 변경가능합니다.
문자열의 일부분만 체크하는 형태라고 보시면됩니다.
!-->
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가 // 접근 허용 IP 리스트
$ok_ip_addr=array( "123.45.678.", "50.135.40.11" ); // 해당 게시판 테이블에 접근 허용 IP가 아니라면 돌려보냄
if($bo_table =='spe') {
foreach($ok_ip_addr as $k=>$v){
if( eregi($v,$_SERVER[REMOTE_ADDR]) ) { break; }
if( sizeof(ok_ip_addr) == $k+1 ) {
echo "차단 됨";
include_once(G5_PATH.'/_tail.php');
exit;
}
}
}
?>
답변을 작성하시기 전에 로그인 해주세요.