본문 바로가기
프로그램개발/ServerSide(PHP,Node.js)

해외 ip차단 소스

by 크레도스 2023. 4. 26.

출처 : https://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=482146&page=1 

 

WWW.PHPSCHOOL.COM

개발자 커뮤니티 1위 PHPSCHOOL.COM 입니다.

phpschool.com

  • function is_korean_ip($ip_address) {
        $korean_ip_nets = array(
            '58.0.0.0/8',
            '59.0.0.0/8',
            '60.0.0.0/8',
            '61.0.0.0/8',
            '110.0.0.0/8',
            '111.0.0.0/8',
            '112.0.0.0/8',
            '113.0.0.0/8',
            '114.0.0.0/8',
            '115.0.0.0/8',
            '116.0.0.0/8',
            '117.0.0.0/8',
            '118.0.0.0/8',
            '119.0.0.0/8',
            '120.0.0.0/8',
            '121.0.0.0/8',
            '122.0.0.0/8',
            '123.0.0.0/8',
            '125.0.0.0/8',
            '126.0.0.0/8',
            '211.0.0.0/8',
            '218.0.0.0/8',
            '219.0.0.0/8',
            '220.0.0.0/8',
            '221.0.0.0/8',
            '222.0.0.0/8'
        );

        foreach ($korean_ip_nets as $korean_ip_net) {
            if (ip2long($ip_address) === false) {
                // 올바른 IP 주소가 아닌 경우
                return false;
            }
            $ip_net_arr = explode('/', $korean_ip_net);
            $ip_net = $ip_net_arr[0];
            $mask = $ip_net_arr[1];
            if ((ip2long($ip_address) & ~((1 << (32 - $mask)) - 1)) === ip2long($ip_net)) {
                return true;
            }
        }
        return false;
    }

    대역대는 더 있을거임