답글에서 사용된 비밀글 오류(?) 입니다 -..-a > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

답글에서 사용된 비밀글 오류(?) 입니다 -..-a 정보

답글에서 사용된 비밀글 오류(?) 입니다 -..-a

본문

오늘 회원분이 신고해주셔서 문제를 확인 했습니다. -..-a
 
A (원글) - 비밀글 아님
   B (비밀글) - 작성자 BBB
   C (비밀글) - 작성자 CCC
   D (비밀글) - 작성자 DDD
 
일반 회원들은 비밀글 B, C, D를 읽을 수 없습니다.
 
그런데, 비밀글 D를 작성한 회원 DDD는 비밀글 B, C를 읽을 수가 있습니다.
 
이런 오류... 어떻게 처리해야 하나요? 혹시 이런 오류를 보신 적이 있나요?
 
그누보드 버젼은 4.11.0 입니다.

댓글 전체

4.11.0이 될때까지 확인이 안되었다니... -..-a
아무래도 board.php를 수정해야 하겠죠?...
bbs/board.php에서 해당 부분을 퍼왔어요.
어디를 수정해야 되는지 부탁드릴께요.
아무리 읽어봐도 뭐가 문제인지 모르겠어요.

    // 자신의 글이거나 관리자라면 통과
    if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin || $member[mb_id] == $write[wr_5]) // 도솔천님. 특정회원에게 글보이기를 위해 수정함
        ;
    else
    {
        // 비밀글이라면
        if (strstr($write[wr_option], "secret"))
        {
            // 회원이 비밀글을 올리고 관리자가 답변글을 올렸을 경우
            // 회원이 관리자가 올린 답변글을 바로 볼 수 없던 오류를 수정
            $is_owner = false;
            if ($write[wr_reply] && $member[mb_id])
            {
                $sql = " select mb_id from $write_table
                          where wr_num = '$write[wr_num]'
                            and wr_reply = ''
                            and wr_is_comment = '0' ";
                $row = sql_fetch($sql);
                if ($row[mb_id] == $member[mb_id])
                    $is_owner = true;
            }

            $ss_name = "ss_secret_{$bo_table}_$write[wr_num]";
           
            if (!$is_owner)
            {
                //$ss_name = "ss_secret_{$bo_table}_{$wr_id}";
                // 한번 읽은 게시물의 번호는 세션에 저장되어 있고 같은 게시물을 읽을 경우는 다시 패스워드를 묻지 않습니다.
                // 이 게시물이 저장된 게시물이 아니면서 관리자가 아니라면
                //if ("$bo_table|$write[wr_num]" != get_session("ss_secret"))
                if (!get_session($ss_name))
                    goto_url("./password.php?w=s&bo_table=$bo_table&wr_id=$wr_id{$qstr}");
            }

            set_session($ss_name, TRUE);
        }
    }
한 사람이 테스트하면 쿠키때문에 다 보이게 됩니다.

B,C,D 를 각각 다른 아이디로 로그인해서 작성한후
브라우져를 다 닫고 다시 D 로 로그인하여 B 혹은 C 글을 클릭하면
비밀번호 입력페이지로 이동하시는 걸 보실 수 있습니다.

A (원글) - 비밀글 아님
  B (비밀글) - 작성자 BBB
  C (비밀글) - 작성자 CCC
  D (비밀글) - 작성자 DDD
ㅎㅎ
이놈 아래있는것은 주석처리하지 마시고, 이놈만 주석처리하십시오.
    //if (!get_session($ss_name))
        goto_url("./password.php?w=s&bo_table=$bo_table&wr_id=$wr_id{$qstr}");
이것도 좀 더 세부적으로 보자면 버그라고 할 수 있겠지요.

[원글] 작성자는 정상적인 게시물(비밀글 아님)을 작성
    ㄴ[답글] 첫번째 답글 작성자는 비밀글 작성 가능
    ㄴ[답글] 두번째 답글 작성자는 비밀글 작성 가능
    ㄴ[답글] 세번째 답글 작성자는 비밀글 작성 가능
 ... 반복 ...

이러한 루틴 자체가 논리적인 문제가 있습니다.
답변글이라면 원글의 형태를 따라가야 하며,
게시물 '작성자 & 관리자'가 아닌 경우에만 비밀글에 관한 처리를 고려한다는 것은,
상당한 무리수가 따른다고 볼 수도 있습니다.
관리권한이 없는 일반적인 회원이라면,
원글의 형태(일반/비밀글)를 따라가거나,
(이것은 '헐랭이님의 원글&답글 및 카테고리 유지에 팁' 내용을 참조)
아예 '비밀글' 작성을 할 수 없도록 검토되어야 할 것 같습니다.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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