비밀글 패스워드 입력 시 팝업 사용하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

비밀글 패스워드 입력 시 팝업 사용하기 정보

비밀글 패스워드 입력 시 팝업 사용하기

본문

bbs/list.php 파일의 해당부분을 수정 합니다.
107 Line 부근
while {
               중략...
    $i++;
    $k++;
}

$i++; 바로 윗 부분에
// 자신의 글이거나 관리자라면 통과
    if (($list[$i][mb_id] && $list[$i][mb_id] == $member[mb_id]) || $is_admin)
        ;
    else
    {
        // 비밀글이라면
        if (strstr($list[$i][wr_option], "secret"))
        {
            // 회원이 비밀글을 올리고 관리자가 답변글을 올렸을 경우
            // 회원이 관리자가 올린 답변글을 바로 볼 수 없던 오류를 수정
            $is_owner = false;
            if ($list[$i][wr_reply] && $member[mb_id])
            {
                $sql = " select mb_id from $write_table
                          where wr_num = '{$list[$i][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}_{$list[$i][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)) {
                    // 로그인된 회원의 권한이 설정된 읽기 권한보다 작다면
                    if ($member[mb_level] < $board[bo_read_level])
                    { } else {
                        $list[$i]['href'] = "javascript:popup_window(\"./password.php?w=s&bo_table=$bo_table&wr_id={$list[$i][wr_id]}{$qstr}\", \"password_popup\", \"width=700, height=500\");";
                    }
                    //goto_url("./password.php?w=s&bo_table=$bo_table&wr_id=$wr_id{$qstr}");
                    //$g4[bbs_path]/board.php?bo_table=$board[bo_table]&wr_id=$list[wr_id]
                }
            }
        }
    }

    $i++;
    $k++;
}

이렇게 수정 합니다.

bbs/password_check.php 파일을 아래와 같이 수정 합니다.

<?
include_once("./_common.php");

if ($w == "s") {
    $qstr = "bo_table=$bo_table&sfl=$sfl&stx=$stx&wr_id=$wr_id&page=$page";

    $wr = get_write($write_table, $wr_id);

    if (sql_password($wr_password) != $wr[wr_password])
        alert("패스워드가 틀립니다.");

    // 세션에 아래 정보를 저장. 하위번호는 패스워드없이 보아야 하기 때문임.
    //$ss_name = "ss_secret_{$bo_table}_{$wr_id}";
    $ss_name = "ss_secret_{$bo_table}_{$wr[wr_num]}";
    //set_session("ss_secret", "$bo_table|$wr[wr_num]");
    set_session($ss_name, TRUE);

} else
    alert("w 값이 제대로 넘어오지 않았습니다.");


if($w == "s") {
    echo "
    <script type='text/javascript'>
    opener.location.href = './board.php?$qstr';
    this.name = 'opener';
    this.close();
    </script>
    ";
} else {
    goto_url("./board.php?$qstr");
}
?>

bbs/password.php 파일을 아래와 같이 수정 합니다.
<?
include_once("./_common.php");

if ($w == "u")
    $action = "./write.php";
else if ($w == "d")
    $action = "./delete.php";
else if ($w == "x")
    $action = "./delete_comment.php";
else if ($w == "s")
{
    // 패스워드 창에서 로그인 하는 경우 관리자 또는 자신의 글이면 바로 글보기로 감
    if ($is_admin || ($member[mb_id] == $write[mb_id] && $write[mb_id]))
        goto_url("./board.php?bo_table=$bo_table&wr_id=$wr_id");
    else
        $action = "./password_check.php";
}
else
    alert("w 값이 제대로 넘어오지 않았습니다.");

$g4[title] = "패스워드 입력";
include_once("$g4[path]/head.sub.php");

if ($w != "s") {
    if ($board[bo_include_head]) { @include ($board[bo_include_head]); }
    if ($board[bo_content_head]) { echo stripslashes($board[bo_content_head]); }
}

$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";

include_once("$member_skin_path/password.skin.php");

if ($w != "s") {
    if ($board[bo_content_tail]) { echo stripslashes($board[bo_content_tail]); }
    if ($board[bo_include_tail]) { @include ($board[bo_include_tail]); }
}

include_once("$g4[path]/tail.sub.php");
?>


* 패스워드 입력창 사용 기준 :
 읽기권한 1 일 때 만 작동.

 비회원은 리스트에서 비밀글 클릭시 팝업으로 패스워드 입력.

* 해당 팁은 게시물 수정,삭제 시에는 팝업이 아닌 기존의 방식대로 작동 합니다.

*주의사항 :
 만약 리스트에 마우스 오버되었을때 javascript:popup_window( 라고만 링크가 표시 된다면
스킨 파일의 list.skin.php 파일내에
echo "<a href=\"{$list[$i][href]}\">{$list[$i][subject]}</a>";
부분의 \" 따옴표를 ' 이렇게 바꿔 주세요..


버그 있으면 댓글 달아주세요~
추천
3

댓글 11개

패스워드 창만 올라오는게 아니고 페이지(메뉴,서브,꼬리 다포함)가 창속에 다올라옵니다.
이 문제 때문에 질답에 글을 올렸었는데, 혹시 저만 그런건지...ㅜㅜ
아니면 June44님 코 끼신것임...ㅋㅋ
전체 3,313 |RSS
그누4 팁자료실 내용 검색

회원로그인

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