무조건 비밀글 관련 질문입니다. > 그누4 질문답변

그누4 질문답변

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

무조건 비밀글 관련 질문입니다. 정보

무조건 비밀글 관련 질문입니다.

본문

이전에 있었던 저희 사이트만(?)의 버그인지는 모르겠으나
게시판이 무조껀 비밀글로 글을 쓰도록 되어있습니다.
어떤 행사에 참여자의 정보를 받기때문에 모든 글쓴이들의 글을 비밀글로 받고 있지요..
참여모집은 공지로 글을 올리게 되구요..

1.관리자가 참여모집글(비밀글이 아닙니다)을 올립니다.
2.일반 유저가 참여모집글을 보고 리플을 답니다.(비밀글로 올라옵니다)
여기까지는 정상적으로 됩니다.
그후에 다른 유저의 비밀글을 보게되면 원래로는 비밀번호를 묻는 페이지가 나와야 하는데
바로 보여집니다.

write_update.php파일의
if ($secret)
    set_session("ss_secret_{$bo_table}_{$wr_num}", TRUE);

이부분에서 세션이 만들어지면서 다른사람글도 보여지는듯 합니다.

지금은 해당 부분을 주석처리하여 자신의 글도 비밀번호를 받도록 임시방편으로 해두고 있지만..
계속 그럴수도 없고..

한가지 의심되는부분이..
board.php파일에

// 비밀글이라면
        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);
        }

이 부분이랍니다.. 제가 패치를 안해서 그런지 모르겠으나..
비슷한 부분에 문제가 있었던분 있으신가요?

댓글 전체

음 답글을 달면 wr_num의 값으로 세션을 만드는데
답글들이 모두 같은 wr_num값을 가지게 되는군요..
그래서 해당글의 답글들을 모두 볼수 있게 되버리네요..!
write_update.php 파일의 208줄

  if ($w == "r")
    {
        // 답변의 원글이 비밀글이라면 패스워드는 원글과 동일하게 넣는다.
        if ($secret)
            $wr_password = $wr[wr_password];

        $wr_id = $wr_id . $reply;
        $wr_num = $write[wr_num];
        $wr_reply = $reply;
    }
    else
    {
        $wr_num = get_next_num($write_table);
        $wr_reply = "";
    }

이 부분에서 윗부분의
$wr_num = $write[wr_num];를
$wr_num = get_next_num($write_table); 으로 고치면 정상적으로 작동을 하는군요..

근데 원본소스를 고치는거라서.. ㅡ.ㅡ;;

wr_num의 기능은 게시물 순서에 따른것이지요? 그럼 위부분처럼 답글시에도 wr_num을 늘려도 되는지요..!
원글이 -34이면 답글은 -35가 되도록 하여 답글을 쓸때 세션으로 구워지는값이 -35가 되고..
또다른 사람이 답글을 쓰면 -36이 되어 -35의 글은 볼수 없도록 말이지요..!

wr_num의 값이 답글에서도 증가될때 문제가 있을까요..? 아시는분.. ㅜ.ㅜ
wr_num을 증가 안시키고..

if ($secret)
    set_session("ss_secret_{$bo_table}_{$wr_num}", TRUE);

이부분을 주석처리하니 모든게 정상적으로 돌아가 버리네요..
자신의글을 파악하는게 비밀글 파악하는것보다 먼저있어서 그런가봅니다..
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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