답글에서 사용된 비밀글 오류(?) 입니다 -..-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);
}
}
아무래도 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
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}");
이놈 아래있는것은 주석처리하지 마시고, 이놈만 주석처리하십시오.
//if (!get_session($ss_name))
goto_url("./password.php?w=s&bo_table=$bo_table&wr_id=$wr_id{$qstr}");
동일 세션에 대한 처리루틴 때문이겠지요.
테스트 결과 정상적으로(?!) 처리되고 있습니다.
테스트 결과 정상적으로(?!) 처리되고 있습니다.
get_session()을 왜 읽나 했습니다.ㅋㅋ
이것도 좀 더 세부적으로 보자면 버그라고 할 수 있겠지요.
[원글] 작성자는 정상적인 게시물(비밀글 아님)을 작성
ㄴ[답글] 첫번째 답글 작성자는 비밀글 작성 가능
ㄴ[답글] 두번째 답글 작성자는 비밀글 작성 가능
ㄴ[답글] 세번째 답글 작성자는 비밀글 작성 가능
... 반복 ...
이러한 루틴 자체가 논리적인 문제가 있습니다.
답변글이라면 원글의 형태를 따라가야 하며,
게시물 '작성자 & 관리자'가 아닌 경우에만 비밀글에 관한 처리를 고려한다는 것은,
상당한 무리수가 따른다고 볼 수도 있습니다.
관리권한이 없는 일반적인 회원이라면,
원글의 형태(일반/비밀글)를 따라가거나,
(이것은 '헐랭이님의 원글&답글 및 카테고리 유지에 팁' 내용을 참조)
아예 '비밀글' 작성을 할 수 없도록 검토되어야 할 것 같습니다.
[원글] 작성자는 정상적인 게시물(비밀글 아님)을 작성
ㄴ[답글] 첫번째 답글 작성자는 비밀글 작성 가능
ㄴ[답글] 두번째 답글 작성자는 비밀글 작성 가능
ㄴ[답글] 세번째 답글 작성자는 비밀글 작성 가능
... 반복 ...
이러한 루틴 자체가 논리적인 문제가 있습니다.
답변글이라면 원글의 형태를 따라가야 하며,
게시물 '작성자 & 관리자'가 아닌 경우에만 비밀글에 관한 처리를 고려한다는 것은,
상당한 무리수가 따른다고 볼 수도 있습니다.
관리권한이 없는 일반적인 회원이라면,
원글의 형태(일반/비밀글)를 따라가거나,
(이것은 '헐랭이님의 원글&답글 및 카테고리 유지에 팁' 내용을 참조)
아예 '비밀글' 작성을 할 수 없도록 검토되어야 할 것 같습니다.
-..-a
그렇군요. 오늘 낚시 성공(?)인가...
그런데 신고해주신 분은 다른 사람들 비밀글이 모두 보인다고하셨거든요.
그렇군요. 오늘 낚시 성공(?)인가...
그런데 신고해주신 분은 다른 사람들 비밀글이 모두 보인다고하셨거든요.
다른분도 보인다면.. 세션체크부분을 주석처리해서 결과를 한번 확인해보시기 바랍니다.
//if (!get_session($ss_name))
//if (!get_session($ss_name))
세션 주석처리하고 확인해 달라고 했는데... 정상이라고 합니다. 감솨 합니다 ^^
답글 뿐 아니라 비밀글을 작성하면 다른 비밀글도 읽을수 있죠..^^
비밀글도 그런가요???... -..-a 어떻게 해야되요???