웹마스터 팁

130523 10:10  -  스팸IP 인지 조회하는 부분 조금 보완 - 기존 IP 변수에 저장해 쿼리 줄임

 

----------------------------------

 

XE 공홈에 있던 글에서 아이디어를 얻어서 기능을 만들어보았습니다.

스팸은 모든 유저가 겪는 고통이기에, 이 기능만큼은 무료로 기능 구현방법을 공개합니다

솔직히 이 팁이 Core 에 포함되었으면 하는데, 과연 포함될지는 미지수죠 ^^;;;

(사용해보시고 도움이 되시면,  XE Core Issue 쪽에 건의해보세요 ^^;  호응이 좋으면 될지도)

 

관리자페이지 -> 회원목록 에서 회원을 선택해서 삭제할 경우

일반삭제는 그냥 회원정보만 삭제되고 기존글/댓글이 유지되지만.

'스팸처리' 를 눌러서 삭제하면,  회원정보가 삭제 되면서 동시에 그 회원이 쓴 모든 글 / 모든 댓글 도 같이 삭제되며. 또한 해당 글/댓글의  IP 주소를 스팸필터에 자동등록하게 하는 기능이 포함되어있습니다..

 

처음에는 지금 만든기능을 트리거화 하려했는데, 일반회원의 탈퇴나 삭제시 관련글들이 다 지워지면 안 되니.

결국 Core 업데이트될때마다 재수정을 해시는 방법밖에 없지만,  수정량이 많은건 아니니 스팸에 시달리는 것보다는 낫겠죠?

 

스팸처리 기능 관련 문의사항은..

http://sejin7940.co.kr/index.php?mid=sejin7940_works&category=92002&page=1    에 남겨주세요.

 

 

수정방법은 아래에 기록해둡니다.

XE 1.5 와 XE 1.7 이 조금 다릅니다.  1번은 버전에 따라 수정법이 다르고,  2번.3번 사항은 동일합니다.

 

혹시나의 상황을 대비해, DB는 꼭 백업을 해두고 진행하세요 ^^

 

 

1. modules/member/tpl/member_list.html 에서

 

(1) XE 1.5 기반에서 수정방법

130번째줄 부근의

<span class="btn"><button type="submit" name="type" value="delete">{$lang->cmd_delete}</button></span> 

밑에다가 추가

<span class="btn"><button type="submit" name="type" value="spam">스팸처리</button></span>

 


(2) XE 1.7 기반에서 수정방법

1)
<a href="#listManager" data-value="delete" class="modalAnchor _member x_btn">{$lang->delete}</a>  아래에다가 추가 (2군데 있음. 26번째줄과 105번째줄

부근)

<a href="#listManager" data-value="spam" class="modalAnchor _member x_btn">스팸처리</a>


2)
166번째 줄 부근의

<button type="submit" name="type" value="modify|delete" class="x_btn x_btn-inverse">{$lang->confirm}</button>

를 아래걸로 교체

<button type="submit" name="type" value="modify|delete|spam" class="x_btn x_btn-inverse">{$lang->confirm}</button>

 

 

이후에 기술할 2. 3. 은   XE 1.5 와 XE 1.7 모두 동일함


2. modules/member/member.admin.controller.php 에서

function procMemberAdminSelectedMemberManage() 함수 내부에


case 'delete':{  위에다가 추가


    
     case 'spam':{   // sejin7940 스팸회원 삭제 위해
      $output = $this->sejin7940_spamMember($member_srl);
      if(!$output->toBool()) {
       $oDB->rollback();
       return $output;
      }
      break;
     }

 

 

3. modules/member/member.admin.controller.php  에서

제일 끝에 함수 하나 추가  (제일 끝이란 끝부분의  } ?>  위를 말합니다)

 

 
  //  sejin7940 - 스팸회원 삭제/ 관련 글/ 관련 댓글 자동 삭제 및 IP 스팸등록 기능
  function sejin7940_spamMember($member_srl) {
   // 스팸 유저가 쓴 모든 글 자동 삭제
   $oDocumentModel = &getModel('document');
   $oDocumentController = &getController('document');
   $obj->member_srl = $member_srl;
   $obj->list_count = '99999999999';
   
   $columnList = array('document_srl','ipaddress');
   $document_list = $oDocumentModel->getDocumentList($obj,false,true,$columnList);
   foreach($document_list->data as $key_document => $val_document) {

    // 회원 IP 스팸에 등록
    $args_spam->ipaddress = $val_document->get('ipaddress');
    if($args_spam->ipaddress &&  ($ipaddress_bk != $args_spam->ipaddress )) {
     $output_spam = executeQuery('spamfilter.isDeniedIP', $args_spam);
     if(!$output_spam->data->count) {
      $ipaddress_bk = $args_spam->ipaddress;
      executeQuery('spamfilter.insertDeniedIP', $args_spam);
     }
    }
    // 글 삭제
    $oDocumentController->deleteDocument($val_document->document_srl);
   }

   // 스팸 유저가 쓴 모든 댓글 자동 삭제
   $oCommentModel = &getModel('comment');
   $obj->search_target = 'member_srl';
   $obj->search_keyword = $member_srl;
   $comment_list = $oCommentModel->getTotalCommentList($obj);
   $oCommentController = &getController('comment');
   foreach($comment_list->data as $key_comment => $val_comment) {
    // 회원 IP 스팸에 등록
    $args_spam->ipaddress = $val_comment->get('ipaddress');
    if($args_spam->ipaddress &&  ($ipaddress_bk != $args_spam->ipaddress )) {
     $output_spam = executeQuery('spamfilter.isDeniedIP', $args_spam);
     if(!$output_spam->data->count) {
      $ipaddress_bk = $args_spam->ipaddress;
      executeQuery('spamfilter.insertDeniedIP', $args_spam);
     }
    }
    $oCommentController->deleteComment($val_comment->comment_srl);
   }

   // 회원정보 삭제
   $oMemberController = &getController('member');   
   $oMemberController->memberInfo = null;
   $oMemberController = &getController('member');
          $output = $oMemberController->deleteMember($obj->member_srl);
                 if(!$output->toBool()) return $output;

   return $output;
  }


 

ps. 한줄 광고

XE 기반의 사이트 제작이나  기능제작등을 원하시면 ^^

XE 전문제작자 에게 맡겨보세요   =>   http://sejin7940.co.kr/index.php?mid=order_qna 

제목 글쓴이 날짜
강동1인샵【출장안마사이트.COM】강동1인샵 강동 1인샵 강동1인샵 songkangkong767 2025.02.28
신림오피 ⦑오피사이트.NET⦒ 신림OP 신림오피 신림출장샵 신림오피 koykoyah 2025.02.28
분당1인샵【오피쓰.COM】분당마사지 분당안마 분당스웨디시 songkangkong767 2025.02.28
연신내오피 ⦑출장마사지안내.COM⦒ 연신내오피 연신내OP 연신내건마 연신내오피 koykoyah 2025.02.28
남양주마사지【오피.CLUB】남양주 마사지 남양주마사지 남양주마사지 songkangkong767 2025.02.28
동두천오피 ⦑오피.CLUB⦒ 동두천오피 동두천출장마사지 동두천오피 동두천OP koykoyah 2025.02.28
선릉안마【오피쓰주소.COM】선릉 안마 선릉안마 선릉안마 songkangkong767 2025.02.28
광주오피 ⦑출장마사지안내.COM⦒ 광주오피 광주OP 광주건마 광주오피 koykoyah 2025.02.28
판교안마【오피.CLUB】판교 안마 판교안마 판교안마 songkangkong767 2025.02.28
산본오피 산본OP ⦑출장안마사이트.COM⦒ 산본휴게텔 산본오피 산본오피 koykoyah 2025.02.28
부천안마【오피사이트.NET】부천스웨디시 부천마사지 부천1인샵 songkangkong767 2025.02.28
대구오피 대구OP ⦑오피쓰.COM⦒ 대구휴게텔 대구오피 대구오피 koykoyah 2025.02.28
울산마사지【오피.CLUB】울산 마사지 울산마사지 울산마사지 songkangkong767 2025.02.28
선릉오피 ⦑오피사이트.NET⦒ 선릉OP 선릉오피 선릉출장샵 선릉오피 koykoyah 2025.02.28
부산스웨디시【출장안마사이트.COM】부산1인샵 부산안마 부산마사지 songkangkong767 2025.02.28
평촌오피 ⦑출장마사지안내.COM⦒ 평촌오피 평촌OP 평촌건마 평촌오피 koykoyah 2025.02.28
울산1인샵【오피쓰.COM】울산1인샵 울산 1인샵 울산1인샵 songkangkong767 2025.02.28
충주오피 충주출장안마 ⦑오피쓰주소.COM⦒ 충주OP 충주오피 충주오피 koykoyah 2025.02.28
강남스웨디시【출장안마사이트.COM】강남1인샵 강남안마 강남마사지 songkangkong767 2025.02.28
가락오피 ⦑오피사이트.NET⦒ 가락마사지 가락오피 가락오피 가락OP koykoyah 2025.02.28