댓글 작성자를 불러오는 변수는 어디서 찾을수가 있을까요?

댓글 작성자를 불러오는 변수는 어디서 찾을수가 있을까요?

QA

댓글 작성자를 불러오는 변수는 어디서 찾을수가 있을까요?

본문

댓글작성자만 해당 게시글의 내용을 변경되어 보여지게 하려합니다

구현 팁 좀 알려주시면 감사하겠습니다

이 질문에 댓글 쓰기 :

답변 4

다음 코드를 view.skin.php 상단에 

$row = sql_fetch("select count(*) as cnt from $write_table where wr_is_comment>0 and wr_parent='$wr_id' and mb_id='{$member['mb_id']}' ");

if( $row['cnt'] ){ include_once("$board_skin_path/view.skin2.php"); return; }

 

view.skin2.php는 view.skin.php를 복사해서 원하는 형태로 변경해서 출력되게 만드세요

 

 

 

 

 

구조적으로  이해하셔야 할게있습니다.

 

게시물은 1개가 등록되고 작성자도 1명입니다.

댓글은 1개의 게시물에 바로 달린 댓글도 있고

댓글의 대댓글도 있습니다.

1개의 게시물에 바로달린 댓글도 1개만 있을수도있지만 보통 여러개가 달리게되죠

그러면 판단해야 하는 시점이 언제인지가 중요합니다.

 

게시물의 번호는 고유번호는 wr_id로 이고

댓글은 parent_id가 게시글의 wr_id와 같으면서 wr_is_comment = 1 인것이 댓글입니다.

 

물론 댓글의 작성자는 mb_id가 되구요

그러면

 

글이 읽혀지는 view.php에서

혹은 그 하위의 스킨에서 (게시판마다 스킨이 다를수있으니)

스킨상단에서 권한체크를 한후 판단하는게 좋습니다.

 

권한체크는 

여부로 판단해야겠죠

 

간단하게 위의 언급된 내용들만 조건으로 판단해보면

 


 
$chk = sql_fetch("select count(*) cnt from 게시판테이블 where wr_id = '{$view['wr_id']}' and wr_is_comment = 1 and mb_id = '{$member['mb_id']}' ")['cnt'];
if ($chk > 0) {
  echo "댓글을 작성한 사람입니다.";
  // 여기의 내용을 권한체크할 내용으로 변경하셔야 하겠죠
}
 

 

위와 같은 로직을 필요한 영역에 넣고 체크하시면됩니다.

단, 게시판이 동일할때가 중요하니 잊지마시고

모든 게시판에 적용하면 아무도 댓글을 작성할수없을겁니다.

 

댓글작성자인지 판단하는 로직에서만 사용(함수로만드셔서)하세요

 

        <!-- 본문 내용 시작 { -->
        <div id="bo_v_con">
            <?php 
            /*
             * 댓글작성자에게 보이는 내용은 wr_content2를 추가하거나

             * wr_1 여분필드를 text 타입으로 변경하여 이용하는 등 추가하신 뒤
             * view.skin.php나 /bbs/view.php 에서 분기처리하여

             * 출력할 내용을 변경하여 보여지게 하면 될 듯 합니다.
             * 댓글작성 조건이 나와있지 않아 로그인, 비로그인 나눠서 작업했습니다
             */

 

 

 

            //방법1) START. 로그인해야 댓글작성할 수 있을 경우===============
            
            $view['content2'] = "댓글작성자에게 보이는 내용입니다.";
            $setContent = $view['content'];
            //로그인했을 경우 (회원 아이디로 댓글 작성 갯수 조회)
            if ($is_member) {
                $setTable = $write_table;
                $sqlWhereArray = array();
                $sqlWhereArray[] = "1=1";
                $sqlWhereArray[] = "wr_parent = '$wr_id'";
                $sqlWhereArray[] = "wr_is_comment = 1";
                $sqlWhereArray[] = "mb_id = '{$member['mb_id']}'";
                $sqlWhere = " WHERE ".implode(" AND ", $sqlWhereArray);
                $cSql = " SELECT COUNT(*) as cnt FROM ".$setTable.$sqlWhere;
                $cRow = sql_fetch($cSql);

                //만약 댓글작성자라면 content2로 보여준다
                if (!empty($cRow['cnt'])) $setContent = $view['content2'];
            }
            //방법1) END. 로그인해야 댓글작성할 수 있을 경우===============

 

 

 


            //방법2) START. 비로그인도 댓글작성할 수 있을 경우===============
            
            $view['content2'] = "댓글작성자에게 보이는 내용입니다.";
            $setContent = $view['content'];
            $setTable = $write_table;
            $sqlWhereArray = array();
            $sqlWhereArray[] = "1=1";
            $sqlWhereArray[] = "wr_parent = '$wr_id'";
            $sqlWhereArray[] = "wr_is_comment = 1";
            //로그인했을 경우 (회원 아이디로 댓글 작성 갯수 조회)
            if ($is_member) {
                $sqlWhereArray[] = "mb_id = '{$member['mb_id']}'";
            }
            //로그인하지 않았고 비로그인 상태에서 작성한 댓글이 있을 때 (ip로 조회)
            else{
                $sqlWhereArray[] = "mb_id = ''";
                $sqlWhereArray[] = "wr_ip = '{$_SERVER['REMOTE_ADDR']}'";
            }
            $sqlWhere = " WHERE ".implode(" AND ", $sqlWhereArray);
            $cSql = " SELECT COUNT(*) as cnt FROM ".$setTable.$sqlWhere;
            $cRow = sql_fetch($cSql);

            //만약 댓글작성자라면 content2로 보여준다
            if (!empty($cRow['cnt'])) $setContent = $view['content2'];

            //방법2) END. 비로그인도 댓글작성할 수 있을 경우===============


            
            echo get_view_thumbnail($setContent); 
            ?>
        </div>
        
        <!-- } 본문 내용 끝 -->

 

 

 

 

 

더 좋은 방법이 있겠지만 저라면 이렇게 했을 것 같습니다 ~

그리구 조건에서 $is_admin = super 일 경우엔 작성 내용 변경되는것이 되지 않도록하는 작업도 필요할 거에요

와....진짜 균이님을 비롯한 많은 대단하신 개발자분들 앞에서 한없이 작아지지만 나도 저렇게되어야겠다

귀감이 되는 하루입니다

플래토님, 소중한시간들님 두 분께서 작성해주신 코드 보면서 공부 많이했습니다

감사합니다!!

답변을 작성하시기 전에 로그인 해주세요.
전체 408
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT