팁/튜토리얼

최근에 댓글의 국적을 표시해야한다는 이슈가 있더군요.


갑자기 생각나서 수정해봤습니다.

애드온으로 제작해볼까 하다가 스킨 수정으로 방향을 잡았습니다.

 

우선 곰님의 구충제 모듈이 설치되어있어야 동작합니다.
https://github.com/poesis/rhymix-allbandazole
아직 설치하지 않으신 분은 구충제 먼저 복용하시고...

 

스케치북 스킨 폴더로 이동해서 화일을 하나 만듭니다.

 

<?php

class IPFlag

{

        public static function getCountryCode(string $ip)

        {

                $ip2long = ip2long($ip);

                $output = executeQuery('allbandazole.getCountryByIP', ['ip' => $ip2long]);

//                if (isset($output->data) && isset($output->data->country) && $output->data->start_ip <= $ip2long && $output->data->country!= 'KR')  //한국은 태극기 달지 않기

                if (isset($output->data) && isset($output->data->country) && $output->data->start_ip <= $ip2long) //태극기포함 무조건달기

{

                        $ipflag = sprintf('<img src="https://flagcdn.com/16x12/%s.png" alt="%s" title="%s">', strtolower($output->data->country), $output->data->country, $output->data->country);

                        return $ipflag;

                }

        }

}

저는 __class.html이라는 이름으로 만들었습니다.

 

 

__setting.html의 마지막줄에

<include target="__class.html" />

을 추가해서 화일을 불러옵니다.

 

 

 _read.html 수정

<div class="side fr">

 <small cond="$grant->manager || $mi->display_ip_address" class="m_no">({$oDocument->getIpaddress()}) </small>

 <small class="m_no">{IPFlag::getCountryCode($oDocument->variables['ipaddress'])}</small>  //추가

 

38번줄쯤 글쓴이의 ip 주소를 표시하는 부분 바로뒤에 한줄을 추가합니다.

 

 

 

댓글에도 표시하려면 

<span class="date">{getTimeGap($comment->get('regdate'), "Y.m.d H:i")}</span>

<small cond="$grant->manager || $mi->display_ip_address" class="m_no">({$comment->getIpaddress()})</small>

<small class="m_no">{IPFlag::getCountryCode($comment->variables['ipaddress'])}</small>   // 추가

_comment.html의 29번줄 쯤의 IP 주소 표기부분 바로 뒤에 한줄을 추가합니다.

 

 

정상적으로 수정이 되었다면

K-2552.png

K-2549.png

 

카르마 Lv. 4
imageprocess, 통합검색확장모듈
아빠팬더곰은 영원한 초보

댓글 3

  • 외부에 GeoIP 요청을 할 필요가 없으니 편리하기는 한데, 이게 그다지 정확하지가 않습니다. ㅎㅎ

     

    해외에는 다국적 통신사나 글로벌 클라우드 플랫폼이 많거든요.

    이 경우, 구충제 모듈의 DB를 사용하면 본사가 위치한 국가로 뜨게 됩니다.

    구충제 모듈 입장에서는 한국 빼고 적당히 다 차단하면 그만이고, 클라우드는 별도로 처리하니 상관없지만

    자칫 분쟁이 발생할 수 있는 댓글 국가 표시에 활용하기에는 영 애매하단 말이죠.

     

    국가 표시 수요가 더 많아지거나, 아예 법으로 요구하는 막장 상황이 된다면

    유료 DB를 사와서 서비스하는 등, 대안을 마련해 보려고 합니다.

  • @기진곰

    서버에 PHP와 아파치에 GeoIP가 설치되 있어서 비교해보니까 차이가 좀 있더군요.

    일단 KR이 아닌 것만 확인해도 어딥니까?

     

    https://dev.maxmind.com/geoip/importing-databases/mysql/

    이거는 라이선스 문제가 없을라나요?

  • @카르마

    무료 버전을 개인적으로 쓴다면 문제가 없는 것으로 알고 있습니다만,

    그걸 모듈에 담아서 배포한다면 얘기가 다르죠. ㅎㅎ

    게시판의 팁을 각자 따라하는 수밖에?