권한설정오류..이거 버그인가요? > 그누4 질문답변

그누4 질문답변

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

권한설정오류..이거 버그인가요? 정보

권한설정오류..이거 버그인가요?

본문

1.jpg
 
 
그누보드 4.10.00 (73)  버젼으로 사용중인데요
권한설정안할시에는 멀쩡한데요 비회원 접근 권한 설정을 주면은
오류가 납니다
비회원의 게시판 목록과 글읽기 권한 설정을 주었거든요..
그런데 게시판 클릭시 위의 팝창이 뜨고..로그인 페이지로 넘어갑니다
 
그러면 로그인 페이지에서 위 팝창내용과 아래의 팝창이 무한반복 되면서
확인을 누르면  뜹니다 결국 사이트를 그냥 닫아야 하는 오류가 발생하네요..ㅠ
 
 
 
7.jpg
 
 
 
 
->다른 비슷한 유형의 내용을 검색해 찾아봐서 적용해봤으나 역시 해결이 안됩니다.
해결할수 없는 버그성문제인지..진단좀 부탁 드려요..
 
'확인'을 누르면 로그인 페이지로 넘어간후
 
 계속 위 두개 내용의 팝창만 계속 무한반복,강제로 사이트를 닫지않는한 반복됩니다
사이트 상단의 주메뉴란도 위 팝창과 더불어 층층이 반복해서 쌓여나타나는 (깨지는)
오류가 같이 나거든요...
 
 
 
 
 
board.php
--------------------------------------------------------------------------
 
<?
include_once("./_common.php");
if (!$board[bo_table])
{
    if ($cwin) // 코멘트 보기
       alert_close("존재하지 않는 게시판입니다.", $g4[path]);
    else
       alert("존재하지 않는 게시판입니다.", $g4[path]);
}
if ($write[wr_is_comment])
{
    /*
    if ($cwin) // 코멘트 보기
        alert_close("코멘트는 상세보기 하실 수 없습니다.");
    else
        alert("코멘트는 상세보기 하실 수 없습니다.");
    */
    goto_url("./board.php?bo_table=$bo_table&wr_id=$write[wr_parent]#c_{$wr_id}");
}
if (!$bo_table)
{
    $msg = "bo_table 값이 넘어오지 않았습니다.\\n\\nboard.php?bo_table=code 와 같은 방식으로 넘겨 주세요.";
    if ($cwin) // 코멘트 보기
        alert_close($msg);
    else
        alert($msg);
}
// wr_id 값이 있으면 글읽기
if ($wr_id)
{
    // 글이 없을 경우 해당 게시판 목록으로 이동
    if (!$write[wr_id])
    {
        $msg = "글이 존재하지 않습니다.\\n\\n글이 삭제되었거나 이동된 경우입니다."
        if ($cwin)
            alert_close($msg);
        else
            alert($msg, "./board.php?bo_table=$bo_table");
    }
    // 그룹접근 사용
    if ($group[gr_use_access])
    {
        if (!$member[mb_id]) {
            $msg = "비회원은 이 게시판에 접근할 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.";
            if ($cwin)
                alert_close($msg);
            else
                alert($msg, "./login.php?wr_id=$wr_id{$qstr}&url=".urlencode("./board.php?bo_table=$bo_table&wr_id=$wr_id"));
        }
        // 그룹관리자 이상이라면 통과
        if ($is_admin == "super" || $is_admin == "group")
            ;
        else
        {
            // 그룹접근
            $sql = " select count(*) as cnt
                       from $g4[group_member_table]
                      where gr_id = '$board[gr_id]' and mb_id = '$member[mb_id]' ";
            $row = sql_fetch($sql);
            if (!$row[cnt])
                alert("접근 권한이 없으므로 글읽기가 불가합니다.\\n\\n궁금하신 사항은 관리자에게 문의 바랍니다.", $g4[path]);
        }
    }
    // 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
    if ($member[mb_level] < $board[bo_read_level])
    {
        if ($member[mb_id])
            alert("글을 읽을 권한이 없습니다.");
        else
            alert("글을 읽을 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id{$qstr}&url=".urlencode("board.php?bo_table=$bo_table&wr_id=$wr_id"));
    }
    // 자신의 글이거나 관리자라면 통과
    if (($write[mb_id] && $write[mb_id] == $member[mb_id]) || $is_admin)
        ;
    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);
        }
    }
    // 한번 읽은글은 브라우저를 닫기전까지는 카운트를 증가시키지 않음
    $ss_name = "ss_view_{$bo_table}_{$wr_id}";
    if (!get_session($ss_name))
    {
        sql_query(" update $write_table set wr_hit = wr_hit + 1 where wr_id = '$wr_id' ");
        // 자신의 글이면 통과
        if ($write[mb_id] && $write[mb_id] == $member[mb_id])
            ;
        else
        {
            // 회원이상 글읽기가 가능하다면
            if ($board[bo_read_level] > 1) {
                if ($member[mb_point] + $board[bo_read_point] < 0)
                    alert("보유하신 포인트(".number_format($member[mb_point]).")가 없거나 모자라서 글읽기(".number_format($board[bo_read_point]).")가 불가합니다.\\n\\n포인트를 모으신 후 다시 글읽기 해 주십시오.");
                insert_point($member[mb_id], $board[bo_read_point], "$board[bo_subject] $wr_id 글읽기", $bo_table, $wr_id, '읽기');
            }
        }
        set_session($ss_name, TRUE);
    }
    $g4[title] = "$group[gr_subject] > $board[bo_subject] > " . strip_tags(conv_subject($write[wr_subject], 255));
}
else
{
    if ($member[mb_level] < $board[bo_list_level])
    {
        if ($member[mb_id])
            alert("목록을 볼 권한이 없습니다.", "..");
           
        else
            alert("목록을 볼 권한이 없습니다.\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id{$qstr}&url=".urlencode("board.php?bo_table=$bo_table&wr_id=$wr_id"));
    }
    if (!$page) $page = 1;
    $g4[title] = "$group[gr_subject] > $board[bo_subject] $page 페이지";
}
include_once("$g4[path]/head.sub.php");
$width = $board[bo_table_width];
if ($width <= 100) $width .= '%';
// IP보이기 사용 여부
$ip = "";
$is_ip_view = $board[bo_use_ip_view];
if ($is_admin) {
    $is_ip_view = true;
    $ip = $write[wr_ip];
} else // 관리자가 아니라면 IP 주소를 감춘후 보여줍니다.
    $ip = preg_replace("/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/", "\\1.♡.\\3.\\4", $write[wr_ip]);
// 분류 사용
$is_category = false;
$category_name = "";
if ($board[bo_use_category]) {
    $is_category = true;
    $category_name = $write[ca_name]; // 분류명
}
// 추천 사용
$is_good = false;
if ($board[bo_use_good])
    $is_good = true;
// 비추천 사용
$is_nogood = false;
if ($board[bo_use_nogood])
    $is_nogood = true;
$admin_href = "";
// 최고관리자 또는 그룹관리자라면
if ($member[mb_id] && ($is_admin == 'super' || $group[gr_admin] == $member[mb_id]))
    $admin_href = "$g4[admin_path]/board_form.php?w=u&bo_table=$bo_table";
if (!($board[bo_use_comment] && $cwin))
    include_once("./board_head.php");
echo "<script language=\"javascript\" src=\"$g4[path]/js/sideview.js\"></script>\n";
if (!($board[bo_use_comment] && $cwin)) {
    // 게시물 아이디가 있다면 게시물 보기를 INCLUDE
    if ($wr_id)
        include_once("./view.php");
    // 전체목록보이기 사용이 "예" 또는 wr_id 값이 없다면 목록을 보임
    //if ($board[bo_use_list_view] || empty($wr_id))
    if ($member[mb_level] >= $board[bo_list_level] && $board[bo_use_list_view] || empty($wr_id))
        include_once ("./list.php");
    include_once("./board_tail.php");
}
else
    include_once("./view_comment.php");
echo "\n<!-- 사용스킨 : $board[bo_skin] -->\n";
include_once("$g4[path]/tail.sub.php");
?>
 
 
 
 
 
 
 
 
 
  • 복사

댓글 전체

첫째.
'그룹접근' 옵션을 사용중인지 관리자 모드에서 점검하시기 바랍니다.

둘째.(참고사항)
질문내용에서 언급된 접근권한이 없는 경우,
즉, '비회원 > 권한알림 경고창 > 로그인 > 권한알림 경고창'
상단과 같은 형태가 반복된 경우에 대해서는,
최신버전인 4.10의 /bbs/board.php에서 $g4[path]의 추가로 문제가 해결되었습니다.
무슨말씀인지 이해가 안되네요..ㅡㅡ
그룹접근 옵션은 사용안하고 있습니다 ..그런데도 계속 반복오류가 나는데요..

어디에 뭘추가해서 문제가 해결되었다는것인지..답변 
어렵게 주셔서 더 혼란스럽네요..
-. 답변을 어렵게 드렸나보군요.
테스트할 주소를 이전에 기재하지 않았다면,
코멘트에서라도 언급해 주셨다면 확인이 훨씬 더 쉬웠을텐데 아쉽습니다.

이전에 '열람 권한이 없는 경우($member[mb_level] < $board[bo_read_level] )'라는
제목으로 '옥에티발견'에 관련내용을 게재한 적이 있습니다.

이 부분은 g4다운로드 > 4.10 버전의 본문내용중에서 패치내역에 언급되어 있습니다.
물론, $g4[path]를 추가했다는 구체적인 기재가 아니라 오류를 수정했다는 것과,
본문 소스파일내에서 주석처리만으로 간단히 변경했다는 점이 아쉽습니다만...

(참조내용)
4.10 패치내역 중에서...
    :  접속자의 레벨이 설정된 읽기권한보다 작다면 경고창이 계속뜨는 오류를 수정


-. 대상파일 : /bbs/board.php 71라인 정도
[4.10 이전]
    // 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
    if ($member[mb_level] < $board[bo_read_level])
    {
        if ($member[mb_id])
            alert("글을 읽을 권한이 없습니다.");

[4.10 에서 패치된 내역]
    // 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
    if ($member[mb_level] < $board[bo_read_level])
    {
        if ($member[mb_id])
            //alert("글을 읽을 권한이 없습니다.");
            alert("글을 읽을 권한이 없습니다.", $g4[path]);

-. 대상파일 : /bbs/board.php 149라인 정도
    // 로그인된 회원의 권한이 설정된 목록보기 권한보다 작다면
    if ($member[mb_level] < $board[bo_list_level])
    {
        if ($member[mb_id])
            //alert("목록을 볼 권한이 없습니다.");
            alert("목록을 볼 권한이 없습니다.","$g4[path]");//by nasca(수정된 내역)
© SIRSOFT
현재 페이지 제일 처음으로