2026, 새로운 도약을 시작합니다.

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

2년 전 조회 1,689

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개

채택된 답변
+20 포인트

/extend/user.config.php

Copy


// 관리자 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);

}

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

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

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

로그인
🐛 버그신고