특정 아이피만 관리자 페이지 접속 시 다중접속 문의드립니다.

특정 아이피만 관리자 페이지 접속 시 다중접속 문의드립니다.

QA

특정 아이피만 관리자 페이지 접속 시 다중접속 문의드립니다.

본문

1. 단일 아이피

$possible_ip = 'xxx.xxx.xxx.xxx'; // 아이피 입력
if ($_SERVER['REMOTE_ADDR'] != $possible_ip) {
    alert('접근 권한이 없습니다.', G5_URL);
}
2. 다중 아이피 (콤마로 구분해서 추가)

$possible_ip = array("xxx.xxx.xxx.xxx", "xxx.xxx.xxx.xxx");
if (!in_array($_SERVER['REMOTE_ADDR'], $possible_ip)){
   alert('접근 권한이 없습니다.', G5_URL);
}
3. 아이피 대역대로 지정 (마지막 아이피 3자리가 계속 바뀔 경우)
예를 들어 아이피가 123.456.789.000 이면 마지막 000을 제외한 123.456.789만 입력

if(!preg_match("/^xxx.xxx.xxx/",$_SERVER['REMOTE_ADDR'])) {
   alert('접근 권한이 없습니다.', G5_URL);
}

 

위와 같이 특정 아이피 접속 허용하는 방법이 있는데 위 방법중 단일아이피가 접속되면서 아이피 대역대로 지정되도록 하고 싶은데 방법이 있는지 문의드립니다.

ex) 123.234.345.678 아이피 접속 허용하면서 987.555.555 아이피 대역대도 접속이 되게 하려면?

 

방법이 있는지 문의드립니다.

이 질문에 댓글 쓰기 :

답변 2

/extend/user.config.php


// 관리자 ip 접근 추가 시작
$admin_ip = array(
    '123.234.345.678', // 단일 아이피
    '987.555.555.*' // 대역폭
);
add_event('admin_common', 'get_admin_ip');
// 관리자 ip 접근 추가 끝
 
// 특정 IP에서만 사용이 가능하도록 조건식을 추가하기 위함 (gnuwiz)
function get_admin_ip()
{
    global $admin_ip;
    $client_ip = $_SERVER['REMOTE_ADDR'];
    foreach ($admin_ip as $ip) {
        // IP에 와일드카드 '*'가 포함되어 있는지 확인합니다
        if (strpos($ip, '*') !== false) {
            $pattern = str_replace('*', '\d{1,3}', $ip);
            if (preg_match('/^'.$pattern.'$/', $client_ip)) {
                return; // IP 일치, 액세스 허용
            }
        } elseif ($ip === $client_ip) {
            return; // IP가 정확하게 일치함, 액세스 허용됨
        }
    }
    session_unset(); // 모든 세션변수를 언레지스터 시켜줌
    session_destroy(); // 세션해제함
    alert('접근 권한이 없습니다.', G5_URL);
}

이렇게 해보는건 어떨까요?

 

$possible_ip = '123.234.345.678'; // 단일 아이피 입력

$possible_ip_range = '987.555.555'; // 아이피 대역대 입력 (처음 세자리) '987.555.555.xxx' 아이피 대역대의 접근이 허용

 

$ip_parts = explode('.', $_SERVER['REMOTE_ADDR']); // 접속 아이피를 '.'으로 구분하여 배열로 저장


 

// '123.234.345.678' 아이피와 '987.555.555.xxx' 아이피 대역대의 접근이 허용

if ($_SERVER['REMOTE_ADDR'] != $possible_ip && implode('.', array_slice($ip_parts, 0, 3)) != $possible_ip_range) {

alert('접근 권한이 없습니다.', G5_URL);

}

 

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

회원로그인

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