채택완료

카테고리별로 글삭제시 포인트 반환

2021-10-19 (화) 22:05:32 2,306

안녕하세요

특정 게시판에 일정시간 내에 글 삭제시 포인트를 지급해줘야 합니다.

카테고리별로 포인트를 다르게 주어야하고

최대한 그누원본을 안건드리고 싶어서

delete.skin.php를 수정했는데

제대로 작동하지 않는것 같습니다.

Copy
$ca_name = isset($_POST['ca_name']) ? trim($_POST['ca_name']) : '';

if (!$is_admin && $ca_name) {       // 관리자가아님 & 분류가있을 시
    if(G5_SERVER_TIME - strtotime($write[wr_datetime]) < 1 * 60 ) { // 1분 이내 삭제시 포인트 반환

        if ($ca_name == 'A') $insert_point = 2000;                  // 분류1일 때 2000포인트 넣어줌

        else if ($ca_name == 'B') $insert_point = 3000;             // 분류2일 때 3000포인트 넣어줌

        else if ($ca_name == 'C') $insert_point = 5000;             // 분류3일 때 5000포인트 넣어줌
         
        else $insert_point = ''; //공지 및 설정제외 분류는 포인트를 돌려주지 않음

        if($insert_point)
            insert_point($member['mb_id'], $insert_point, "{$board['bo_subject']} {$wr_id} {$ca_name} 삭제 반환", $bo_table, $wr_id, $expire);
    }
}

비슷한 코드가 글쓰기시 write_update.skin.php 에서 차감은 잘 되는데

delete.skin에서는 왜 안먹는지 모르겠습니다.

아래는 잘 작동하는 write_update.skin.php 입니다.

Copy
$ca_name = isset($_POST['ca_name']) ? trim($_POST['ca_name']) : '';

if (!$is_admin && $ca_name && ($w == '' || $w == 'r')) {       // 관리자가아님 & 분류가있음 & (새글 or 답글 작성시)

   if ($ca_name == 'A') $insert_point = -2000;                 // 분류1일 때 2000포인트 차감

   else if ($ca_name == 'B') $insert_point = -3000;            // 분류2일 때 3000포인트 차감

   else if ($ca_name == 'C') $insert_point = -5000;            // 분류3일 때 5000포인트 차감
     
   else $insert_point = ''; //공지 및 설정제외 분류는 포인트를 차감하지 않음

   if($insert_point)
      insert_point($member['mb_id'], $insert_point, "{$board['bo_subject']} {$wr_id} {$ca_name}", $bo_table, $wr_id, $expire);
}

일정시간이 지나면 글삭제가 불가능하게 막는법도 생각해보긴했습니다만

사이트 특성상 글삭제는 자유롭게 되고 포인트만 시간내 글삭제시 반환해주고 싶은데

delete.skin.php 에선 카테고리를 인식 못하는건지 안되네요  ㅠ ㅠ

답변 3개 / 댓글 2개

채택된 답변
+20 포인트
2021-10-20 (수) 00:01:41

삭제 할때 보통은 ca_name이 post 값으로 넘어가지는 않을텐데 넘어가나 확인을 해보세요 ca_name이 체크가 안되시는거면요

답변에 대한 댓글 1개

감사합니다..! 스스로 알아내고 오니 이분 말이 맞습니다
post는 작동 안하고
$write['ca_name'] == 'A') $insert_point = 2000;
요렇게 쓰니 되네요...!
2021-10-20 (수) 00:01:41

삭제 할때 보통은 ca_name이 post 값으로 넘어가지는 않을텐데 넘어가나 확인을 해보세요 ca_name이 체크가 안되시는거면요

2021-10-19 (화) 23:21:57

오류디버깅을 하시기 위해서는 순서대로 실행하시고 echo 하셔서 어디서 실행이 안되는지 확인하시는게 중요합니다

1. 삭제시 delete.skin.php 페이지가 호출되는지 확인

  delete.skin.php 제일위에서 echo 찍으셔서 노출되는지 확인하시면 됩니다

2. 해당 소스에서는 분기별로 처리가 되는지 확인

if (!$is_admin && $ca_name) {   <= 해당 조건이 실행되는지 확인
if(G5_SERVER_TIME - strtotime($write[wr_datetime]) < 1 * 60 ) { <= 실행되는지 확인

등 순서대로해당 조건들이 실행되는지 한번씩 확인해보셔야 합니다

답변에 대한 댓글 1개

마지막줄에 써놓았지만 카테고리 조건문을 인식하지 못합니다...ㅠ ㅠ
라이트에서는 먹는데 딜리트에서 카테고리를 인식할수 있는 방법은 없을까요....

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