조언을 구합니다

Extra Form
PHP PHP 7.4
CMS Rhymix 2.0

통신사 ip 대역으로 접속 했을 경우 댓글창을 없애버리는걸 진행 중입니다...!!!

 

{@
    $band = explode(".", getenv('REMOTE_ADDR'));
    $range = $band[0].$band[1];
    $range_ = $band[0].$band[1].$band[2];
    if(!$is_logged && ($range == 203226 || $range == 211234 || ($range >= 22332 && $range <= 22363) || $range_ == 3970 || $range == 11070 || $range == 175223 || $range == 211246 || $range == 118235 || $range == 211246 || $range == 6143 || $range == 211234 || $range == 106102 || $range == 117111 || $range == 21136 || $range == 106101)):
        $rangein=true;
    else:
        $rangein=false;
    endif;
}

 

제가 작성했었던 통신사 ip 대역을 이용해 위와 같이 코드를 짜보았는데 부실한 부분이 있나 여쭙니다...!!

  • profile
    $arrayTureList = array('203226', '211234' ...);
    if(in_array($range, $arrayTrueList)):
    else:
    endif;

    이런식으로 가는게 더 나을듯합니다.
  • profile profile
    조언 고맙습니다
  • profile

    $ranges = array(

        '203.226.*.*',

        '211.234.*.*',

        ... 중략 ...

    );

    $rangein = Rhymix\Framework\Filters\IpFilter::inRanges($_SERVER['REMOTE_ADDR'], $ranges);

     

    이렇게 쓰면 보기도 훨씬 편하고, IP 대역 목록을 관리하기도 편하고, 두 자리짜리와 세 자리짜리가 우연히 붙어서 엉뚱한 대역을 가리키게 되는 문제도 미리 방지할 수 있습니다.

     

    IP 대역은 203.226.*.* 라고 쓰셔도 되고, 전문용어(?)로 203.226.0.0/16 이라고 쓰셔도 라이믹스는 잘 알아듣습니다. 요즘 IP 주소 고갈 때문에 대기업들마저 두 자리 대역을 온전히 할당받지 못하고 /18이나 /20 등으로 쪼개는 경우가 많은데, 이런 것까지 정확하게 판단할 수 있지요.

     

    결론: 이미 있는 함수를 최대한 활용합니다.^^

  • profile profile
    아 내부 함수에 좋은게 있었네요 ㅋㅋ
  • profile profile
    명쾌한 답변 고맙습니다 코어에서 제공하는 함수 리스트는 직접 찾아봐야 하는거겠죠?